firewalld 的9個zone及相關操作
前面將 firewalled 關閉,打開了 iptables,現在需要先關閉 iptables ,再開啟 firewalld ,具體操作見下圖,
接著查看一下規則,輸入命令 iptables -nvL ,回車,見下圖,
可以看到,規則明顯增加非常多,都是 firewalld 自帶的規則。不僅僅是 filter 表,nat 表裏面也有規則,見下圖,
firewalld 默認有 9 個 zone,默認的 zone 為 public,zone 可以理解為 firewalld 的單位、規則集。
查看所有的 zone ,輸入命令 firewall-cmd --get-zones,回車。查看默認的 zone,輸入命令 firewall-cmd --get-default-zone,回車,見下圖,
![技術分享圖片](http://i2.51cto.com/images/blog/201804/08/abc16e5f45976124ef835d115619c9b5.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
接著來查看一下,這9個 zone 的區別,見下圖,
![技術分享圖片](http://i2.51cto.com/images/blog/201804/08/2c552fc271c116364ac71c41c9bdf95e.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
2、firewalld 關於 zone 的操作
現在來設定默認的 zone,輸入命令 firewall-cmd --set-default-zone=work,回車,見下圖,
接著查看指定網卡,輸入命令 firewall-cmd --get-zone-of-interface=ens33,回車,見下圖,
一起查看了 ens37、lo 網卡的默認 zone。這邊的 ens37 默認沒有 zone,就需要將它更改為默認 work。需要更改一下配置文件,然後再重啟一下網絡服務和 firewalld。最後輸入命令 systemctl restart firewalld,具體見下圖,
![技術分享圖片](http://i2.51cto.com/images/blog/201804/08/61bf344bfabaf3b9c4f2de1a8ef79f1f.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
然後輸入命令 vi /etc/sysconfig/network-scripts/ifcfg-ens37 ,回車,見下圖,
![技術分享圖片](http://i2.51cto.com/images/blog/201804/08/56f12ce6c37004a14b627a2b263ff1bc.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
將上圖紅色框框的內容更改一下,保存並退出。然後重啟網絡服務,輸入命令 systemctl restart network.service ,回車,見下圖,
![技術分享圖片](http://i2.51cto.com/images/blog/201804/08/d0d18b6a5f0bf6738ab70b882165c1f7.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
接著再重啟一下 firewalld,輸入命令 systemctl restart firewalld 。現在重啟一下系統,再來查看 ens37 的zone,見下圖,
![技術分享圖片](http://i2.51cto.com/images/blog/201804/08/a996934bacb83dce82c6ea9ead21d286.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
ens37 的默認zone 設置成功了。
接下來給指定網卡設置 zone,輸入命令 firewall-cmd --zone=dmz --add-interface=ens37,回車。輸入命令 firewall-cmd --zone=public --add-interface=lo,回車,見下圖,
![技術分享圖片](http://i2.51cto.com/images/blog/201804/08/900dbda4ad6be40d30bfbae8f3813210.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
接下來針對指定網卡更改 zone,輸入命令 firewall-cmd --zone=block --change-interface=ens37,回車,見下圖,
![技術分享圖片](http://i2.51cto.com/images/blog/201804/08/2c9cf7250ef7745e83bb88ab2231cc47.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
接下來針對指定網卡刪除 zone,輸入命令 firewall-cmd --zone=block --remove-interface=ens37,回車,見下圖,
![技術分享圖片](http://i2.51cto.com/images/blog/201804/08/1380a105b38079cf4f489155031cfdbf.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
可以看到 ens37 的 zone 又變成默認的 work 了。
接著查看系統所有網卡所在的 zone,輸入命令 firewall-cmd --get-active-zones,回車,見下圖,
![技術分享圖片](http://i2.51cto.com/images/blog/201804/08/19932301e45e34b6dcc6d5fa6b152f63.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
3、firewalld 關於 service 的操作
service 是 zone 下面的子單元,可以理解為指定的端口。防火墻就是針對某一個端口做限制。現在來查看一下所有的 service,輸入命令 firewall-cmd --get-services,回車,見下圖,
這邊的 service,可加可不加,結果都一樣。
接著查看當前 firewall-cmd 下的 zone,輸入命令 firewall-cmd --get-default-zone,回車,再查看當前 zone 下有哪些 service,輸入命令 firewall-cmd --list-services,回車,見下圖,
查看指定 zone 下的 service,輸入命令 firewall-cmd --zone=public --list-services,回車,見下圖,
通常用的 public 中的 work 比較多,接下來針對 public 做一些操作,把 http 增加到 public zone 下面,輸入命令 firewall-cmd --zone=public --add-service=http,回車,見下圖,
以上的更改沒有寫入配置文件,想要寫入配置文件,輸入命令 firewall-cmd --zone=public --add-service=ftp --permanent,回車,見下圖,
查看文件的時候,可以看到 ftp,沒有 http,因為 http 增加到 public zone 下的時候,沒有寫入配置文件。
將 http 以同樣的方式寫入到配置文件中,見下圖,
每一次更改 zone 的配置文件,/etc/firewalld/zones/ 下都會生成一個新的文件 public.xml 和一個舊的備份文件 public.xml.old 。
service 也是一樣的,只不過它裏面沒有東西。,因為我們還沒有更改任何東西。
zone 和 service 都是有模板文件的,在 /usr/lib/firewalld/zones/ 和 /etc/lib/firewalld/services/ 裏面,見下圖,
可以看到,都是 xml 文件。
接下來做一個需求:ftp 服務自定義端口 1121,需要在 work zone 下面放行 ftp。
輸入命令 cp /usr/lib/firewalld/services/ftp.xml /etc/firewalld/services ,回車,然後輸入命令 vi /etc/firewalld/services/ftp.xml ,回車,見下圖,
更改上圖紅色框框的內容為1121,保存並退出。
接著往下操作,輸入命令 cp /usr/lib/firewalld/zones/work.xml /etc/firewalld/zones/ ,回車,再輸入命令 vim /etc/firewalld/zones/work.xml ,回車,見下圖,
增加一行上圖紅色框框的內容,保存並退出。然後重新加載服務,輸入命令 firewall-cmd --reload ,回車,見下圖,
然後檢查一下,輸入命令 firewall-cmd --zone=work --list-services,回車,可以看到 ftp 。
以上就是關於 services 的一些操作。
firewalld 的9個zone及相關操作