从 SSH 中删除识别信息

从 SSH 中删除识别信息

当我对我的系统进行检查时,nmap -sV 127.0.0.1 -p 22 我得到了以下信息:

SF-端口22-TCP:V=4.62%I=7%D=11/9%时间=4916402C%P=i686-pc-linux-gnu%r(NULL,2 SF:7,“SSH-2.0-OpenSSH_5.1p1\x20Debian-3ubuntu1\r\n”);

我该如何链接这两条信息?i686-pc-linux-gnuSSH-2\.0-OpenSSH_5\.1p1\x20Debian-3ubuntu1

答案1

我认为尝试删除标头并不是增加一点安全性的最佳方法。它实际上只是通过隐蔽性来实现安全性,但作用不大。

相反,我建议你研究一下端口敲击。Linux 的描述见此处文章。我倒是觉得你的偏执一面会对此感到高兴。基本上,除非扫描仪尝试以特定顺序扫描特定端口(可以说是秘密敲门),否则扫描将显示端口已关闭。

您还可以阻止表现出扫描行为的人,这是本文中提到的一些解决方案serverfault 帖子

答案2

您无法(轻松/安全地)删除它,它是 SSH 协议的一部分,用于确定 sshd 支持哪个版本的 SSH,应将其保留在原处。也就是说,您可以使用您最喜欢的十六进制编辑器将字符串更改为另一个长度相同的字符串。您至少需要:SSH-2.0 存在。我真的不建议您这样做,因为您会破坏 sshd 的校验和,并且每当您更新 sshd 包时它都会被替换。再次更改它不会有任何效果。

通过 Telnet 连接到端口 22 还将显示以下信息:

$ telnet localhost 22
Trying ::1...
Connected to localhost.
Escape character is '^]'.
SSH-2.0-OpenSSH_5.3p1 Debian-3ubuntu3

答案3

NMAP 根据一定程度的猜测来确定该信息。如果您的 SSHD 响应 NMAP 探测根本然后 NMAP 将根据其数据库检查该响应,并猜测您正在运行的系统。

探测非常复杂;例如,它可能会尝试在端口上启动 SSH 连接的几种变体,以查看哪些版本可以识别。它可能会尝试引发错误消息,或者可能只是检查“hello”屏幕。

阻止 NMAP 探测的最可靠方法是简单地在防火墙上阻止所有 NMAP 探测,并将允许 SSH 进入您的机器的服务器列入白名单。

相关内容