Linux iptables使用详解

作者 : admin 本文共2272个字,预计阅读时间需要6分钟 发布时间: 2024-06-13 共1人阅读

一、Linux系统下使用iptables

在Linux中,常用的防火墙工具是iptables。以下是一些基本的iptables命令,用于配置防火墙规则。

Linux iptables使用详解插图

查看现有的iptables规则:

sudo iptables -L

清除所有现有的规则(慎用,可能导致服务不可用):

sudo iptables -F

允许特定端口(例如,允许TCP端口80):

sudo iptables -A INPUT -p tcp –dport 80 -j ACCEPT

拒绝来自特定IP的访问:

sudo iptables -A INPUT -s 123.123.123.123 -j DROP

# 假设要限制的IP段为192.168.1.0/24,你可以使用以下命令:
iptables -I INPUT -s 192.168.1.0/24 -j DROP

允许特定IP的访问:

sudo iptables -A INPUT -s 123.123.123.123 -j ACCEPT

保存规则,使其在重启后生效(可选,取决于发行版):

sudo iptables-save > /etc/iptables/rules.v4

或者在某些系统中,您可能需要使用iptables-persistent

sudo netfilter-persistent save
sudo netfilter-persistent reload

检查iptables服务状态(取决于发行版):

sudo systemctl status iptables

启动/停止/重启iptables服务

sudo systemctl start iptables
sudo systemctl stop iptables
sudo systemctl restart iptables

1. 基本概念

防火墙在做数据包过滤决定时,有一套遵循和组成的规则,这些规则存储在专用的数据包过滤表中,而这些表集成在 Linux 内核中。在数据包过滤表中,规则被分组放在我们所谓的链(chain)中。而netfilter/iptables IP 数据包过滤系统是一款功能强大的工具,可用于添加、编辑和移除规则。

虽然 netfilter/iptables IP 信息包过滤系统被称为单个实体,但它实际上由两个组件netfilter 和 iptables 组成。

netfilter 组件也称为内核空间(kernelspace),是内核的一部分,由一些信息包过滤表组成,这些表包含内核用来控制信息包过滤处理的规则集。

iptables 组件是一种工具,也称为用户空间(userspace),它使插入、修改和除去信息包过滤表中的规则变得容易。除非您正在使用 Red Hat Linux 7.1 或更高版本,否则需要下载该工具并安装使用它

  • 表(Tables):iptables 定义了五个表,每个表用于处理不同类型的数据包。最常用的表是 filter 表,用于处理输入、输出和转发的数据包。
  • 链(Chains):每个表包含几个内置链,用于处理特定类型的数据包。例如,filter 表包含 INPUTOUTPUT 和 FORWARD 链。
  • 规则(Rules):规则定义了数据包与链的匹配条件以及匹配后应采取的操作(如接受、拒绝或跳转到另一个链)。
  • 目标(Targets):当数据包与规则匹配时,规则可以指定一个目标。常见的目标包括 ACCEPT(接受数据包)、DROP(丢弃数据包)和 REJECT(拒绝数据包并发送错误消息)。

2. 常用命令

  • 查看规则

    • iptables -L:列出 filter 表中的所有规则。
    • iptables -L -t nat:列出 nat 表中的所有规则。
    • -v 选项可以显示更详细的信息。
  • 添加规则

    • iptables -A INPUT -p tcp --dport 22 -j ACCEPT:在 INPUT 链的末尾添加一条规则,允许 TCP 协议的 22 端口(SSH)的数据包。
    • -A 表示追加到链的末尾,-I 可以用于在链的指定位置插入规则。
  • 删除规则

    • iptables -D INPUT -p tcp --dport 22 -j ACCEPT:删除与指定条件匹配的规则。
    • 注意,删除规则时必须提供完整的匹配条件,否则无法正确删除。
  • 修改规则:iptables 没有直接的修改命令,但可以通过删除旧规则并添加新规则来实现修改。

  • 保存和恢复规则

    • service iptables save(或 iptables-save > /etc/sysconfig/iptables):将当前规则保存到文件中。
    • service iptables restart(或 iptables-restore < /etc/sysconfig/iptables):从文件中恢复规则。
    • 注意:不是所有的 Linux 发行版都使用相同的命令来保存和恢复 iptables 规则。

3. 复杂用法

  • 匹配多个条件:使用多个 -p--dport--source 等选项可以定义更复杂的匹配条件。
  • 使用通配符:在匹配源地址或目标地址时,可以使用通配符(如 192.168.1.*)来匹配多个地址。
  • 使用扩展匹配:iptables 还支持扩展匹配模块,如 multiportstring 等,用于执行更复杂的匹配操作。
  • 使用自定义链:可以创建自定义链并在其他链中引用它们,以实现更复杂的逻辑。

4. 注意事项

  • 在修改 iptables 规则之前,请务必备份当前的规则集。
  • 谨慎使用 DROP 和 REJECT 目标,因为它们会阻止数据包通过系统并可能导致连接问题。
  • 使用 -v 或 --verbose 选项可以查看更详细的规则信息。
  • 不同的 Linux 发行版可能对 iptables 的使用略有差异,因此请参考特定发行版的文档以获取更多信息。
本站无任何商业行为
个人在线分享-虚灵IT资料分享 » Linux iptables使用详解
E-->