我正在运行 VPS,并且想将 iptables 规则重置为出厂默认状态。以下是我想出的命令:
#!/bin/sh
echo "Resetting all iptables rules..."
#Reset default table policies
iptables -P INPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -P OUTPUT ACCEPT
#Reset nat table policies
iptables -t nat -P PREROUTING ACCEPT
iptables -t nat -P POSTROUTING ACCEPT
iptables -t nat -P INPUT ACCEPT
iptables -t nat -P OUTPUT ACCEPT
#Reset mangle table policies
iptables -t mangle -P PREROUTING ACCEPT
iptables -t mangle -P POSTROUTING ACCEPT
iptables -t mangle -P INPUT ACCEPT
iptables -t mangle -P OUTPUT ACCEPT
iptables -t mangle -P FORWARD ACCEPT
#Reset raw table policies
iptables -t raw -P PREROUTING ACCEPT
iptables -t raw -P OUTPUT ACCEPT
#Flush all rules and delete empty chains
iptables -F
iptables -X
iptables -t nat -F
iptables -t nat -X
iptables -t mangle -F
iptables -t mangle -X
iptables -t raw -F
iptables -t raw -X
问题:
这些规则够全面吗?我的 iptables 已经乱七八糟了,我只想从头开始。
如果我重新启动,我的 VPS 会被锁定吗?
我是否需要在每个表上使用 -Z 命令来将链中所有规则的数据包和字节计数器清零?例如“iptables -t nat -Z”(并对所有其他表重复相同操作)?
谢谢!
答案1
我认为这些都非常好;我一下子想不出有哪条规则可以逃脱这种修剪。
视情况而定。您目前对重启规则的安排是什么?如果它们相当于删除所有内容,那么是的,您将把自己锁定在外。您上面展示的脚本很棒(参见 1.),但它不会在重启时神奇地运行。
这取决于您是否希望将计数器归零。
至于不被锁定,我同意 pauska 的观点,即进行远程防火墙工作可能很棘手。这就是为什么在提交对远程系统的防火墙所做的任何更改之前,我会
# at now+5min
at> service iptables stop
at> ^D
如果我随后提交的更改将我锁定,那么,我可以在五分钟内重新登录。如果没有,我可以使用atrm
删除我刚刚提交的作业。它救了我好几次!(注意:该service
命令适用于 Red Hat Linux,您可能需要找到适用于其他 Linux 的等效命令。)