在编辑 iptables 时我总是感到紧张,因为我知道阻止所有到服务器的流量是多么简单,当你的服务器位于云端时,这是一个相当大的问题。
这些是正确的一系列命令吗?
iptables -A INPUT -p tcp --dport 123 -s 1.2.3.4 -j ACCEPT
iptables -A INPUT -p tcp --dport 123 -s 5.6.7.8 -j ACCEPT
iptables -A INPUT -p tcp --dport 123 -j DROP
iptables-save
答案1
这并不能回答你的问题——其他人在这方面做得很好——但它确实解决了你的另一个担忧:将自己锁定在远程服务器之外。每当我iptables
在系统上进行重大更改时,我总是检查它atd
是否正在运行,然后将一个at
作业放在大约 10 分钟后以关闭防火墙,例如
at now + 10 minutes
at> service iptables stop
at> ^D
这样我就知道,如果我真的搞砸了,把自己锁在外面,十分钟后我就能回来解决问题。如果我完成了工作,而且没有搞砸,我可以用 找到那项工作,atq
并在它运行之前用 删除它atrm
。
答案2
它应该可以工作,但可以改进。你还没有发布你的默认 INPUT 策略是什么。如果它是 ACCEPT,那么你的命令应该可以工作,尽管不是最推荐的那个。如果它是 DROP,那么你不需要前面的行iptables-save
。
对于 iptables 以及任何其他防火墙,最推荐的策略是删除所有内容,然后明确允许您想要允许的端口/协议。因此,您可以从以下方式开始 -
iptables -A INPUT -j DROP
然后明确允许发往端口 123/tcp 的传入流量
iptables -A 输入 -p tcp --dport 123 -s 1.2.3.4 -j 接受
iptables -A 输入 -p tcp --dport 123 -s 5.6.7.8 -j 接受
答案3
在 debian iptables 包中,有“/usr/sbin/iptables-apply”,它会在应用更改后询问您一切是否正常,如果您不回答该问题,则更改将被撤消。