firewalld(動態防火牆後臺程序) 提供了一個 動態管理的防火牆,用以支持網絡 “ zones” ,以分配對一個網絡及其相關鏈接和界面一定程度的信任。它具備對 IP v4 和 IP v6 防火牆設置的支持。它支持以太網橋,並有分離運行時間和永久性配置選擇。它還具備一個通向服務或者應用程序以直接增加防火牆規則的接口。
系統提供了圖像化的配置工具firewall-config、system-config-firewall, 提供命令行客戶
端firewall-cmd, 用於配置 firewalld永久性或非永久性運行時間的改變:它依次用 iptables工具與執行數據包篩選的內核中的 Netfilter通信。
firewalld和iptables service 之間最本質的不同是:
1.iptables service 在 /etc/sysconfig/iptables 中儲存配置,而 firewalld將配置儲存在/usr/lib/firewalld/ 和 /etc/firewalld/ 中的各種XML文件裏.
2 使用 iptables service每一個單獨更改意味着清除所有舊有的規則和從/etc/sysconfig/iptables裏讀取所有新的規則,然而使用 firewalld卻不會再創建任何新的規則;僅僅運行規則中的不同之處。因此,firewalld可以在運行時間內,改變設置而不丟失現行連接。
1.配置firewalld
firewall-cmd --state ##查看firewalld狀態
firewall-cmd --get-active-zones ##查看當前活動的區域,並附帶一個目前分配給它們的接 口列表
firewall-cmd --get-default-zone ##查看默認區域
firewall-cmd --get-zones ##查看所有可用區域
firewall-cmd --zone=public --list-all ##列出指定域的所有設置
firewall-cmd --get-services ##列出所有預設服務
firewall-cmd --list-all-zones ##列出所有區域
firewall-cmd --set-default-zone=trusted ##設置默認區域爲trusted
**測試
firewall-cmd --permanent --add-source=172.25.254.74 ##設置網絡地址到指定的區域,默認 是public,--permanent表示永久
firewall-cmd --reload ##重新加載服務,不中斷服務
firewall-cmd -complete--reload ##重新加載服務,中斷服務
firewall-cmd --permanent --remove-source=172.25.254.74 ##移除指定區域的網絡地址
firewall-cmd --permanent --zone=trusted --add-source=172.25.254.74
**測試
firewall-cmd --remove-interface=eth0 --zone=public ##從public區域移除eth0端口
firewall-cmd --add-interface=eth0 --zone=trusted ##添加eth0端口到trusted
**測試
可以訪問eth0端口,不可以訪問eth1端口
firewall-cmd --add-service=http --zone=public ##添加http服務
firewall-cmd --remove-service=ssh --zone=public ##刪除ssh服務
firewall-cmd --direct --add-rule ipv4 filter INPUT 0 ! -s 172.25.254.74 -p tcp --dport 22 -j ACCEPT ##設置除了74主機22端口不可訪問,其他主機22端口都可以訪問
**測試
74主機
其他主機
2.rich rules
* 通過“ rich language”語法,可以用比直接接口方式更易理解的方法建立複雜防火牆規則。此外,還能永久保留設置。這種語言使用關鍵詞值,是 iptables 工具的抽象表示。這種語言可以用來配置分 區,也仍然支持現行的配置方式。
3.僞裝和端口轉發
實驗之前打開地址僞裝
firewall-cmd --permanent --zone=public --add-masquerade
** masquerade : yes
firewall-cmd --zone=public --add-rich-rule 'rule family=ipv4 source address=172.25.254.74 masquerade' ##僞裝
**測試
不同網段的IP可以連接
firewall-cmd --zone=public --add-forward-port=port=22:proto=tcp:toport=22:toaddr=172.25.254.74
##端口轉發
**測試
ssh連接123主機,實際連接74主機