在几台服务器上更新iptables访问列表

我目前使用这样的规则来限制有权访问我的SSH服务的IP地址

# accept already established iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT iptables -A INPUT -p tcp --source wxyz/32 --dport 22 -j ACCEPT iptables -A INPUT -p tcp --source abcd/32 --dport 22 -j ACCEPT #drop everyting else iptables -A INPUT -j DROP iptables -P FORWARD DROP 

wxyz和abcd是允许的IP地址。

我有这个规则在多个服务器上。

能够将IP添加到允许列表并将其删除并重新加载所有服务器规则的最佳方法是什么?

最好的解决scheme是使用某种系统pipe理工具,例如Puppet,Spacewalk等。您可以将configuration文件一次推送到多台计算机上。 从长远来看,这也可以帮助你做其他事情。 但是,如果您不想处理集中pipe理types设置的所有麻烦,则可以在所有服务器上创buildssh密钥,然后创build脚本来修改和重新启动iptables。

  • 使用所有Linux服务器的SSH密钥,以便您可以执行无密码的SSHlogin
  • 创buildmod_iptables_servers.sh
    • ssh login @ server1'bash -s'<change_iptables.sh
    • ssh login @ server2'bash -s'<change_iptables.sh
    • ssh login @ server3'bash -s'<change_iptables.sh
  • 创build一个change_iptables.sh脚本,它将修改您的防火墙规则并重新启动iptables
  • 运行mod_iptables_servers.sh,它应该login到所有的Linux机器并执行change_iptables.sh脚本。

虽然我会强烈推荐中央pipe理解决scheme,但这种方式将能够完成工作。 作为一个免责声明,我从来没有试过这个,但用这个问题的答案获得正确的语法 – https://stackoverflow.com/questions/305035/how-to-use-ssh-to-run-shell-script-在远程机器&#x4E0A; 。