Ubuntu 阻止除一个端口之外的 ip 访问

Ubuntu 阻止除一个端口之外的 ip 访问

如何阻止除一个端口之外的所有端口(例如9999从特定 IP 访问服务器)192.168.0.1

iptables -A INPUT -s 192.168.0.1 -j DROP将阻塞所有端口。

是否可以阻止特定 IP 的端口范围?

答案1

是的,当然有!

iptables规则按顺序适用。因此,您可以首先为您的链制定非常严格的策略,然后允许特定端口上的流量。

您可以首先设置默认的 CHAIN 策略,例如:(默认情况下它们设置为 ACCEPT)

iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT DROP

通过这种方式,您可以配置每个链来拒绝任何内容。然后,您可以根据需要仅允许一个端口或某个网段的流量:

iptables -A INPUT -i eth0 -p tcp --dport 80 -m state --state NEW,ESTABLISHED -j ACCEPT

INPUT是您要添加规则的 CHAIN 的名称,-i用于指定规则适用于哪个接口(eth0在示例中)-p用于指定协议 ( tcp) 在本例中,--dport您可以指定允许流量在哪个端口上,-m state指示防火墙查看连接状态,这是为了让您能够使用--state NEW,ESTABLISHED允许连接的两种状态,最后-j ACCEPT告诉防火墙将接受与前面描述的规则匹配的连接。

由于您的最后一个问题询问 IP 和/或端口范围,因此完成此操作的方法是使用--dport 80:10010(规则适用于从 80 到 10010 的端口)以及您可以使用的 IP 范围,-m iprange --src-range 192.168.1.100-192.168.1.200因此该规则将适用于来自任何地址的任何流量。 IP 范围为 192.168.1.100 - 192.168.1.200

完整的工作示例:

iptables -A INPUT -i eth0 -p tcp --dport 80:10010 -m iprange --src-range 192.168.1.100-192.168.1.200 -m state --state NEW,ESTABLISHED -j ACCEPT

相关内容