如何仅允许特定 IP 访问特定端口?

如何仅允许特定 IP 访问特定端口?

我有一个安装了数据库的中央服务器和多个调用该中央数据库的分布式服务器。出于安全原因,我希望只有那些已知的服务器才能访问中央服务器。

因此,我在这里尝试实现的是允许服务器 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

相关内容