iptables 只允许来自特定端口的特定 IP

iptables 只允许来自特定端口的特定 IP

在编辑 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”,它会在应用更改后询问您一切是否正常,如果您不回答该问题,则更改将被撤消。

相关内容