前言
在 CentOS 中有多種防火牆 (iptables、firewalld 等),其中 iptables 是為黑名單規則 (原則允許、例外禁止),而 firewalld 為白名單規則 (原則禁止、例外允許)。
為了要讓服務能正常運作、防止惡意連線,且讓外部可以通過網路服務來使用,這些是必定要學習如何設定的。然而相較於 iptables,firewalld 較人性化,因此選擇使用它來做 CentOS 的防火牆設定。
環境
- CentOS 8.2
確認網路環境
開啟 Terminal,確定自己所對外服務的 IP 運作在哪個網卡上,此例為 ens33
1 | [root@localhost ~]# ip address |
確定自己網卡 ens33
所在的防火牆區域 (zone)
1 | [root@localhost ~]# firewall-cmd --get-zone-of-interface=ens33 |
修改防火牆設定
在網卡所在區域加上想要的服務 (http) 或 Port (5001/tcp)
1 | [root@localhost ~]# firewall-cmd --permanent --zone=public --add-port=5001/tcp |
--permanent
:是將設定寫入/etc/firewalld/zones/public.xml
,系統重新啟動後會載入該檔案的設定,因此防火牆設定效果不會消失。可以查看/etc/firewalld/zones/public.xml
內容1
2
3
4
5
6
7
8
9
10
11[root@localhost ~]# cat /etc/firewalld/zones/public.xml
<?xml version="1.0" encoding="utf-8"?>
<zone>
<short>Public</short>
<description>For use in public areas. You do not trust the other computers on networks to not harm your computer. Only selected incoming connections are accepted.</description>
<service name="ssh"/>
<service name="dhcpv6-client"/>
<service name="cockpit"/>
<service name="http"/>
<port port="5001" protocol="tcp"/>
</zone>
使用 --reload
將設定重新載入配置,並查看所設定的規則是否已經有效,這時在瀏覽器輸入 localhost
,就可以瀏覽掛在 80 Port 的網站了!
1 | [root@localhost ~]# firewall-cmd --reload |