我有一个安装了数据库的中央服务器和多个调用该中央数据库的分布式服务器。出于安全原因,我希望只有那些已知的服务器才能访问中央服务器。
因此,我在这里尝试实现的是允许服务器 192.168.1.5 和 192.168.2.6 访问端口 5432。
iptables -A INPUT -s 192.168.1.5,192.168.2.6 -d ??.??.??.?? -p tcp --dport 5432 -j ACCEPT
它是否正确?
我不明白的是指定目的地的选项。INPUT 上的目标始终是服务器本身,不是吗?那么为什么它是可配置的?我必须定义它吗?还是通过省略它,它会自动指向同一台服务器?
答案1
首先,您需要将规则分为两条规则(我尝试使用一个指定两个 IP 的命令,似乎可行)。最终结果是两条规则,如下所示:
iptables -A INPUT -s 192.168.1.5 -p tcp --dport 5432 -j ACCEPT
iptables -A INPUT -s 192.168.2.6 -p tcp --dport 5432 -j ACCEPT
其次,您可以省略 ,-d
只匹配任何 IP。由于这是INPUT
链,因此需要匹配其中一个机器 IP。
第三,不要忘记制定DROP
规则,因为如果您只有这两条规则ACCEPT
作为链的默认策略INPUT
,则将允许所有连接。
此外,您可能需要允许RELATED
数据ESTABLISHED
包双向流动。这取决于您的规则(允许什么和丢弃什么)。规则如下:
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT