firewalld是防火牆的另一種程序,與iptables相同,但是使用起來要比iptables簡單的點,不需要了解3張表和5條鏈也可以使用。
1、firewall的基本命令
"firewall-cmd --list-all"。查看當前的firewall的信息和配置。

"firewall-cmd --reload"。重新加載firewall配置,
"firewall-cmd --add-service=xxxx"。添加一個服務,例如下圖,添加http,使得這個服務的數據可以通過,但是這個添加是臨時的,重新加載配置后就會消失。


"firewall-cmd --permanent --add-service=xxxx"。可以永久添加這個服務。

"vim /etc/firewalld/zones/public.xml"。firewall的默認模式"public"的配置文件,如下圖所示,可以看到添加的服務都在里面,如果在其中按照格式添加"ftp",重新加載后就添加了這個服務了。



"firewall-cmd --remove-service=xxxx"。可以去掉某一個服務。
"cd /usr/lib/firewalld/services/"。進入這個目錄后,如下圖所示,輸入"ls",就可以看到可以添加哪些服務,並且可以看到這些服務的名稱了。

"firewall-cmd --permanent --add-port=xxxx/tcp"。使某個端口的數據可以通過。例如在Apache配置文件中將端口改為8080,則即使firewall中添加了htpp也無法訪問,因為其設置的可以通過的端口是80。此時需要用上述命令,添加8080端口,完成后,即可使用Apache訪問。


"firewall-cmd --permanent --add-source=172.25.254.102 --zone=trusted"。表示來自"172.25.254.102"的數據全部通過。如果開啟,firewall不添加http,且改為8080端口后不添加到firewall,"172.25.254.102"主機也可以訪問Apache。"add"改為"remove"可以取消。


"firewall-cmd --permanent --remove-interface=eth1 --zone=public"。將eth1網卡從public模式下移除。
"firewall-cmd --permanent --add-interface=eth1 --zone=trusted"。將eth1網卡添加到trusted模式下。但是完成后需要重啟防火牆"systemctl restart firewalld"才可以生效。


2、firewall的模式
"firewall-cmd --get-default-zone"。查看firewall的默認模式,是public。

"firewall-cmd --get-zones"。查看firewall都有哪幾種模式。

"firewall-cmd --set-default-zone=xxx"。將firewall的默認模式改為xxx,這是一個臨時更改。

firewall中常用的幾種模式如下所示:
trusted:信任。可接受所有的網絡連接。
home :家庭。用於家庭網絡,僅接受dhcpv6-client ipp-client mdns samba-client ssh服務連接。
work :工作。工作網絡,僅接受dhcpv6-client ipp-client ssh服務連接。
public :公共。公共區域使用,僅接受dhcpv6-client ssh服務連接,這是firewalld的默認區域。
external:外部。出去的ipv4網絡連接通過此區域偽裝和轉發,僅接受ssh服務連接。
dmz :非軍事區。僅接受ssh服務連接。
block :限制。拒絕所有網絡連接。
drop :丟棄。任何接收的網絡數據包都被丟棄,沒有任何回復。
3、firewall的應用
例如下圖所示,client的主機可以通過ssh連接上server主機。去掉server主機上所添加的ssh服務,這樣所有主機都不能連接了。然后在server主機上配置"firewall-cmd --permanent --direct --add-rule -ipv4 filter INPUT 0 ! -s 172.25.254.102 -p tcp --dport 22 -j ACCEPT",該策略表示除了172.25.254.102的主機的數據都可以通過22端口。添加后可以使用"firewall-cmd --direct --get-all-rules"來查看所添加的策略。


完成后用client測試,重新通過ssh連接,發現就連接不上了。

去除這條策略將"add"改為"remove"即可。

4、firewall的路由策略
與iptables相同,firewall也可以添加路由策略,使得不同網段的主機也可以連接。三台主機的IP與網關與iptables篇中相同。
"firewall-cmd --list-all"。基本上是最初的樣子。

firewall的路由策略配置如下所示:
"firewall-cmd --permanent --add-masquerade"。打開地址偽裝功能。

"firewall-cmd --permanent --add-rich-rule="rule family=ipv4 source address=172.25.254.202 masquerade""。該策略表示,將通過server主機的數據都封裝為IP"172.25.254.202"。
"firewall-cmd --permanent --add-rich-rule="rule family=ipv4 source address=172.25.254.0/24 forward-port port=22 protocol=tcp to-port=22 to-addr=172.25.2.102""。該條策略表示,將所有"172.25.254"網段的通過22端口的數據轉到"172.25.2.102"主機上。

完成后重啟firewall生效。"firewall-cmd --list-all"可以看到這些策略。

測試時,"2"網段的client主機可以成功連接"254"網段的"172.25.254.2"主機。與iptables相同,"172.25.254.2"的主機上看到的依舊是"172.25.254.202"的連接,ssh連接這個IP就會自動連接到"2"網段的client主機。



iptables和firewall是防火牆中常用的兩種程序,可以靈活運用。
