iptables和firewalld的区别以及用法

在运维中,了解和掌握 iptables 和 firewalld 的使用是非常重要的,因为它们是 Linux 系统中管理防火墙规则的两种主要工具。下面详细解释如何在运维中使用这两种工具。

iptables

iptables 是 Linux 系统中最基本和直接的防火墙管理工具,它直接操作 Linux 内核中的 netfilter 模块,用于设置和管理防火墙规则、网络地址转换(NAT)和数据包过滤。iptables 使用的规则基于表(table)、链(chain)和规则(rule)的概念来管理网络数据包的流向和处理。

主要特点和用法
  1. 基本概念

    • 表(table):iptables 通过不同的表来组织规则,如 filter 表(默认表,用于过滤数据包)、nat 表(用于网络地址转换)、mangle 表(用于特殊修改)等。
    • 链(chain):规则按照链的顺序逐一检查数据包,包括输入链(INPUT)、输出链(OUTPUT)和转发链(FORWARD)等。
    • 规则(rule):定义具体的操作,如允许、拒绝或转发特定类型的数据包。
  2. 常见应用场景

    • 网络安全策略:控制数据包的流向和访问权限,实现访问控制列表(ACL)。
    • 网络地址转换(NAT):配置端口转发和地址转换,实现内部网络与外部网络的通信。
    • 服务和端口管理:管理服务的访问控制和端口的开放或关闭,如允许或拒绝特定端口的访问。
  3. 常用命令
    iptables 是 Linux 系统中非常强大和灵活的防火墙管理工具,可以通过设置规则来控制网络数据包的流向、转发和过滤。以下是一些 iptables 的常用操作和命令

    查看当前规则

    • 查看所有规则:iptables -L
    • 查看指定表的规则(如 filter 表):iptables -L -t filter
    • 查看详细的规则信息:iptables -S

    添加规则

    • 添加到指定链(如 INPUT、OUTPUT、FORWARD):iptables -A <chain> <rule>
      • 示例:允许从指定 IP 访问 SSH 服务:iptables -A INPUT -s <IP_address> -p tcp --dport 22 -j ACCEPT

    删除规则

    • 删除指定链上的规则:iptables -D <chain> <rule>
      • 示例:删除指定 IP 访问 SSH 的规则:iptables -D INPUT -s <IP_address> -p tcp --dport 22 -j ACCEPT

    插入规则

    • 在指定位置插入规则到链上:iptables -I <chain> <rule_number> <rule>
      • 示例:在 INPUT 链上第 2 条规则之前插入允许 ICMP 数据包的规则:iptables -I INPUT 2 -p icmp -j ACCEPT

    修改规则

    • 修改已存在规则的参数或动作:首先删除旧规则,然后添加新规则。

规则设置

  1. 允许或拒绝数据包

    • 允许特定 IP 访问某端口的服务:iptables -A INPUT -s <IP_address> -p tcp --dport <port_number> -j ACCEPT
    • 拒绝特定 IP 访问某端口的服务:iptables -A INPUT -s <IP_address> -p tcp --dport <port_number> -j DROP
  2. 网络地址转换(NAT)

    • 设置端口转发:iptables -t nat -A PREROUTING -p tcp --dport <external_port> -j DNAT --to-destination <internal_IP>:<internal_port>
    • 添加 SNAT 规则:iptables -t nat -A POSTROUTING -o <interface> -j SNAT --to-source <source_IP>

保存和恢复规则

  1. 保存规则

    • 保存当前规则到文件(通常是 /etc/sysconfig/iptables):iptables-save > /etc/sysconfig/iptables
  2. 恢复规则

    • 从文件加载规则:iptables-restore < /etc/sysconfig/iptables

其他常用命令

  • 清空规则:清除所有规则和计数器,重置防火墙:iptables -F
  • 禁用或启用特定链iptables -P <chain> ACCEPTiptables -P <chain> DROP

注意事项

  • 修改 iptables 规则可能会导致网络断开或无法访问,谨慎操作。
  • 始终确保规则设置符合安全策略和需求,避免误操作导致安全风险。

使用这些命令和操作,可以对 iptables 进行基本的配置和管理,实现网络安全策略的控制和管理。

firewalld

firewalld 是建立在 iptables 之上的动态管理工具,提供了更高级别的抽象和动态管理防火墙规则的能力。它使用了“区域”(zone)和“服务”(service)的概念来简化配置,支持在运行时动态添加、删除和更新规则,适用于桌面系统、多用户环境和云环境等需要灵活管理的场景。

主要特点和用法
  1. 基本概念

    • 区域(zone):定义不同的网络区域,每个区域具有特定的安全策略和访问控制。
    • 服务(service):预定义了常见的网络服务和端口,通过添加服务来简化配置防火墙规则。
    • 动态管理:支持在运行时添加、删除和更新防火墙规则,无需重启防火墙服务。
  2. 常见应用场景

    • 动态管理和配置:在运行时调整防火墙规则,适应网络环境的变化。
    • 简化配置:通过定义区域和服务来管理安全策略,降低配置的复杂度。
    • 应用程序级防火墙:允许或阻止特定应用程序的网络访问,增强安全性。
  3. 常用命令
    Firewalld 是一个动态管理防火墙规则的工具,相比于 iptables,它提供了更高级别的抽象和动态管理能力。以下是一些 firewalld 的常用操作和命令

    查看防火墙状态

    • 查看当前防火墙状态:sudo firewall-cmd --state

    查看防火墙规则

    • 查看所有活动区域的规则:sudo firewall-cmd --list-all
    • 查看指定区域(如 public)的规则:sudo firewall-cmd --zone=public --list-all

    查询支持的服务和端口

    • 查询可用的服务:sudo firewall-cmd --get-services
    • 查询已打开的端口:sudo firewall-cmd --list-ports

配置区域和服务

  1. 设置默认区域

    • 设置默认区域为 public:sudo firewall-cmd --set-default-zone=public
  2. 添加和删除服务

    • 添加服务到指定区域(如 public):sudo firewall-cmd --zone=public --add-service=<service>
    • 删除服务:sudo firewall-cmd --zone=public --remove-service=<service>
  3. 添加和删除端口

    • 添加端口到指定区域(如 public):sudo firewall-cmd --zone=public --add-port=<port>/tcp
    • 删除端口:sudo firewall-cmd --zone=public --remove-port=<port>/tcp

运行时配置和永久配置

  1. 运行时生效

    • 添加服务并立即生效:sudo firewall-cmd --zone=public --add-service=<service> --permanent
    • 添加端口并立即生效:sudo firewall-cmd --zone=public --add-port=<port>/tcp --permanent
  2. 永久生效

    • 应用运行时配置到永久配置:sudo firewall-cmd --runtime-to-permanent

高级设置

  1. 管理 rich 规则

    • 添加 rich 规则:sudo firewall-cmd --zone=public --add-rich-rule='rule family="ipv4" source address="192.168.1.0/24" accept'
    • 删除 rich 规则:sudo firewall-cmd --zone=public --remove-rich-rule='rule family="ipv4" source address="192.168.1.0/24" accept'
  2. 防火墙重载和重启

    • 重新加载防火墙配置:sudo firewall-cmd --reload
    • 重启防火墙服务:sudo systemctl restart firewalld

注意事项

  • Firewalld 的动态管理和抽象层次使得配置更加简洁和灵活,特别适合需要频繁调整和管理防火墙规则的环境。
  • 确保配置符合安全策略和需求,避免误操作导致安全风险。

通过这些命令和操作,可以有效地管理和配置 firewalld,确保系统和网络的安全性和稳定性。

选择适合的工具

  • iptables 适合需要精细控制和高级网络功能的场景,对网络和安全专家更为熟悉和适应。
  • firewalld 更适合需要动态管理和简化配置的环境,适用于桌面系统、多用户环境和云环境,能够快速调整规则以适应网络变化和安全需求。

综上所述,理解和掌握 iptables 和 firewalld 的特点、用法和适用场景,对于有效地管理和保护 Linux 系统和网络非常重要。根据具体需求和环境特点选择合适的工具,可以提高运维效率和系统安全性。

  • 12
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值