通过SSHconfigurationiptables而不被locking?

我需要通过SSHconfiguration服务器,并在此过程中configurationiptables 。 更确切地说,我想按以下顺序运行以下命令:

 iptables -F iptables -P INPUT DROP iptables -A INPUT -i lo -p all -j ACCEPT iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT iptables -A INPUT -p tcp -m tcp --dport 22 -j ACCEPT iptables -A INPUT -p tcp -m tcp --dport 25 -j ACCEPT iptables -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT iptables -t nat -A PREROUTING -p tcp --dport 25 -j REDIRECT --to-port 5000 iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 8000 iptables -A INPUT -j DROP iptables-save 

我怎样才能做到这一点,而不被locking? 我可以批量使用这些吗?

我认为你认为你会被locking的原因是你在configurationACCEPT规则之前放入了默认的DROP规则。

通过一个shell命令运行命令,如:

 bash -c 'iptables -F; iptables -P INPUT DROP; ...' 

整个string将在处理之前被发送和读取,然后规则将被应用。 由于这些命令不需要input,他们将全部处理,完成后仍然可以访问。

我通常这样做:

1)我备份旧的iptablesconfiguration文件:

cp / etc / sysconfig / iptables /etc/sysconfig/iptables.bak

2)在尝试新的设置之前,我执行这个命令,以确保我可以连接回来,如果在新的设置中的东西locking我(基本上,我10/15分钟后取代旧规则):

echo“mv /etc/sysconfig/iptables.bak / etc / sysconfig / iptables && service iptables restart” 现在+ 15分钟

3)现在我可以安全地修改iptables规则。 如果事情变坏,我可以在15分钟后回来。

如果您想要避免一段时间被locking的情况(并避免由于错误而导致防火墙设置失败的风险),则技术上的替代方法是避免为INPUT刷新表。 replaceiptables -Fiptables -F INPUT by

 iptables -I INPUT 1 -p tcp -m tcp --dport 22 -j ACCEPT while iptables -D 2 INPUT; do : done for chain in $(iptables -L -n | awk '/^Chain/ && $2 != "INPUT" { print $2 }'); do iptables -F "$chain" done 

然后像往常一样定义规则(只是-A为INPUT,但是,请不要-I INPUT 1 ),最后删除连接安全规则: iptables -D INPUT 1