如何根据用于连接的 IP 来阻止端口(在 Linux 中)?

如何根据用于连接的 IP 来阻止端口(在 Linux 中)?

我想根据用于连接到我的(Linux)专用服务器的 IP 来阻止特定端口。

例如,我为我的专用服务器分配了以下IP:

192.168.0.1
192.168.0.2
192.168.0.3

第一个 IP (192.168.0.1) 将专门用于管理目的,例如 SSH、FTP、WHM 和 cPanel。这意味着我希望阻止诸如端口 80 和端口 443 之类的东西。

然后,对于另外两个 IP 地址(192.168.0.2 和 192.168.0.3),我想要阻止以下端口:21、22、2083、2087 等。这是因为这些 IP 地址仅用于为网站提供服务,而不应允许访问“管理端口”。

我认为我必须使用某种iptables规则,但我不确定是什么。

此外,如果有关系的话,我会使用CENTOS 5

答案1

我会采取相反的做法:阻止一切,只允许特定服务。在此示例中,您的eth0配置为192.168.0.1,其他两个接口用于公共服务。

*filter
:INPUT DROP [0:0]
:FORWARD DROP [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -m conntrack --ctstate INVALID -j DROP
-A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p icmp -m icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -i eth0 -p tcp -m multiport --dports 21,22,2083,2087 -m state --state NEW -j ACCEPT
-A INPUT -i ! eth0 -p tcp -m multiport --dports 80,443 -m state --state NEW -j ACCEPT
-A INPUT -j DROP
COMMIT

相关内容