# flush all chains
iptables -F
iptables -t nat -F
iptables -t mangle -F
# delete all chains
iptables -X
运行此规则后,某些不渗透的规则是否可能仍然存在?
拥有一个完全干净的iptables配置,可以很容易地用新的规则集替换(不用管路由/ ifconfig的参数)。
#1 楼
简洁地回答您的问题,否:在刷新每个表之后将没有任何“剩余”规则。但是,为了更加透彻,您可能还希望将内置INPUT
和FORWARD
链的策略设置为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
清除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
...,应该这样做。
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
#2 楼
这将正确地将iptables系统完全重置为非常基本的状态:iptables-save | awk '/^[*]/ { print }
/^:[A-Z]+ [^-]/ { print " ACCEPT" ; }
/COMMIT/ { print q4312078q; }' | iptables-restore
所有策略都将重置为ACCEPT,并刷新当前使用的每个表。除内置链以外的所有链将不再存在。
评论
整洁的骇客!不过,我不会依赖它,因为对保存/恢复格式的细微更改很可能会破坏它。最好坚持使用iptables工具明确提供的API IMO。
–周一星期一
2010年11月11日,下午4:44
我改变了主意:数据格式已被广泛使用,因此不太可能再改变。 +1。
–周一星期一
2010年11月11日,下午4:54
+1,有趣的骇客
–山姆·哈利克(Sam Halicke)
2010年11月11日,下午5:55
这设法摆脱了剩余的UFW链,这是公认的答案没有做到的事情。
–l0b0
19年6月20日在11:06
这是次要的细节,但您可能希望将第一张打印纸$ 1替换为打印纸$ 0以保持一致:)
–x-yuri
19年6月28日在15:40
#3 楼
每当我需要禁用防火墙时,都是这样的:iptables-save > iptables.bak
service iptables stop
(我在fedora上)#4 楼
您只需从内核中卸载iptables
'模块即可:modprobe -r iptable_raw iptable_mangle iptable_security iptable_nat iptable_filter
UPD不幸的是,太好了,难以置信。只要表中存在规则或用户定义的链,则相应模块的引用计数为1,并且
modprobe -r
失败。您可能会删除规则和用户定义的链,例如:echo $'*raw\nCOMMIT\n*mangle\nCOMMIT\n*security\nCOMMIT\n*nat\nCOMMIT\n*filter\nCOMMIT' | iptables-restore
或:
iptables-save | awk '/^[*]/ { print "\nCOMMIT" }' | iptables-restore
您可能希望以这种方式卸载模块(没有硬编码模块名称):
lsmod | egrep ^iptable_ | awk '{print }' | xargs -rd\n modprobe -r
好的一面,在此
iptables-save
产生漂亮的空输出之后:) 评论
那可能是这里的锤子。谢谢。
– Konrad Gajewski
19年6月29日在21:45
#5 楼
将配置备份到iptables_backup.conf并清除所有规则。iptables-save | tee iptables_backup.conf | grep -v '\-A' | iptables-restore
要恢复以前的配置:
iptables-restore < iptables_backup.conf
#6 楼
一个人可以用1或2个命令执行此操作: $ sudo iptables-save > iptables.bak
$ sudo iptables -F
结果:
$ sudo iptables -nvL
Chain INPUT (policy ACCEPT 3138 packets, 5567K 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 3602 packets, 6547K bytes)
pkts bytes target prot opt in out source destination
评论
如果默认策略当前设置为DROP,这是一种锁定服务器的快速方法。因此,不是,这不是一个1或2的命令过程。如果尚未设置,则需要首先设置为ACCEPT。
– RyanH
18年5月17日在16:35
#7 楼
我最近不得不阻止所有连接,最终我要做的是iptables-policy INPUT DROP
iptables-policy OUTPUT DROP
iptables-policy FORWARD DROP
为节省起见,我建议使用以下内容
Ubuntu :
/etc/init.d/iptables save
/sbin/service iptables save
RedHat / CentOS:
/etc/init.d/iptables save
/sbin/iptables-save
除了备份所有当前的ufw规则之外,Ive还使用了此规则过去
cp /lib/ufw/{user.rules,user6.rules} /<BACKUP LOCATION>
cp /lib/ufw/{user.rules,user6.rules} ./
我认为这可能对将来的参考很有用。以为我会分享。
#8 楼
这是我删除所有DROP规则的方法:iptables -S |grep DROP| sed 's/-A/-D/' >rules # -A becomes -D: delete
nano rules # check that everything is correct
cat rules | while read line; do iptables $line; done
iptables-save
完成!
#9 楼
这对我有用(在Ubuntu 18.04上):sudo bash -c "ufw -f reset && iptables -F && iptables -X && ufw allow 22 && ufw -f enable"
它重置(并禁用)ufw,然后重置iptables清除并删除所有链。然后,它再次启用ufw,但不允许端口22进行远程访问之前。要求用户确认的两个命令是“强制的”,确保不需要输入。我能够通过活动的SSH连接运行它。
(源)
评论
您忘记了“原始”:iptables -t raw -F iptables -t raw -X
–kK-Storm
15年11月12日在12:59
刷新每个表后不会有任何“剩余”规则OP不会刷新每个表。你也没有如果想全面了解,这是它的外观。您可能想要添加iptables -t“ $ table” -Z。请注意,这种方式是对表及其链列表进行硬编码。因此,我将认真考虑保存-还原解决方案。或者,您可以仅卸载iptables。
–x-yuri
19年6月29日在20:34