我使用的服务器是Ubuntu 10.10。 为了确保安全性,我想编辑服务器发送给客户端的标题。
如果我通过端口22远程login到主机,它会告诉我正在运行的SSH的确切版本(SSH-2.0-OpenSSH_5.3p1 Debian-3ubuntu4)。 MySQL和Cyrus的情况是一样的。
有什么build议么? 至less对于SSH?
谢谢
几乎普遍而言,标识横幅是编译代码的一部分,没有configuration选项来改变或抑制它们。 你将不得不重新编译这些软件。
隐藏这些将无法保护您的服务器。 有更多的方法来指纹你的系统正在运行。 特别是对于SSH,版本公告是协议的一部分,并且是必需的。
虽然隐藏SSH守护进程的版本号是非常困难的,但您可以轻松地隐藏Linux版本(Debian-3ubuntu4)
/etc/ssh/sshd_config下行添加到/etc/ssh/sshd_config
DebianBanner no
然后重启你的SSH守护进程: /etc/init.d/ssh restart或者service ssh restart
我敢肯定,你实际上不能改变版本公告。
确保sshd的最佳方法是:
前三个可以通过修改/ etc / sshd_config来完成
第四个取决于你正在使用哪个防火墙软件。
如上所述,更改版本号是
我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您的密码。