启动/停止 iptables 脚本的正确位置是什么?目前我已将其放入 /etc/init.d 中,它有启动/停止选项。但是我不认为这是最好的位置。根据我的研究,另外两个是
/etc/network/interface -> pre-up
/etc/network/if-*.d
(这个会用启动/停止参数调用我的脚本吗?)
那么合适的地方是哪里呢?
答案1
/etc/init.d 已被弃用,因为这样会出现竞争条件——重新启动后的几秒钟内,网络已开启,但防火墙尚未开启。 不要这样做。
通常,您要做的就是根据自己的喜好设置防火墙,然后执行iptables-save > /etc/network/iptables
。现在创建/etc/network/if-pre-up.d/iptables.sh
如下内容:
#!/bin/sh
/sbin/iptables-restore < /etc/network/iptables
一定要记住让两个文件都归 root 所有,并chmod 400 /etc/network/iptables ; chmod 755 /etc/network/if-pre-up.d/iptables.sh
适当设置权限 - 非特权用户不应该能够读取你的实际防火墙规则集,更不用说更改它了,但你的脚本if-pre-up.d
必须是可执行的。 (如果您觉得有趣的话,您可以选择将其 chmod 为 700;但我不认为这真的会让任何东西更安全。)
你不需要向下脚本,只是前期准备。你具体来说需要预先设置,因为这会阻止您在没有开启防火墙的情况下让网络接口联机。