Linux透過firewalld指令設定防火牆規則

在CentOS 7 / Oracle Linux 7 / Red Hat7版本開始內建了firewalld這個防火牆管理的指令,比過往的Iptables使用上更為簡單,快來了解如何設定吧!

一、停止iptables服務
(1)、暫停iptables功能:

systemctl stop iptables


(2)、停用iptables功能:

systemctl mask iptables


二、安裝firewalld套件
(1)、安裝firewalld套件:

sudo yum install firewalld


(2)、設定開機自動執行firewalld:

systemctl enable firewalld


(3)、檢查 firewalld 服務狀態:

systemctl status firewalld


(4)、啟動 firewalld 服務:

systemctl start firewalld


(5)、停止 firewalld 服務:

systemctl stop firewalld


(6)、重新啟動 firewalld 服務:

service firewalld restart


(7)、重新載入 firewalld 設定:

firewall-cmd --reload


三、查詢設定狀態

(1)、查詢現有區域:

firewall-cmd --get-zones


(2)、查詢「public」區域的設定:

firewall-cmd --zone=public --list-all


(3)、查詢「public」的永久設定值:

firewall-cmd --zone=public --list-all --permanent


(4)、查詢目前預設的區域:

firewall-cmd --get-default-zone


(5)、更改 firewalld 的預設區域為「office」:

firewall-cmd --set-default-zone=office


(6)、查詢各個網路介面所屬的區域:

firewall-cmd --get-active-zones


(7)、更改網路卡所屬的區域:
將ens160網路卡永久設定為public區域的範例語法如下:

sudo firewall-cmd --permanent --zone=public --change-interface=ens160


(8)、查詢系統內建服務名稱:

firewall-cmd --get-services


(9)、查詢防火牆目前所有規則:

firewall-cmd --list-all

 

四、設定防火牆規則

(1)、查詢各個網路介面所屬的區域:

firewall-cmd --get-active-zones


(2)、在public區域中「新增」暫時開放https服務規則:

firewall-cmd --zone=public --add-service=https


(3)、在public區域中「新增」永久開放https服務規則:

firewall-cmd --zone=public --permanent --add-service=https


(3)、在public區域中「新增」永久開放TCP 8080 Port規則:

firewall-cmd --zone=public --permanent --add-port=8080/tcp


(4)、在public區域中「新增」永久開放192.168.6.111這個IP可以連線mysql(3306)服務規則:

firewall-cmd --zone=public --add-rich-rule 'rule family="ipv4" source address="192.168.6.111/32" service name="mysql" accept' --permanent


(6)、在public區域中「新增」永久阻擋192.168.6.222這個IP連線的規則

firewall-cmd --zone=public --add-rich-rule 'rule family="ipv4" source address="192.168.6.222/32" reject' --permanent


五、移除防火牆規則

(1)、在public區域中「刪除」暫時開放https服務規則:

firewall-cmd --zone=public --remove-service=https


(2)、在public區域中「刪除」永久開放https服務規則:

firewall-cmd --zone=public --permanent --remove-service=https


(3)、在public區域中「刪除」永久開放TCP 8080 Port
規則:

firewall-cmd --zone=public --permanent --remove-port=8080/tcp


(4)、在public
區域中「刪除」特定永久開放規則:

firewall-cmd --zone=public --remove-rich-rule 'rule family="ipv4" source address="192.168.6.111/32" service name="mysql" accept' --permanent

 

六、查看系統內建服務樣板

(1)、查看系統預設防火牆服務樣板:

ls /usr/lib/firewalld/services

※如無適合的樣板,可以透過既有的樣板產生一個客製化的設定

(2)、建立客製化防火牆服務樣板:

cd /usr/lib/firewalld/services
cp mysql.xml oracle.xml
vim oracle.xml