首页 >运维 >linux运维 >如何使用防火墙或Iptables在Linux中设置防火墙?

如何使用防火墙或Iptables在Linux中设置防火墙?

Emily Anne Brown
Emily Anne Brown原创
2025-03-12 18:58:51926浏览

使用防火墙或Iptables在Linux中设置防火墙

使用firewalldiptables在Linux中设置防火墙,由于其建筑差异而涉及不同的方法。 firewalld是一个动态的防火墙守护程序,提供了用于管理防火墙规则的用户友好界面,而iptables是一个命令行实用程序,可以直接操纵内核的NetFilter框架。

使用Firewalld:

  1. 安装:确保安装firewalld 。在大多数发行版中,这是使用软件包管理器完成的(例如,在fedora/centos/rhel上dnf install firewalld apt install firewalld firewalld。
  2. 启动并启用FireWalld:使用systemctl start firewalld ,并使其能够使用systemctl enable firewalld
  3. 基本配置: firewalld使用“区域”来定义不同的网络上下文(例如,“公共”,“内部”,“ DMZ”)。每个区域都有一组默认规则。您可以使用firewall-cmd --get-active-zones 。要将服务(例如SSH(端口22))添加到默认区域(通常是“公共”),请使用firewall-cmd --permanent --add-service=ssh 。要使更改永久,请使用--permanent标志。用firewall-cmd --reload以应用更改。
  4. 高级配置:对于更详细的控制,您可以使用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:

  1. 安装: iptables通常默认包含在大多数Linux发行版中。
  2. 基本配置: iptables使用链(例如, INPUTOUTPUTFORWARD )来管理规则。每个规则指定源/目标IP地址,端口,协议和操作(接受,删除,拒绝)。例如,为了允许SSH连接: iptables -A INPUT -p tcp --dport 22 -j ACCEPT
  3. 保存规则: iptables规则在重新启动过程中并不持续。您需要使用脚本或诸如iptables-save之类的实用程序来保存它们,并在启动时使用启动脚本加载它们。确切的方法取决于您的分布。
  4. 高级配置: iptables提供了极为细粒度的控件,允许具有各种匹配条件和自定义链的复杂规则集。但是,这需要对网络和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>

使用防火墙保护Linux系统的最佳实践

无论您是使用firewalld还是iptables ,都遵循以下最佳实践:

  • 特权最少的原则:仅允许必要的流量。默认情况下拒绝所有内容,并明确允许特定的端口和服务。
  • 定期更新:通过最新的安全补丁保持防火墙和操作系统更新。
  • 日志分析:定期查看防火墙日志以识别可疑活动。
  • 输入链焦点:密切注意INPUT链,因为这控制了传入的连接。
  • StateFull防火墙:利用状态检查( firewalldiptables支持此)来跟踪连接并允许返回流量。
  • 除非必要,否则请避免开放端口:最大程度地减少暴露于Internet的开放端口的数量。
  • 使用强密码策略:通过使用强密码并定期更新系统来保护系统。
  • 定期审查规则:定期审查您的防火墙规则,以确保它们仍然适当有效。
  • 使用单独的DMZ:如果您需要向Internet展示服务,请考虑使用单独的DMZ(非军事区)将这些服务与内部网络隔离。
  • 考虑入侵检测/预防系统(IDS/IP):将防火墙与IDS/IP相结合,以增加安全性。

请记住,将防火墙规则始终在受控环境中进行测试,然后再将其部署到生产系统中。未正确配置的防火墙规则可能使您的系统无法访问。

以上是如何使用防火墙或Iptables在Linux中设置防火墙?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn