![端口敲击:对扫描仪隐藏 UDP 端口](https://linux22.com/image/672772/%E7%AB%AF%E5%8F%A3%E6%95%B2%E5%87%BB%EF%BC%9A%E5%AF%B9%E6%89%AB%E6%8F%8F%E4%BB%AA%E9%9A%90%E8%97%8F%20UDP%20%E7%AB%AF%E5%8F%A3.png)
我对使用端口敲击来加强互联网上私人服务器的安全性很感兴趣。我对互联网上最常见的实现方式(尝试一系列端口)感到不满,因为它们容易受到嗅探攻击。我考虑过实现基于时间/机密的动态序列。
然后我偶然发现不倒翁它基本上满足了我的要求。唯一的问题是它现在运行的服务甚至不如 SSH 本身安全,而且同样容易被发现。这文章建议设置一条防火墙规则,丢弃所有其他传入的 UDP 数据包,而不是拒绝,这样 UDP 端口扫描器就会认为所有端口都打开了(而且需要很长时间)。我认为这是不好的做法。
相反,我想接受 Tumbler 端口上的数据包,但仍发送 ICMP 端口不可达消息,以便看起来端口已关闭。我该怎么做?我看不出使用 iptables 的方法。
有人可能会说,如果这是可能的,那么敲门就根本不需要了。这对于保护简单的端口扫描器来说是正确的,但对于防止对随机端口的 SSH 连接尝试来说则不是。
总而言之,我想要的是(例如):
1 Tumbler 或类似监听 (UDP 5678)
2 sshd 正在监听(TCP 5679)
3 IPTABLES 接受数据包到(UDP 5678),但仍然发送 ICMP 不可达端口(因此 UDP 5678 对扫描器来说看起来是关闭的/不感兴趣的)
4 IPTABLES 拒绝所有其他
5 成功敲入 Tumbler(保持沉默)后,IPTABLES 将接受与 SSH 的连接(Tumbler 无论如何都会这样做)
我该如何做第 3 点?谢谢!
答案1
您将无法在应用程序级别实现这一点(即通过使用 Tumbler)。它必须在 iptables 本身中完成,通过使用 pknock 匹配xtables-addons 内核扩展。它们还支持通过单个 UDP 端口进行安全加密 SPA(单数据包授权),因此如果您可以访问内核,它们比 tumbler 或应用程序级别的任何东西都更可取。
通过谷歌搜索您的操作系统指南来构建它并添加到您的内核。
https://www.howtoforge.com/xtables-addons-on-centos-6-and-iptables-geoip-filtering- 例如这个适用于 CentOS 6...