![安全地更改 iptables 防火墙规则?](https://linux22.com/image/506949/%E5%AE%89%E5%85%A8%E5%9C%B0%E6%9B%B4%E6%94%B9%20iptables%20%E9%98%B2%E7%81%AB%E5%A2%99%E8%A7%84%E5%88%99%EF%BC%9F.png)
当人们更改防火墙规则以确保不会意外将自己锁定时,他们会做什么?
例如,有没有办法加载防火墙规则,以便它们仅在某个测试期内处于活动状态,然后让防火墙规则恢复到以前的设置?
答案1
另一个选项是在服务器上打开一个屏幕会话,并在屏幕会话中设置一个作业,该作业会休眠几分钟,然后刷新表。完成更改后,您可以直接终止该作业。您也可以让脚本将 INPUT 策略更改为 ACCEPT,或类似操作。
可能比 cron 更方便一点,但想法是一样的。我对路由器做了类似的事情reload in 10
。所以如果我把自己锁在外面,路由器会重新启动并将配置恢复到我更改之前的状态。
答案2
我用火神作为 iptables 的前端。Firehol 有一个非常好的功能,可以让您安全地测试一组新规则。
当您运行该命令时firehol try
,Firehol 会将自身设置为忽略 HUP,备份当前规则集,应用新规则集,然后向用户发出提示,询问他们是否要遵守新规则集。如果您在 30 秒内未做出回应,则 Firehol 会恢复之前的规则集。
答案3
我要么设置一个 at 作业,让它在几分钟内重新加载之前的规则集,但我认为更好的方法是确保允许从您的 IP 进行访问作为最先的规则之一(如果不是第一个规则)。这样,当您对它感到满意时,您就可以将其取出。
还值得注意的是,如果您允许相关和已建立的连接(即-m state --state RELATED,ESTABLISHED -j ACCEPT
)并且您设法阻止 SSH 访问,则应该维护任何现有连接 - 因此请确保在退出现有会话之前检查您是否可以再次通过 SSH 登录!
答案4
根据 rjewell 的说法。您可以创建一个 cron 作业,每 30 分钟刷新并重新加载配置文件中的所有规则。然后,当您测试时,您可以直接使用命令更改规则,并且只有在您确定它有效后才将其保存到配置文件中。