本文已参与 ⌈新人创作礼⌋ 活动,一起开启掘金创作之路。
背景描述: 针对操作系统漏洞,一般漏洞扫描工具的原理是读取系统当中漏洞涉及到的软件的版本信息,然后与漏洞修复后的版本进行对比;判断认为是否存在某个漏洞。以redhat7操作系统下的openssh软件为例,Redhat官方在进行软件版本选择时,会选定OpenSSH_7.4p1版本之后只进行小版本的迭代升级,如下命令当中的openssh-7.4p1-22.el7_9.x86_64版本在修复下一批漏洞后,会变成openssh-7.4p1-22.el7_10.x86_64或者openssh-7.4p1-23.el7_9.x86_64;而OpenSSH_7.4p1这个大版本号从redhat7.0系统中至最新的redhat7.9系统中都将会维持不变。导致的结果就是漏洞工具会误判存在漏洞;无论你基于redhat官方的任何解决方案修复漏洞,在漏扫工具看来漏洞始终存在,根源在于OpenSSH_7.4p1始终都是OpenSSH_7.4p1,而未能够升级至openssh-8.3p1。
因此,有些时候不得不卸载redhat官方的openssh,安装开源版本达到规避漏洞误报的目的。
实验环境:
[root@ansible_host ~]# cat /etc/redhat-release
Red Hat Enterprise Linux Server release 7.6 (Maipo)
[root@ansible_host ~]#
[root@ansible_host ~]# ssh -V
OpenSSH_7.4p1, OpenSSL 1.0.2k-fips 26 Jan 2017
[root@ansible_host ~]#
[root@ansible_host ~]# rpm -qa openssh
openssh-7.4p1-22.el7_9.x86_64
开源Openssh软件下载地址:
#编译环境安装,因开源版本openssh为tar包,只能编译安装
yum install gcc perl openssl
#解压
tar -zxvf openssh-8.3p1.tar.gz
cd openssh-8.3p1/
./configure --prefix=/usr/ssh --sysconfdir=/usr/ssh/conf
make &&make install
验证安装,查看版本
/usr/ssh/bin/ssh -V
设置sshd开机自启
cp openssh-8.3p1/contrib/redhat/sshd.init /etc/init.d/sshd
添加sshd服务
chkconfig --add sshd
将文件复制到相应路径,否则无法启动
cp openssh-8.3p1/sshd /usr/sbin
修改配置文件sshd_config,密码认证和允许root用户远程直接登录
vi /etc/ssh/sshd_config
#PasswordAuthentication yes 行取消注释
PasswordAuthentication yes
并在下面添加:
PermitRootLogin yes
========================
systemctl restart sshd
systemctl status sshd
附:需卸载redhat官方的rpm安装包;可使用rpm或yum命令