如何使用 firewall-cmd 管理網路服務
在上一篇文章中,我們探討了如何在 Fedora 中用命令行控制防火牆。
現在你將看到如何「添加」、「刪除」和「列出」服務、協議和埠,以便「阻止」或「允許」它們。
簡短回顧
首先,最好檢查一下防火牆的狀態,看它是否正在運行。如我們先前所學,你可以使用狀態選項(firewall-cmd ‐‐state
)來得到。
下一步是獲取網路介面適用的 域 。例如,我使用的桌面有兩個網路介面:一個物理介面(enp0s3
),代表我實際的網卡,和虛擬介面(virbr0
),它由 KVM 等虛擬化軟體使用。要查看哪些域處於活動狀態,請運行 firewall-cmd ‐‐get-active-zones
。
現在,你知道了你感興趣的域,可以使用 firewall-cmd ‐‐info-zone=FedoraWorkstation
這樣的命令列出該域的規則。
讀取區域信息
要顯示特定域的信息,請運行 firewall-cmd ‐‐zone=ZoneName ‐‐list-all
,或使用以下命令顯示默認域的信息:
[dan@localhost ~]$ firewall-cmd --list-all
FedoraWorkstation (active)
target: default
icmp-block-inversion: no
interfaces: enp0s3
sources:
services: dhcpv6-client mdns samba-client ssh
ports: 1025-65535/udp 1025-65535/tcp
protocols:
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:
現在,讓我們查看輸出。第一行表明以下信息關聯的域以及該域當前是否在使用中。
target: default
:告訴我們這是默認域。可以通過 ‐‐set-default-zone=ZoneName
和 ‐‐get-default-zone
設置或獲取。
icmp-block-inversion
表明是否阻止 ICMP 請求。例如,如果機器響應來自網路上其他機器的 ping 請求。
interfaces
欄位顯示接受此域的所有介面。
處理服務、埠和協議
現在,重點關注 services
、ports
和 protocols
所在行。默認情況下,防火牆將阻止所有埠、服務和協議,而只允許列出的。
在這裡,你可以看到允許的服務是非常基本的客戶端服務。例如,訪問網路上的共享文件夾(samba-client
)、與 DNS 伺服器通信或通過 SSH(ssh
服務)連接到計算機。你可以將 service
視為與埠組合的協議,例如 ssh
服務使用 SSH 協議,並且按照慣例使用 22 埠。通過允許 ssh
服務,你實際上所做的就是允許傳入的連接在默認 22 埠上使用 SSH 協議。
請注意,根據經驗,名稱中帶有 client
字樣的服務是指傳出連接,也就是你使用你的 IP 作為源對外部的連接,與之相反的是 ssh
服務,比如,它將接受傳入連接(監聽來自外部的連接)。
你可以在文件 /etc/services
中查找服務。例如,如果你想知道這些服務使用什麼埠和協議:
[dan@localhost ~]$ cat /etc/services | grep ssh
ssh 22/tcp # The Secure Shell (SSH) Protocol
ssh 22/udp # The Secure Shell (SSH) Protocol
你可以看到 SSH 同時使用 TCP 和 UDP 的 22 埠。此外,如果你希望查看所有可用的服務,只需使用 firewall-cmd --get-services
。
打開埠
如果要阻止埠、服務或協議,請確保在此處未列出它們。展開來說,如果要允許服務,那麼需要將它添加到列表中。
假設你要打開 5000
埠用於 TCP 連接。為此,請運行:
sudo firewall-cmd --zone=FedorwaWorkstation --permanent --add-port=5000/tcp
請注意,你需要指定規則適用的域。添加規則時,還需要如上指定它是 tcp
還是 udp
埠。--permanent
參數將規則設置為即使系統重啟後也可以保留。
再次查看你所在區域的信息:
[dan@localhost ~]$ firewall-cmd --list-all
FedoraWorkstation (active)
target: default
icmp-block-inversion: no
interfaces: enp0s3
sources:
services: dhcpv6-client mdns samba-client ssh
ports: 1025-65535/udp 1025-65535/tcp 5000/tcp
protocols:
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:
類似地,如果你想從列表刪除該埠,請運行:
sudo firewall-cmd --zone=FedorwaWorkstation --permanent --remove-port=5000/tcp
相同的 remove
(‐‐remove-protocol
、‐‐remove-service
) 和 add
(‐‐add-protocol
、‐‐add-service
)選項同樣適用於服務和協議。
via: https://fedoramagazine.org/how-to-manage-network-services-with-firewall-cmd/
作者:dan01 選題:lujun9972 譯者:geekpi 校對:wxy
本文轉載來自 Linux 中國: https://github.com/Linux-CN/archive