#干货满满# 漏洞整改:ssh版本信息隐藏
  

牵网线的 33192人觉得有帮助

{{ttag.title}}
漏洞名称:SSH版本信息可被获取

描述:SSH服务允许远程攻击者获得ssh的具体信息,如版本号等等。这可能为攻击者发动 进一步攻击提供帮助。
解决方案:“修改源代码或者配置文件改变SSH服务的缺省banner。”

(1)在 /etc/下创建一个文件 ssh_banner_change,在文件中输入内容,如:welcome!
(2)修改/etc/ssh/sshd_config 文件,找到#Banner none在其下面添加以下内容:Banner
  1. /etc/ssh_banner_change
  2.       #no default banner path
  3.       #Banner none
  4. Banner /etc/ssh_banner_change
复制代码
(3)重启sshd服务
  1. systemctl restart sshd
复制代码

(4)验证是否成功
  1. telnet localhost 22
  2. 运行该命令,若是提示~bash: telnet: command not found,则安装telnet
  3. yum list telnet*              列出telnet相关的安装包
  4. yum install telnet-server          安装telnet服务
  5. yum install telnet.*           安装telnet客户端
  6. 再次运行telnet localhost 22
复制代码
发现仍然打印出类似SSH-2.0.0-OpenSSH_8.3的版本信息,说明失败,若是成功打印出类似welcome的信息则成功,无需进行以下步骤

(5)上述(4)失败的话,那就需要重新编译安装,下载安装包
  1. wget http://www.zlib.net/zlib-1.2.11.tar.gz
  2. wget https://www.openssl.org/source/openssl-1.1.1g.tar.gz
  3. wget http://ftp.openbsd.org/pub/OpenB ... penssh-8.3p1.tar.gz
复制代码
注意:
别卸载原版本的ssh,就算下载新版本后也别卸载;按资料说是:如果是远程连接升级,不能卸载旧版本,否则连接会断开。安装新版本后也不能卸载老版本,否则要到服务器直连重新安装。(未验证) 在修复前多开几个连接窗口,防止操作过程产生的影响导致再也连接不上。这样就只能去服务器直连,无法远程连接。(经后续验证后,确实会出现重新打开连接时连接不上的问题,所以务必提前多开几个连接窗口)

(6)安装 zlib-1.2.11.tar.gz
  1. #解压
  2. tar -xvf zlib-1.2.11.tar.gz
  3. #进入解压后的目录
  4. cd zlib-1.2.11
  5. #编译,该目录自己选择
  6. ./configure --prefix=/usr/local/zlib
  7. make && make install
复制代码
注意:
若是有失败,则是gcc未安装,安装gcc后重复上述步骤(下面其他解压安装时同理,若失败了,也考虑gcc的问题):
  1. yum -y install gcc automake autoconf libtool make
复制代码

(7)安装 openssl-1.1.1g.tar.gz
  1. #解压
  2. tar -xvf openssl-1.1.1g.tar.gz
  3. #进入解压后的目录
  4. cd openssl-1.1.1g
  5. #编译,该目录自己选择
  6. ./config --prefix=/usr/local/ssl -d shared
  7. make && make install
  8. #安装后查看信息是否成功
  9. ldconfig -v
复制代码

(8)安装 openssh-8.3p1.tar.gz
  1. #解压
  2. tar -xvf openssh-8.3p1.tar.gz
  3. #进入解压后的目录
  4. cd openssh-8.3p1
复制代码

#修改 version.h 文件内容
  1. 找到类似  #define SSH_VERSION “OpenSSH_8.3(视你下载的版本而定)”  ,将版本信息改为(如:welcome),即改为 #define SSH_VERSION “OpenSSH_welcome”
复制代码

#编译,该prefix目录自己选择,后面的ssl目录、zlib目录都要与前面解压时对应上
  1. ./configure --prefix=/usr/local/openssh --with-ssl-dir=/usr/local/ssl --with-zlib=/usr/local/zlib
复制代码

若是有报错,如:
  1. configure: error: *** working libcrypto not found, check config.log ***
复制代码
或者
  1. configure: error: *** OpenSSL headers missing - please install first or check config.log ***
复制代码

则将ssl目录改为其上级目录再重新尝试,如--with-ssl-dir=/usr/local/ssl改为--with-ssl-dir=/usr/local

若是还不行,则在上面改动的基础上,yum安装openssl-devel包再重新尝试,命令:
  1. yum install -y openssl-devel
复制代码
(报错参考链接:https://www.cnblogs.com/wholj/p/10944407.html

实验时在改动基础上安装openssl-devel包后成功
  1. make && make install
复制代码

#修改 /usr/local/openssh/etc/sshd_config 文件:
  1. ①找到 #PermitRootLogin prohibit-password 在下一行添加 PermitRootLogin yes,启用允许root 远程登录;
  2. ②找到 #PubkeyAuthentication yes 在下一行添加 PubkeyAuthentication yes,启用公钥身份验证;
  3. ③找到 #PasswordAuthentication yes 在下一行添加 PasswordAuthentication yes,启用隧道明文密码
复制代码

#备份 /etc/ssh 原有文件(原来没有的文件,mv 命令提示 :No such file or directory,则跳#过 mv 备份),并将新的配置复制到指定目录:
  1. mv /etc/ssh/sshd_config /etc/ssh/sshd_config.bak
  2. cp -f /usr/local/openssh/etc/sshd_config /etc/ssh/sshd_config
  3. mv /usr/sbin/sshd /usr/sbin/sshd.bak
  4. cp -f /usr/local/openssh/sbin/sshd /usr/sbin/sshd
  5. mv /usr/bin/ssh /usr/bin/ssh.bak
  6. cp -f /usr/local/openssh/bin/ssh /usr/bin/ssh
  7. mv /usr/bin/ssh-keygen /usr/bin/ssh-keygen.bak
  8. cp -f /usr/local/openssh/bin/ssh-keygen /usr/bin/ssh-keygen
  9. mv /etc/ssh/ssh_host_ecdsa_key.pub /etc/ssh/ssh_host_ecdsa_key.pub.bak
  10. cp -f /usr/local/openssh/etc/ssh_host_ecdsa_key.pub /etc/ssh/ssh_host_ecdsa_key.pub
复制代码

#重启,查看版本
  1. systemctl restart sshd
  2. sshd -v
复制代码

#启动服务后,配置开机启动(需要开机自启)
  1. systemctl enable sshd.service
复制代码

#验证是否成功
  1. telnet localhost 22
  2. 若是提示:SSH-2.0.0-OpenSSH_welcome(你自己配置的),则说明成功
复制代码

(9)xshell新开窗口连接不上
  1. setsebool -P authlogin_shadow on
复制代码

该命令具体意思还得调查,-p是永久修改的意思
运行该命令后,再次连接发现成功

(10)Xshell 连接虚拟机出现 “The remote SSH server rejected X11 forwarding request”

#修改ssh配置
  1. vi /etc/ssh/sshd_config
  2. 以及vi /usr/local/openssh/etc/sshd_config (openssh-8.3p1.tar.gz的安装目录中)
  3. 或者
  4. 单纯修改vi /usr/local/openssh/etc/sshd_config,
  5. 然后cp -f /usr/local/openssh/etc/sshd_config /etc/ssh/sshd_config
复制代码

修改内容:
  1. 将文件中的 X11Forwarding 参数改为 yes;
  2. 保存退出后即可成功,当然最好重启systemctl restart sshd
复制代码
再次连接发现无此提示
但此种解决还有问题,OpenSSH Server未启动,有待解决

打赏鼓励作者,期待更多好文!

打赏
2人已打赏

一个无趣的人 发表于 2022-6-25 16:54
  
我在社区摸爬滚打这么多年,所谓阅人无数,就算没有见过猪走路,也总明白猪肉是啥味道的。一看到楼主的气势,我就觉得楼主同在社区里灌水的那帮小混子有着本质的差别,你一定就是传说中的最强技术牛。
点线网 发表于 2022-7-13 12:52
  
楼主分享的案例很实用,具有典型性,希望有更多这样的干货供我们学习参考,非常感谢!
天青色 发表于 2023-5-25 09:51
  
楼主分享的案例很实用,具有典型性,希望有更多这样的干货供我们学习参考,非常感谢!
发表新帖
热门标签
全部标签>
每日一问
技术盲盒
干货满满
技术笔记
标准化排查
每周精选
新版本体验
GIF动图学习
产品连连看
技术晨报
安装部署配置
技术咨询
功能体验
信服课堂视频
玩转零信任
自助服务平台操作指引
用户认证
2023技术争霸赛专题
运维工具
秒懂零信任
答题自测
问题分析处理
每日一记
解决方案
社区帮助指南
通用技术
畅聊IT
专家问答
技术圆桌
在线直播
MVP
网络基础知识
升级
安全攻防
上网策略
测试报告
日志审计
流量管理
云计算知识
原创分享
sangfor周刊
VPN 对接
项目案例
SANGFOR资讯
专家分享
技术顾问
信服故事
SDP百科
功能咨询
终端接入
授权
设备维护
资源访问
地址转换
虚拟机
存储
迁移
加速技术
排障笔记本
产品预警公告
信服圈儿
S豆商城资讯
技术争霸赛
「智能机器人」
追光者计划
深信服技术支持平台
答题榜单公布
纪元平台
卧龙计划
华北区拉练
天逸直播
以战代练
山东区技术晨报
文档捉虫活动
齐鲁TV
华北区交付直播

本版版主

12
185
6

发帖

粉丝

关注

本版达人

LoveTec...

本周分享达人

新手24116...

本周提问达人