0%

[Firewall] CentOS 開啟指定的 Port 或服務

前言

在 CentOS 中有多種防火牆 (iptables、firewalld 等),其中 iptables 是為黑名單規則 (原則允許、例外禁止),而 firewalld 為白名單規則 (原則禁止、例外允許)。

為了要讓服務能正常運作、防止惡意連線,且讓外部可以通過網路服務來使用,這些是必定要學習如何設定的。然而相較於 iptables,firewalld 較人性化,因此選擇使用它來做 CentOS 的防火牆設定。

環境

  • CentOS 8.2

確認網路環境

開啟 Terminal,確定自己所對外服務的 IP 運作在哪個網卡上,此例為 ens33

1
2
3
4
5
6
7
8
9
10
11
12
13
[root@localhost ~]# ip address
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
link/ether 00:0c:29:08:ef:40 brd ff:ff:ff:ff:ff:ff
inet 192.168.35.134/24 brd 192.168.35.255 scope global dynamic noprefixroute ens33
valid_lft 1107sec preferred_lft 1107sec
inet6 fe80::5dee:a1e6:5618:5b6c/64 scope link noprefixroute
valid_lft forever preferred_lft forever

確定自己網卡 ens33 所在的防火牆區域 (zone)

1
2
[root@localhost ~]# firewall-cmd --get-zone-of-interface=ens33
public

修改防火牆設定

在網卡所在區域加上想要的服務 (http) 或 Port (5001/tcp)

1
2
3
4
[root@localhost ~]# firewall-cmd --permanent --zone=public --add-port=5001/tcp
success
[root@localhost ~]# firewall-cmd --permanent --zone=public --add-service=http
success
  • --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
2
3
4
5
6
[root@localhost ~]# firewall-cmd --reload
success
[root@localhost ~]# firewall-cmd --zone=public --list-ports
5001/tcp
[root@localhost ~]# firewall-cmd --zone=public --list-services
cockpit dhcpv6-client http ssh

參考文獻

  1. CentOS 7/8 預裝的新型防火牆firewalld配置詳解,你會用嗎

  2. Runtime versus Permanent

很高興能在這裡幫助到您,歡迎登入 Liker 為我鼓掌 5 次,或者成為我的讚賞公民,鼓勵我繼續創造優質文章。
以最優質的內容回應您的鼓勵