欢迎来到starnight_cyber的博客

如何隐藏SSH的版本

  本文以在 Ubuntu 18.04 上为例,演示如何隐藏 OpenSSH 的版本信息。

Step 1: 查看 OpenSSH 的版本信息

# whereis sshd
sshd: /usr/sbin/sshd /usr/share/man/man8/sshd.8.gz
# /usr/sbin/sshd -v
unknown option -- v
OpenSSH_7.6p1 Ubuntu-4ubuntu0.3, OpenSSL 1.0.2n  7 Dec 2017
usage: sshd [-46DdeiqTt] [-C connection_spec] [-c host_cert_file]
            [-E log_file] [-f config_file] [-g login_grace_time]
            [-h host_key_file] [-o option] [-p port] [-u len]

使用 nmap 进行外部扫描。

# nmap -p 22 -sV -v -n 192.168.2.167
Starting Nmap 7.91 ( https://nmap.org ) at 2021-02-08 19:14 CST
NSE: Loaded 45 scripts for scanning.
Initiating Ping Scan at 19:14
...

PORT   STATE SERVICE VERSION
22/tcp open  ssh     OpenSSH 7.6p1 Ubuntu 4ubuntu0.3 (Ubuntu Linux; protocol 2.0)
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel

可以看到版本为:OpenSSH 7.6p1

Step 2: 替换版本信息

记住,一定要先备份,以免操作失误,尤其是在远程操作的时候。

# cp /usr/sbin/sshd sshd.bak      # 【注】备份
# cp /usr/sbin/sshd /usr/sbin/sshd.bak
# ls /usr/sbin/sshd*
/usr/sbin/sshd  /usr/sbin/sshd.bak
# strings /usr/sbin/sshd | grep OpenSSH_7.6
OpenSSH_7.6p1 Ubuntu-4ubuntu0.3     <== Nmap 探测展示的结果是这一行
OpenSSH_7.6p1
OpenSSH_7.6

替换 OpenSSH 的版本,使用 sed 命令,语法如下

sed 's/原字符串/替换字符串/'
# sed -i 's/OpenSSH_7.6/OpenSSH_x.x/g' /usr/sbin/sshd
# /usr/sbin/sshd -v
unknown option -- v
OpenSSH_x.xp1 Ubuntu-4ubuntu0.3, OpenSSL 1.0.2n  7 Dec 2017
usage: sshd [-46DdeiqTt] [-C connection_spec] [-c host_cert_file]
            [-E log_file] [-f config_file] [-g login_grace_time]
            [-h host_key_file] [-o option] [-p port] [-u len]

可以看到,本地提示的版本信息已经变了。

【注】在替换版本的时候,如果替换为任意字符,可能会导致 core dump, 具体原因不明,可以参考上面的做法,隐藏具体版本信息即可。

Step 3: 验证

# nmap -p 22 -sV -v -n 192.168.2.167

 查看 /usr/sbin/sshd 文件内容,发现已经更改。

 以上!

posted @ 2021-02-08 19:31  starnight_cyber  阅读(2411)  评论(0编辑  收藏  举报