![Ubuntu 阻止除一个端口之外的 ip 访问](https://linux22.com/image/105120/Ubuntu%20%E9%98%BB%E6%AD%A2%E9%99%A4%E4%B8%80%E4%B8%AA%E7%AB%AF%E5%8F%A3%E4%B9%8B%E5%A4%96%E7%9A%84%20ip%20%E8%AE%BF%E9%97%AE.png)
如何阻止除一个端口之外的所有端口(例如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