我使用的服务器是Ubuntu 10.10。为了确保安全性,我想编辑服务器发送给客户端的横幅。
如果我通过端口22远程登录到主机,它将告诉我正在运行的SSH的确切版本(SSH-2.0-OpenSSH_5.3p1 Debian-3ubuntu4)。MySQL和Cyrus的情况相同。
有什么建议么?至少对于SSH?
谢谢
我使用的服务器是Ubuntu 10.10。为了确保安全性,我想编辑服务器发送给客户端的横幅。
如果我通过端口22远程登录到主机,它将告诉我正在运行的SSH的确切版本(SSH-2.0-OpenSSH_5.3p1 Debian-3ubuntu4)。MySQL和Cyrus的情况相同。
有什么建议么?至少对于SSH?
谢谢
Answers:
几乎所有情况下,标识标语都是已编译代码的一部分,并且没有配置选项来更改或隐藏它们。您将不得不重新编译这些软件。
虽然很难隐藏SSH守护程序的版本号,但您可以轻松隐藏linux版本(Debian-3ubuntu4)
将以下行添加到 /etc/ssh/sshd_config
DebianBanner no
并重新启动SSH守护程序:/etc/init.d/ssh restart
或service ssh restart
隐藏这些将无法保护您的服务器。还有许多方法可以识别系统正在运行的内容。特别是对于SSH,版本声明是协议的一部分,也是必需的。
我敢肯定,您实际上不能更改版本公告。
保护sshd的最佳方法是:
前三个可以通过修改/ etc / sshd_config来完成
第四点取决于您使用的防火墙软件。
如上所述,更改版本号是
我建议实施Port Knocking。这是一种相当简单的技术,可以隐藏服务器上正在运行的所有内容。
这是一个很好的实现: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数据包。选择彼此相距较远且不连续的端口。这样,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
(很明显这里发生了什么...)
建立连接后,可以关闭端口。提示:使用密钥验证。否则,您需要非常快速地键入密码。