使用firewalld
或iptables
在Linux中设置防火墙,由于其建筑差异而涉及不同的方法。 firewalld
是一个动态的防火墙守护程序,提供了用于管理防火墙规则的用户友好界面,而iptables
是一个命令行实用程序,可以直接操纵内核的NetFilter框架。
使用Firewalld:
firewalld
。在大多数发行版中,这是使用软件包管理器完成的(例如,在fedora/centos/rhel上dnf install firewalld
apt install firewalld
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中文网其他相关文章!