1. 程式人生 > >每日一記:Linux新防火墻Firewalld動態防火墻管理器服務簡單探索

每日一記:Linux新防火墻Firewalld動態防火墻管理器服務簡單探索

rule change work asq manager 要點 目前 目標 move

Firewalld動態防火墻管理器服務(Dynamic Firewall Manager of Linux systems)是目前默認的防火墻管理工具,同時擁有命令行終端和圖形化界面的配置工具,即使是對Linux命令並不熟悉的也能快速入門。相比於傳統的防火墻管理工具還支持了動態更新技術並加入了“zone區域”的概念,簡單來說就是為用戶預先準備了幾套防火墻策略集合(策略模板),然後可以根據生產場景的不同而選擇合適的策略集合,實現了防火墻策略之間的快速切換。

常見的zone區域名稱及應用如下(默認為public):
區域名稱 默認規則策略
trusted 允許所有的數據包。

home 拒絕流入的流量,除非與流出的流量相關;而如果流量與ssh、mdns、 ipp-client、samba-client與dhcpv6-client服務相關,則允許流量
internal 等同於home區域
work 拒絕流入的流量,除非與流出的流量相關;而如果流量與ssh、ipp-client與 dhcpv6-client服務相關,則允許流量
public 拒絕流入的流量,除非與流出的流量相關;而如果流量與ssh、dhcpv6-client服務相關,則允許流量
external 拒絕流入的流量,除非與流出的流量相關;而如果流量與ssh服務相關,則允許流量
dmz 拒絕流入的流量,除非與流出的流量相關;而如果流量與ssh服務相關,則允許流量
block 拒絕流入的流量,除非與流出的流量相關
drop 拒絕流入的流量,除非與流出的流量相關

終端管理工具:firewall-cmd命令是Firewalld動態防火墻管理器服務的命令行終端
參數 (支持tab鍵補齊) 作用
--get-default-zone 查詢默認的(當前的)區域名稱。
--set-default-zone=<區域名稱> 設置默認的區域,永久生效。

--get-zones 顯示可用的區域。
--get-services 顯示預先定義的服務。
--get-active-zones 顯示當前正在使用的區域與網卡名稱。
--query-service= 查詢是否允許某個服務的流量,後接服務,例如: ssh、https等
--get-zone-of-interface= 查詢當前網卡在firewalld服務中的區域,後接網卡名
--add-source= 將來源於此IP或子網的流量導向指定的區域。
--remove-source= 不再將此IP或子網的流量導向某個指定區域。
--add-interface=<網卡名稱> 將來自於該網卡的所有流量都導向某個指定區域。
--change-interface=<網卡名稱> 將某個網卡與區域做關聯。
--list-all 顯示當前區域的網卡配置參數,資源,端口以及服務等信息。
--list-all-zones 顯示所有區域的網卡配置參數,資源,端口以及服務等信息。
--list-ports 顯示配置了流量策略的端口
--add-service=<服務名> 設置默認區域允許該服務的流量。
--add-port=<端口號/協議> 設置默認區域允許該端口的流量。協議代表tcp\udp\icmp
--remove-service=<服務名> 設置默認區域不再允許該服務的流量。
--remove-port=<端口號/協議> 設置默認區域不再允許該端口的流量
--reload 讓“永久生效”的配置規則立即生效,並覆蓋當前的配置規則
--panic-on 開啟應急狀況模式
--panic-off 關閉應急狀況模式
--zone= 添加區域參數,後接區域。例如: --zone=public

Firewalld服務對防火墻策略的配置默認是當前生效模式(RunTime),配置信息會隨著計算機重啟而失效,如果想要讓配置的策略一直存在,就要使用永久生效模式(Permanent),方法是在正常的命令中加入--permanent參數就可以代表針對於永久生效模式的命令,但是使用永久模式設置的策略需要重啟後才能自動生效,如果想讓配置的策略立即生效的話需要手動執行一下如下指令:
[root@linuxprobe ~]# firewall-cmd --reload
例如:查看firewalld服務當前所使用的區域
firewall-cmd --get-default-zone
查詢eno16777728網卡在firewalld服務中的區域
firewall-cmd --get-zone-of-interface=eno16777728
把firewalld服務中eno16777728網卡的默認區域修改為external,並在系統重啟後生效, 分別查看當前與永久模式下的區域名稱:
firewall-cmd --permanent --zone=external --change-interface=eno16777728
firewall-cmd --get-zone-of-interface=eno16777728
firewall-cmd --permanent --get-zone-of-interface=eno16777728
把firewalld服務的當前默認區域設置為public:
firewall-cmd --set-default-zone=public
啟動/關閉firewalld防火墻服務的應急狀況模式,阻斷一切網絡連接(當遠程控制服務器時請慎用)
firewall-cmd --panic-on
firewall-cmd --panic-off
查詢public區域是否允許請求SSH和HTTPS協議的流量
firewall-cmd --zone=public --query-service=ssh
firewall-cmd --zone=public --query-service=https
把firewalld服務中請求HTTPS協議的流量設置為永久允許,並立即生效:
firewall-cmd --zone=public --add-service=https
firewall-cmd --permanent --zone=public --add-service=https
firewall-cmd --reload
把firewalld服務中請求HTTP協議的流量設置為永久拒絕,並立即生效:
firewall-cmd --permanent --zone=public --remove-service=http
firewall-cmd --reload
把在firewalld服務中訪問8080和8081端口的流量策略設置為允許,但僅限當前生效:
?firewall-cmd --zone=public --add-port=8080-8081/tcp
firewall-cmd --zone=public --list-ports 8080-8081/tcp

啟動/關閉Firewalld防火墻服務的應急狀況模式,阻斷一切網絡連接(當遠程控制服務器時請慎用。):
firewall-cmd --panic-on
firewall-cmd --panic-off

流量轉發命令格式:firewall-cmd --permanent --zone=<區域> --add-forward-port=port=<源端口號>:proto=<協議>:toport=<目標端口號>:toaddr=<目標IP地址>
例如:把原本訪問本機888端口的流量轉發到22端口,要且求當前和長期均有效:
firewall-cmd --permanent --zone=public --add-forward-port=port=888:proto=tcp:toport=22
:toaddr=192.168.10.10
firewall-cmd --reload
在客戶端使用ssh命令嘗試訪問192.168.10.10主機的888端口:
ssh -p 888 192.168.10.10 可以用ssh聯機成功,說明轉發到22端口成功

firewalld中的富規則表示更細致、更詳細的防火墻策略配置,它可以針對系統服務、端口號、源地址和目標地址等諸多信息進行更有正對性的策略配置。它的優先級在所有的防火墻策略中也是最高的。
例如:配置一條富規則,使其拒絕192.168.10.0/24網段的所有用戶訪問本機的ssh服務(22端口)
firewall-cmd --permanent --zone=public --add-rich-rule="rule family="ipv4" source address="192.168.10.0/24" service name="ssh" reject"
firewall-cmd --reload
之後使用ssh連接即會失敗
參數 --add-rich-rule="" 表示增加富規則

firewall-config命令是管理Firewalld防火墻策略的圖形化工具:
Firewall-config圖形化管理工具在配置策略後,不需要點擊保存或完成按鈕,只要有修改內容工具就會自動保存好

在Options菜單中單擊Reload Firewalld命令,讓配置的防火墻策略立即生效;這與在命令行中執行--reload參數的效果一樣

SNAT源地址轉換協議是為了解決IP地址資源匱乏問題而設計的技術協議,SNAT技術能夠使得多個內網用戶通過一個外網IP地址上網。

iptables命令實現SNAT技術:在firewall-config圖形配置工具中的Masquerading選項下的
Masquerade zone 是開啟SNAT的,勾選即可

每日一記:Linux新防火墻Firewalld動態防火墻管理器服務簡單探索