背景#
攻防演练期间,有一台设备连不上主控端,iptables -L INPUT --line -number
查看 INPUT 和 OUTPUT 有异常并且都删除,依旧连接不上主控端,最后确认是在 raw 表中有策略。
四表五链#
Linux 防火墙(iptables)使用四表五链(Four Tables, Five Chains)的结构来管理和控制网络流量。这个结构是 iptables 的核心组成部分,用于配置防火墙规则和过滤网络数据包。
以下是四表五链的概述:
四个表(Four Tables):
- filter 表:用于过滤网络数据包,根据规则决定是否允许或拒绝数据包通过防火墙。
- nat 表:用于网络地址转换(Network Address Translation,NAT),主要用于实现端口转发和 IP 地址转换等功能。
- mangle 表:用于对数据包的头部进行修改,如修改 TTL(Time to Live)值和设置数据包标记等。
- raw 表:提供原始数据包的处理,通常用于配置连接跟踪(Connection Tracking)和处理特定类型的数据包。
五个链(Five Chains):
- INPUT 链:用于处理进入本地系统的数据包,例如接收到的网络请求。
- OUTPUT 链:用于处理从本地系统发送出去的数据包,例如本地系统发起的网络请求。
- FORWARD 链:用于处理通过本地系统转发的数据包,例如作为路由器转发的数据包。
- PREROUTING 链:用于在数据包到达本地系统的网络协议栈之前进行处理,通常用于网络地址转换(NAT)。
- POSTROUTING 链:用于在数据包离开本地系统的网络协议栈之后进行处理,通常用于网络地址转换(NAT)。
删除单独 raw 表#
要删除 Linux 防火墙中的 raw 表,您可以使用 iptables 命令的-t
选项指定表的名称为 "raw",并使用-F
选项清空该表中的所有规则,然后使用-X
选项删除该表。
以下是删除 raw 表的命令示例:
iptables -t raw -F
iptables -t raw -X
请注意,执行这些命令需要管理员或 root 权限。在删除表之前,请确保您理解并确认其影响,以免意外删除了重要的规则。建议在执行任何防火墙配置更改之前备份您的规则,并在一个安全的环境中进行测试。
删除单独 raw 表规则#
要删除 raw 表中的单个规则,您可以使用 iptables 命令的-t
选项指定表的名称为 "raw",并使用-D
选项指定要删除的规则的位置或规则规范。
以下是删除 raw 表中单个规则的命令示例:
iptables -t raw -D <chain> <rule_specification>
请将<chain>
替换为 raw 表中的链(例如 PREROUTING、OUTPUT 等),将<rule_specification>
替换为要删除的规则的具体位置或规则规范。
例如,如果要删除 PREROUTING 链中的第 3 条规则,您可以执行以下命令:
iptables -t raw -D PREROUTING 3
如果您知道要删除规则的规则规范,可以将其替换为<rule_specification>
。例如,如果要删除源 IP 地址为 10.0.0.1 的规则,可以执行以下命令:
iptables -t raw -D PREROUTING -s 10.0.0.1 -j <target>