在某些方面,systemd 系統上的 firewalld 比 iptables 更容易管理和配置。在大多數情況下,您不需要記住長鏈、跳轉、接受和拒絕來啟動防火牆並使用其基本配置運行。規則很簡單,但沒有理由不能利用 iptables 提供的所有功能。
firewalld 使用命令行實用程序 防火牆命令 配置和操作規則。在開始配置之前,我們需要確保服務正在運行。利用 系統控制 命令啟用、禁用、啟動、停止和重新啟動 firewalld 服務。這些命令中的大多數都沒有有意義的輸出 系統控制,您應該始終檢查 firewalld 的狀態以查看每個。
Systemctl 和防火牆
啟用防火牆
這將在服務器上自動啟動 firewalld。
systemctl enable firewalld
啟用防火牆
開啟firewalld服務後,第一次必須手動啟動。如果 firewalld 尚未運行,如何手動啟動它?
systemctl start firewalld
停止防火牆
在對規則和連接問題進行故障排除時,可能需要暫時停止 fireawlld 服務。您可以使用以下命令停止服務:
systemctl stop firewalld
重啟防火牆
如果由於某種原因需要重啟服務,可以使用 系統控制 重啟命令。
systemctl restart firewalld
防火牆狀態
檢查服務的狀態會給出最有意義和信息量最大的輸出。在這裡,您可以查看服務是否已啟用、正在運行、失敗或處於其他狀態。
systemctl status firewalld
此示例輸出顯示該服務已啟用、處於活動狀態並在服務器上運行。如果它未運行或處於失敗狀態,則會顯示此消息。
[[email protected] ~]# systemctl status firewalld
● firewalld.service - firewalld - dynamic firewall daemon
Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled; vendor preset: enabled)
Active: active (running) since Tue 2019-01-22 22:50:32 EST; 1h 0min ago
Main PID: 808 (firewalld)
CGroup: /system.slice/firewalld.service
└─808 /usr/bin/python -Es /usr/sbin/firewalld --nofork --nopid
防火牆管理和規則配置
現在 firewalld 正在運行,我們可以開始設置配置。您可以打開端口、允許服務和將 IP 列入白名單以進行訪問。所有這些例子包括 – 永遠 橫幅。這對於確保即使在 firewalld 重新啟動或服務器重新啟動後也能保存規則很重要。完成添加新規則後,您必須重新加載防火牆以激活新規則。
添加 TCP 或 UDP 端口
您必須指定 TCP 或 UDP 並打開這兩個端口。您需要為每個協議添加一個規則。
firewall-cmd --permanent --add-port=22/TCP
firewall-cmd --permanent --add-port=53/UDP
刪除 TCP 或 UDP 端口
對上述結構稍作修改,就可以去掉當前打開的端口,有效地關閉端口。
firewall-cmd --permanent --remove-port=444/tcp
添加服務
這些服務假定默認端口設置為: /etc/服務 配置文件。如果您想在非標準端口上使用服務,您需要打開特定端口,如上例所示。
firewall-cmd --permanent --add-service=ssh
firewall-cmd --permanent --add-service=http
刪除服務
如上,指定 remove-service 選項以關閉為服務定義的端口。
firewall-cmd --permanent --remove-service=mysql
白名單 IP 地址
要將 IP 或 IP 範圍列入白名單或允許訪問,您可以告訴防火牆添加受信任的來源。
firewall-cmd --permanent --add-source=192.168.1.100
您還可以使用所謂的 CIDR 表示法允許 IP 範圍。 CIDR 不在本文的討論範圍內,但它是您可以用來記錄 IP 地址範圍的縮寫。
firewall-cmd --permanent --add-source=192.168.1.0/24
刪除列入白名單的 IP 地址
要刪除列入白名單的 IP 或 IP 範圍,您可以使用: –刪除源 選項。
firewall-cmd --permanent --remove-source=192.168.1.100
阻止 IP 地址
firewall-cmd 工具主要用於打開或允許訪問,因此阻止 IP 需要一套豐富的規則。豐富的規則在形式上類似於 iptables 規則的編寫方式。
firewall-cmd --permanent --add-rich-rule="rule family='ipv4' source address="192.168.1.100" reject"
您可以使用 CIDR 表示法再次阻止 IP 地址範圍。
firewall-cmd --permanent --add-rich-rule="rule family='ipv4' source address="192.168.1.0/24" reject"
將特定端口上的 IP 地址列入白名單(更豐富的規則)
您必須返回 iptables 並創建另一個豐富的規則,但最後使用接受語句來允許 IP 訪問而不是拒絕它。
firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="192.168.1.100" port protocol="tcp" port="3306" accept"
刪除富規則
使用以下選項刪除豐富的規則 –刪除豐富的規則,但是您需要完全指定要刪除的規則,因此最好複製並粘貼完整的規則,而不是嘗試從內存中鍵入所有規則。
firewall-cmd --permanent --remove-rich-rule="rule family="ipv4" source address="192.168.1.100" port protocol="tcp" port="3306" accept"
保存防火牆規則
添加或刪除所有規則後,您必須重新加載防火牆規則以激活它們。為此,請再次使用 防火牆命令 工具,但有選項 – 重新加載.
firewall-cmd --reload
查看防火牆規則
重新加載規則後,您可以通過以下方式驗證新規則是否設置正確:
firewall-cmd --list-all
下面是一個示例輸出 –list-all 選擇選項後,我們可以看到這台服務器有很多端口,服務在防火牆中開放,還有一套豐富的規則(將一個端口轉發到另一個端口)。
[[email protected] ~]# firewall-cmd --list-all
public (default, active)
interfaces: enp1s0
sources: 192.168.1.0/24
services: dhcpv6-client dns http https mysql nfs samba smtp ssh
ports: 443/tcp 80/tcp 5900-5902/tcp 83/tcp 444/tcp 3260/tcp
masquerade: no
forward-ports:
icmp-blocks:
rich rules:
rule family="ipv4" source address="192.168.1.0/24" forward-port port="5423" protocol="tcp" to-port="80"
獎勵 #1:Firewalld GUI 配置
雖然本文主要關注使用命令行實用程序 firewall-cmd,但也有用於處理 firewalld 規則的圖形工具。這些可以在 應用 > 其他 CentOS 7.x 和 RedHat 7.x 服務器的圖形訪問菜單。要安裝此應用程序,請從命令行運行以下命令:
sudo yum install firewall-config
防火牆實用程序可以更輕鬆地創建和添加更複雜的“豐富規則”,這些規則在命令行上運行起來很麻煩。請注意,即使在圖形實用程序中,您仍然需要使用 永恆 選項。


獎勵 2:Firewalld 直接規則
直接規則是特殊的單獨規則區域,旨在成為與防火牆交互的更“直接”方式。可以編輯規則 /etc/firewalld/direct.xml 創建一個文件並重新加載防火牆以啟用這些規則。這些規則與豐富的規則和舊的 iptables 樣式規則非常相似,但是是用 XML 編寫的。
直接接口主要由服務或應用程序用來添加特定的防火牆規則。下面是來自 firewalld 手冊頁的示例規則塊。此特定示例顯示了將一組源 IP 地址與一組稱為“黑名單”的規則進行匹配。這個“黑名單”鏈告訴它在 IP 匹配時記錄並最終從這些 IP 斷開連接。
<?xml version="1.0" encoding="utf-8"?>
<direct>
<chain ipv="ipv4" table="raw" chain="blacklist"/>
<rule ipv="ipv4" table="raw" chain="PREROUTING" priority="0">-s 192.168.1.0/24 -j blacklist</rule>
<rule ipv="ipv4" table="raw" chain="PREROUTING" priority="1">-s 192.168.5.0/24 -j blacklist</rule>
<rule ipv="ipv4" table="raw" chain="blacklist" priority="0">-m limit --limit 1/min -j LOG --log-prefix "blacklisted: "</rule>
<rule ipv="ipv4" table="raw" chain="blacklist" priority="1">-j DROP</rule>
</direct>
您還可以使用命令行實用程序來操作這些規則。 防火牆命令但必須包含 – 直接的 指示我們正在使用直接規則集的標誌。
參考:
點擊這裡了解詳情 防火牆信息 軟呢帽和 firewalld.org 網站.
立即預訂您的位置!
致電 800.580.4985 或 和…聊天 或立即聯繫我們,與我們知識淵博的解決方案團隊或經驗豐富的託管顧問交談。