如何使用 iptables 阻止任意非标准端口上的 SSH 连接?
无法区分第四层非标准端口上的 SSH 连接,因为源端口和目标端口都是任意的。
如果我理解正确的话,必须使用二进制匹配来实际查看数据包的头以检测 SSH 握手。
我发现这这篇文章深入探讨了字节匹配,但似乎有些过时,因为从较新版本的 iptables 的角度来看,作者使用的命令并不完整。作者似乎只检查已建立的流量,因此寻找不同的字节序列。
本质上规则应该是这样的:
iptables -t nat -a PREROUTING -p tcp -m --state NEW \! -f -m u32 --u32 "???" -j DROP
为了使规则匹配新的 SSH 连接,u32 部分中应该包含哪些值?