无法为 OpenVPN 用户阻止特定端口

无法为 OpenVPN 用户阻止特定端口

板载 CentOS7.6 + iptables + OpenVPN2.4 (UDP proto)。

问题重复了,但似乎很简单:我只想为我的 VPN 用户阻止某些特定端口。所以我做了

iptables -I FORWARD -p udp -m state --state NEW,RELATED,ESTABLISHED -m udp -m multiport --dports 445,3333,5228,17890 -j DROP
service iptables save
service iptables restart

然后执行iptables -LFORWARD链包含我添加的规则。

完整的 iptables 设置如下:

iptables -t nat -A POSTROUTING -s 10.8.0.0/24 ! -d 10.8.0.0/24 -j SNAT --to 111.222.333.444
iptables -I INPUT -p udp --dport 1194 -j ACCEPT
iptables -I FORWARD -s 10.8.0.0/24 -j ACCEPT
iptables -I FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -I FORWARD -p udp -m state --state NEW,RELATED,ESTABLISHED -m udp -m multiport --dports 445,3333,5228,17890 -j DROP

但后来我尝试使用

tcptrack -i eth0

我仍然可以看到正在创建到被阻止端口的连接。

我做错了什么?

答案1

我不知道为什么,但这条规则解决了这个问题

iptables -I FORWARD -s 10.8.0.0/24 -p tcp -m multiport --dports 445,3333,5228,17890  -j DROP

答案2

我认为答案是,仅仅因为您已将 OpenVPN 配置为使用 udp,并不能阻止其他人向您发送 tcp 数据包。请注意,您尝试的第一条规则仅阻止 udp;有效的第二条规则阻止 tcp。

顺便说一句,我更喜欢使用 iptables -A 而不是 iptables -I,这样我编写规则的顺序就与执行规则的顺序相同。(无论如何,iptables -L 都会按执行顺序列出规则。)在我的第一个(已删除的)答案中,我被您使用 -I 而不是 -A 绊倒了,因此将您的规则执行顺序向后解释。

参考:https://linux.die.net/man/8/iptables

相关内容