OpenSSL版本信息隐藏

SSH服务允许远程攻击者获得ssh的具体信息,如版本号等等。这可能为攻击者发动进一步攻击提供帮助。

解决方法

  1. 添加banner方法
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
#创建ssh_banner_change,输入提示信息
#在sshd_config文件添加banner内容
echo "hi !" > /etc/ssh_banner_change
#####################################################
#no default banner path
#Banner none
Banner /etc/ssh_banner_change
#重启服务
#验证
Trying ::1...
Connected to localhost.
Escape character is '^]'.
SSH-2.0-OpenSSH_7.4
还是可以看到版本信息
1
2
3
4
5
#查看sshd信息
 strings /usr/sbin/sshd |grep OpenSSH
#修改显示信息
sed -i 's/OpenSSH_7.4/hi !/g' /usr/sbin/sshd
#重启服务 ,报错。。。。

3.重新编译安装

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
#编译安装openssl
#链接 https://github.com/openssl/openssl/tags
./config --prefix=/usr/local/ssl -d shared 
make && make install
#安装后查看信息是否成功
ldconfig -v
#OpenSSH官网下载,注意下载p1结尾的编译安装包
#https://openbsd.hk/pub/OpenBSD/OpenSSH/portable/
#修改openssh->version.h文件内容
/* $OpenBSD: version.h,v 1.90 2021/04/16 03:42:00 djm Exp $ */
#define SSH_VERSION     "Welcome!" #改成要显示的内容
#define SSH_PORTABLE    "p1"
#define SSH_RELEASE     SSH_VERSION SSH_PORTABLE
#编译安装
./configure --prefix=/usr/local/openssh --with-ssl-dir=/usr/local/
#--with-zlib 指定zlib库的安装目录
#--with-ssl-engine启动OpenSSL的engine支持
#--with-ssl-dir 指定OpenSSL安装目录
make && make install
#配置sshd_config文件
##########################################################
#备份文件,移动新配置文件
mv /etc/ssh/sshd_config /etc/ssh/sshd_config.bak
cp -f /usr/local/openssh/etc/sshd_config /etc/ssh/sshd_config
mv /usr/sbin/sshd /usr/sbin/sshd.bak
cp -f /usr/local/openssh/sbin/sshd /usr/sbin/sshd
mv /usr/bin/ssh /usr/bin/ssh.bak
cp -f /usr/local/openssh/bin/ssh /usr/bin/ssh 
mv /usr/bin/ssh-keygen /usr/bin/ssh-keygen.bak
cp -f /usr/local/openssh/bin/ssh-keygen /usr/bin/ssh-keygen
mv /etc/ssh/ssh_host_ecdsa_key.pub /etc/ssh/ssh_host_ecdsa_key.pub.bak
cp -f /usr/local/openssh/etc/ssh_host_ecdsa_key.pub /etc/ssh/ssh_host_ecdsa_key.pub
#重启服务,验证
Trying XXXX...
Connected to XXXX.
Escape character is '^]'.
SSH-2.0-Welcome!!!