SUSE11升级ssh版本修复ssh漏洞

       最近一个客户方给了一个系统漏洞扫描报告,报告中涉及很多ssh漏洞,遂,上机检查openssh的版本,并计划升级ssh版本,来修复这些漏洞,因为客户这边的服务器是suse,平常使用的也不多,这里在事后留个记录。

       现场环境:SUSE11-sp3   SSH版本:OpenSSH6.2p2   SSL版本:OpenSSL 0.98j-fips

       升级准备:

下载以下对应的更新包:
#http://www.rpmfind.net/linux/rpm2html/search.php?query=&submit=Search+...&system=&arch=
libopenssl-devel-1.0.2j-38.1.x86_64.rpm
telnet-server-1.2-147.5.1.x86_64.rpm
zlib-devel-1.2.11-10.1.x86_64.rpm

#http://www.zlib.net/
zlib-1.2.11.tar.gz

#https://www.openssl.org/source/
openssl-1.0.2s.tar.gz

#https://openbsd.hk/pub/OpenBSD/OpenSSH/portable/
 openssh-8.0p1.tar.gz

         升级准备步骤:

  rpm -ivh telnet-server-1.2-147.5.1.x86_64.rpm --nodeps
  rpm -ivh libopenssl-devel-1.0.2j-38.1.x86_64.rpm --nodeps
  rpm -ivh zlib-devel-1.2.11-10.1.x86_64.rpm 

编辑/etc/xinetd.d/telnet将disable 改为yes,
重启/etc/init.d/xinetd restart 然后telnet链接是否能登陆到此服务器
若不能使用telnet登陆则注释掉/etc/pam.d/login 下的包含pam_securetty.so的行,重启xinetd服务即可。

需要注意的是:这里安装telnet是选择性的安装,避免因为升级失败,ssh断开无法进入造成不必要的麻烦,如果是虚机,或者能方便进入服务器则不需要这里的telnet安装,zlib及openssl-devel是后面需要编译的时候依赖的,故提前安装。

         升级前备份:

openssl version
whereis openssl 将查找出来的openssl路径的内容做备份

cp /etc/ssl /etc/ssl-bak
cp /usr/bin/openssl /usr/bin/openssl-bak
cp -r /usr/include/openssl /usr/include/openssl-bak
cp -r ./etc/ssh  /etc/ssh-bak
cp -r /etc/init.d/sshd  /etc/init.d/sshd-bak

        编译zlib:

cd zlib-1.2.11   
./configure --shared    
make&& make install

安装zlib是为了防止后面编译(make) openssl 的时候报错***ld:cannot find -lz collect2:ld returnet 1 exit status

        升级openssl:

#编译安装openssl
cd  ../openssl-1.0.2s  
 ./config --prefix=/usr/local/openssl --openssldir=/etc/ssl shared zlib
 make && make install


#创建openssl的链接目录
ln -s /usr/local/openssl/bin/openssl /usr/bin/openssl 
(我这里报错说文件存在,因为之前备份的时候是cp的,所以这里直接把这个/usr/bin/openssl 删掉,然后重新链接)
ln -s /usr/local/openssl/include/openssl /usr/include/openssl

echo "/usr/local/openssl/lib" >> /etc/ld.so.conf

#刷新链接库
ldconfig

#查看版本信息是否变为1.0.2s
openssl version  

        升级openssh

#停止sshd服务并卸载旧版本
service sshd stop
zypper rm openssh


#编译新版本
cd ../openssh-8.0p1
./configure --prefix=/usr --sysconfdir=/etc/ssh --with-pam --with-openssl --with-md5-passwords --mandir=/usr/share/man --with-zlib --with-ssl-engine --with-ssl-dir=/usr/local/openssl

make 
make install

#查看新安装的版本
ssh -V 
#复制启动脚本
cd contrib/suse
cp rc.sshd /etc/init.d/sshd 
chmod 755 /etc/init.d/sshd
#修改ssh配置文件,允许root登陆和密码验证
vim /etc/ssh/sshd_config
修改PermitRootLogin yes
去掉注释 PasswordAuthentication

/etc/init.d/sshd start 
#尝试登陆是否正常

#增加开机启动
chkconfig --add sshd
chkconfig sshd on

#关闭telnet服务,避免开放多余端口,也避免后期被扫出来telnet上面的漏洞
/etc/init.d/xinetd stop
编辑/etc/xinetd.d/telnet将disable 改为no

      至此,升级完成。

你可能感兴趣的:(运维那些事,基础运维)