阻止SSH发布其版本号

我使用的服务器是Ubuntu 10.10。 为了确保安全性,我想编辑服务器发送给客户端的标题。

如果我通过端口22远程login到主机,它会告诉我正在运行的SSH的确切版本(SSH-2.0-OpenSSH_5.3p1 Debian-3ubuntu4)。 MySQL和Cyrus的情况是一样的。

有什么build议么? 至less对于SSH?

谢谢

几乎普遍而言,标识横幅是编译代码的一部分,没有configuration选项来改变或抑制它们。 你将不得不重新编译这些软件。

隐藏这些将无法保护您的服务器。 有更多的方法来指纹你的系统正在运行。 特别是对于SSH,版本公告是协议的一部分,并且是必需的。

http://www.snailbook.com/faq/version-string.auto.html

虽然隐藏SSH守护进程的版本号是非常困难的,但您可以轻松地隐藏Linux版本(Debian-3ubuntu4)

/etc/ssh/sshd_config下行添加到/etc/ssh/sshd_config

 DebianBanner no 

然后重启你的SSH守护进程: /etc/init.d/ssh restart或者service ssh restart

我敢肯定,你实际上不能改变版本公告。

确保sshd的最佳方法是:

  1. 更改默认端口号。
  2. 禁止根login。
  3. 强制协议2(假设它没有默认完成)。
  4. 将允许进入SSH的服务器列入白名单。

前三个可以通过修改/ etc / sshd_config来完成

第四个取决于你正在使用哪个防火墙软件。

如上所述,更改版本号是

  1. 很难做到
  2. 安全通过默默无闻
  3. 不灵活

我build议实施端口敲击。 隐藏服务器上运行的任何东西都是相当简单的技术。

这是一个很好的实现: http : //www.zeroflux.org/projects/knock

这就是我在我的服务器(其他号码)上实现的,只为那些知道“秘密敲门”的人打开SSH:

 [openSSH] sequence = 300,4000,32 seq_timeout = 5 command = /opencloseport.sh %IP% 2305 tcpflags = syn 

这将给出一个5秒的窗口,其中需要以正确的顺序接收3个SYN分组。 select彼此远离而不是连续的端口。 这样,一个portscanner不能意外打开这个端口。 这些端口不需要由iptables打开。

我所说的脚本就是这个。 它为IP发送SYN数据包打开一个特定的端口5秒钟。

 #!/bin/bash /sbin/iptables -I INPUT -s $1 -p tcp --dport $2 -j ACCEPT sleep 5 /sbin/iptables -D INPUT -s $1 -p tcp --dport $2 -j ACCEPT 

发送SYN数据包真的很痛苦,所以我使用脚本连接到我的服务器的SSH:

 #!/bin/bash knock $1 $2 knock $1 $3 knock $1 $4 ssh $5@$1 -p $6 

(很明显这里发生了什么…)

连接build立后,端口可以closures。 提示:使用密钥authentication。 否则,您需要非常快速地input您的密码。