iptables和firewalld的区别以及用法

devtools/2024/9/24 21:50:22/

运维中,了解和掌握 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 系统和网络非常重要。根据具体需求和环境特点选择合适的工具,可以提高运维效率和系统安全性。


http://www.ppmy.cn/devtools/86248.html

相关文章

返回二叉树的最大的二叉搜索子树的头节点的问题

public class test21 { // 定义一个内部类Node&#xff0c;表示二叉树的节点 public static class Node { public int value; // 节点的值 public Node left; // 左子节点 public Node right; // 右子节点 // 构造函数&#xff0c;初始化节点的…

Python学习计划——9.2多进程编程

多进程编程是一种并发编程的方式&#xff0c;通过使用多个进程来提高程序的并发性能。与多线程相比&#xff0c;多进程编程在处理CPU密集型任务时更有效&#xff0c;因为每个进程都有独立的内存空间和全局解释器锁&#xff08;GIL&#xff09;。 1. 什么是多进程 多进程是一种…

flume知识点

1. 简述什么是Flume &#xff1f; flume 作为 cloudera 开发的实时日志收集系统&#xff0c;受到了业界的认可与广泛应用。Flume 初始的发行版本目前被统称为 Flume OG&#xff08;original generation&#xff09;&#xff0c;属于 cloudera。 但随着 FLume 功能的扩展&#…

程序员纯粹八股文的危害有哪些,应该如何来解决?

“八股文”这个词在程序员面试的上下文中通常指的是那些被广泛讨论、反复练习的问题和答案&#xff0c;它们往往围绕着一些经典的技术知识点&#xff0c;例如算法、数据结构、设计模式等。这些知识在面试中被频繁提及&#xff0c;以至于应聘者经常会提前准备并背诵这些答案&…

html+css 实现4角移动悬停按钮

前言&#xff1a;哈喽&#xff0c;大家好&#xff0c;今天给大家分享htmlcss 绚丽效果&#xff01;并提供具体代码帮助大家深入理解&#xff0c;彻底掌握&#xff01;创作不易&#xff0c;如果能帮助到大家或者给大家一些灵感和启发&#xff0c;欢迎收藏关注哦 &#x1f495; 文…

【C++】set的使用

&#x1f525;个人主页&#xff1a; Forcible Bug Maker &#x1f525;专栏&#xff1a; STL || C 目录 &#x1f308;前言&#x1f308;关于set&#x1f525;容量函数emptysize &#x1f525;Modifiersinserteraseclear &#x1f525;Operationsfindcountlower_bound和upper_…

搜维尔科技:Haption Virtuose 6D遥操作控制人形机器人操作

Haption Virtuose 6D遥操作控制人形机器人操作 搜维尔科技&#xff1a;Haption Virtuose 6D遥操作控制人形机器人操作

2024.7.30问题合集

2024.7.30问题合集 1.adb调试出现5037端口被占用的情况2.更改ip地址时出现以下问题3.RV1126 ip配置问题 1.adb调试出现5037端口被占用的情况 问题&#xff1a;5037端口被占用的情况 解决方案&#xff1a;将adb文件下的adb.exe和AdbWinApi.dll两个文件复制到C:\Windows\SysWOW6…