清除所有 iptables 规则的最佳方法

kag*_*san 122 linux firewall iptables

我目前有这个片段:

# flush all chains
iptables -F
iptables -t nat -F
iptables -t mangle -F
# delete all chains
iptables -X
Run Code Online (Sandbox Code Playgroud)

运行此命令后,某些不可渗透的规则是否有可能继续存在?

这个想法是有一个完全干净的 iptables 配置,可以很容易地用新规则集替换(不用考虑路由/ifconfig 的参数)。

Sam*_*cke 163

简洁地回答您的问题,不:刷新每张桌子后不会有任何“剩余”规则。但是,为了彻底起见,您可能还需要将内置INPUTFORWARD链的策略设置ACCEPT为:

iptables -P INPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -P OUTPUT ACCEPT
iptables -t nat -F
iptables -t mangle -F
iptables -F
iptables -X
Run Code Online (Sandbox Code Playgroud)

清除ip6tables规则:

ip6tables -P INPUT ACCEPT
ip6tables -P FORWARD ACCEPT
ip6tables -P OUTPUT ACCEPT
ip6tables -t nat -F
ip6tables -t mangle -F
ip6tables -F
ip6tables -X
Run Code Online (Sandbox Code Playgroud)

......应该这样做。iptables -nvL应该产生这个(或非常相似的)输出:

Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination

Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination
Run Code Online (Sandbox Code Playgroud)

  • 你忘记了'raw':iptables -t raw -F iptables -t raw -X (10认同)

Jer*_*rub 36

这将正确地将您的 iptables 系统完全重置为一个非常基本的状态:

iptables-save | awk '/^[*]/ { print $1 } 
                     /^:[A-Z]+ [^-]/ { print $1 " ACCEPT" ; }
                     /COMMIT/ { print $0; }' | iptables-restore
Run Code Online (Sandbox Code Playgroud)

所有策略都将重置为 ACCEPT 并刷新当前使用的每个表。除了内置链之外的所有链都将不复存在。

  • 我改变了主意:数据格式不太可能再改变太多,因为它被广泛使用。+1。 (3认同)
  • 整洁的黑客!不过,我不会依赖它,因为对保存/恢复格式的细微更改总是有可能会破坏它。可能最好坚持使用“iptables”工具明确提供的 API,IMO。 (2认同)
  • +1,有趣的黑客 (2认同)