使用firewalld
或iptables
在Linux中設置防火牆,由於其建築差異而涉及不同的方法。 firewalld
是一個動態的防火牆守護程序,提供了用於管理防火牆規則的用戶友好界面,而iptables
是一個命令行實用程序,可以直接操縱內核的NetFilter框架。
使用Firewalld:
firewalld
。在大多數發行版中,這是使用軟件包管理器完成的(例如,在fedora/centos/rhel上dnf install firewalld
apt install firewalld
install firewalld。systemctl start firewalld
,並使其能夠使用systemctl enable firewalld
。firewalld
使用“區域”來定義不同的網絡上下文(例如,“公共”,“內部”,“ DMZ”)。每個區域都有一組默認規則。您可以使用firewall-cmd --get-active-zones
。要將服務(例如SSH(端口22))添加到默認區域(通常是“公共”),請使用firewall-cmd --permanent --add-service=ssh
。要使更改永久,請使用--permanent
標誌。用firewall-cmd --reload
以應用更改。firewall-cmd --permanent --add-port=80/tcp
添加特定端口(用於HTTP)或使用firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.1.0/24" accept'
)使用iptables:
iptables
通常默認包含在大多數Linux發行版中。iptables
使用鏈(例如, INPUT
, OUTPUT
, FORWARD
)來管理規則。每個規則指定源/目標IP地址,端口,協議和操作(接受,刪除,拒絕)。例如,為了允許SSH連接: iptables -A INPUT -p tcp --dport 22 -j ACCEPT
。iptables
規則在重新啟動過程中並不持續。您需要使用腳本或諸如iptables-save
之類的實用程序來保存它們,並在啟動時使用啟動腳本加載它們。確切的方法取決於您的分佈。iptables
提供了極為細粒度的控件,允許具有各種匹配條件和自定義鏈的複雜規則集。但是,這需要對網絡和iptables
語法有深入的了解。主要區別在於他們的防火牆管理方法。 firewalld
提供了在iptables
頂部構建的更高級別,用戶友好的接口。它簡化了常見的防火牆任務,使管理區域,服務和端口更容易。另一方面, iptables
對NetFilter框架提供了直接的低級控制,提供了更大的靈活性,但需要更多的技術專業知識。
這是一個總結關鍵差異的表:
特徵 | Firewalld | iptables |
---|---|---|
介面 | 具有用戶友好選項的命令行工具 | 僅命令行,複雜的語法 |
配置 | 區域,服務,港口,豐富的規則 | 鏈條,具有特定匹配標準的規則 |
持久性 | 內置的持久機制 | 需要在啟動時手動節省和加載 |
複雜 | 更容易學習和使用 | 陡峭的學習曲線,更複雜 |
靈活性 | 不如iptables靈活 | 高度靈活,允許複雜的規則 |
動態更新 | 支持動態更新 | 需要手動更新 |
使用Firewalld:
要允許特定端口(例如,端口80上的http):
<code class="bash">firewall-cmd --permanent --add-port=80/tcp firewall-cmd --reload</code>
拒絕特定端口(例如,端口21上的FTP):
對於firewalld
而言,這並不那麼簡單。您可能需要創建一個自定義區域或使用富裕規則來精確實現這一目標。通常, firewalld
旨在默認允許並明確拒絕。
允許特定服務(例如,SSH):
<code class="bash">firewall-cmd --permanent --add-service=ssh firewall-cmd --reload</code>
使用iptables:
要允許特定端口(例如,端口80上的http):
<code class="bash">iptables -A INPUT -p tcp --dport 80 -j ACCEPT iptables -A OUTPUT -p tcp --sport 80 -j ACCEPT # If you want to allow outgoing traffic on port 80 as well. service iptables save # Save the rules (method varies by distribution)</code>
拒絕特定端口(例如,端口21上的FTP):
<code class="bash">iptables -A INPUT -p tcp --dport 21 -j DROP service iptables save # Save the rules (method varies by distribution)</code>
無論您是使用firewalld
還是iptables
,都遵循以下最佳實踐:
INPUT
鏈,因為這控制了傳入的連接。firewalld
和iptables
支持此)來跟踪連接並允許返回流量。請記住,將防火牆規則始終在受控環境中進行測試,然後再將其部署到生產系統中。未正確配置的防火牆規則可能使您的系統無法訪問。
以上是如何使用防火牆或Iptables在Linux中設置防火牆?的詳細內容。更多資訊請關注PHP中文網其他相關文章!