Firewalld 防火牆常見用法介紹

Linux 常見防火牆有 iptables 與 firewalls ,這裡主要針對 firewalld安裝及常見用法進行說明,這裡以 CentOS7 來進行說明:

安裝 firewalld 及設定開機自動啟用

安裝防火牆

sudo yum install firewall

安裝完成後,啟用防火牆

service firewalld start

並且設定開機自動啟用

service firewalld enable

查看 firewalld 運行狀態

service firewalld status

接著,就可以透過 firewall-cmd

state 查看狀態

透過 state 可以查看目前運行狀態,如果顯示 running 就表示正常運行

CVT2HUGO: 來進行設置及操作
firewall-cmd --state

查看目前防火牆名單

firewall-cmd --list-all

查看詳細內容

firewall-cmd --list-rich-rules

重新載入防火牆規則

每次重新設定防火牆後,firewalld 並不會自動生效,需要透過 reload 重新載入規則讓設定生效

firewall-cmd --reload

暫時開放白名單 或永久開放防火牆白名單

在只有設定允許的設定時,設定的內容會是暫時性的,例如,暫時開放 http

firewall-cmd --add-service=http

可以透過 –permanent 設定為永久,例如,永久開放 http

firewall-cmd --permanent --add-service=http

新增 port/tcp 白名單

增加一個 port 到防火牆白名單

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

firewall-cmd --reload

移除 port/tcp 禁止外部訪問

透過以下方式將指定的 port 關閉,禁止外部訪問

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

firewall-cmd --reload

新增連線協議到白名單

可以針對協定來新增到防火牆白名單,例如,將 HTTP 協定增加到白名單

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

firewall-cmd --reload

移除連線協議

從防火牆白名單刪除指定的連線協議

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

firewall-cmd --reload

允許區段 port

可以設定某區間的 port 進入白名單

firewall-cmd --zone=public --add-port=20000-20100/tcp --permanent

允許特定IP訪問

允許指定的 IP 可訪問,這裡可以設定 IP 掩碼

firewall-cmd --add-rich-rule 'rule family="ipv4" source address="192.168.77.100/32" accept' --permanent

或者允許 192.168.77.1~ 254

firewall-cmd --zone=public --add-rich-rule 'rule family="ipv4" source address="192.168.77.100/24" accept' --permanent

備註,IP 掩碼 (Subnet Masks)

32表示子網掩碼:255.255.255.255

24表示子網掩碼:255.255.255.0

16表示子網掩碼:255.255.0.0

8表示子網掩碼:255.0.0.0

禁止特定IP訪問

可以透過 reject 來禁止特定IP訪問

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

或者禁止某區段

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

允許特定 IP 訪問指定 port

有時我們只希望指定IP只能訪問特定 port ,可以透過 port 來達成

firewall-cmd --permanent --zone=public --add-rich-rule='rule family="ipv4" port="3306/tcp" source address="192.168.77.100/32" accept' --permanent

或者

firewall-cmd --zone=public --add-rich-rule 'rule family="ipv4" source address="192.168.77.100" port port=22 protocol=tcp accept' --permanent

禁止特定IP訪問port

禁止特定IP訪問指定的 port

firewall-cmd --permanent --zone=public --add-rich-rule='rule family="ipv4" port="3306/tcp" source address="192.168.77.100/32" reject' --permanent

或者

firewall-cmd --zone=public --add-rich-rule 'rule family="ipv4" source address="192.168.77.100" port port=22 protocol=tcp reject' --permanent

查看所有 zone 資訊

firewall-cmd --list-all-zones