升级openssl 和openssh服务

升级openssl 和openssh服务

前言

群里一个小伙伴要提到了升级openssh 和openssl服务,我搜了一下,大多数都提了关于低版本漏洞问题, 心想如果以后用工具检测漏洞需要批量升级怎么办?于是打算学习记录下.

升级openssl

  • 查看当前openssl版本

[root@redis-slave ~]# openssl version -a
OpenSSL 1.0.2k-fips 26 Jan 2017
built on: reproducible build, date unspecified

  • 查看安装方式

千万别卸载!     千万别卸载!   千万别卸载!

[root@redis-slave openssl-1.1.1b]# rpm -qa |grep openssl
openssl-1.0.2k-16.el7.x86_64
openssl-devel-1.0.2k-16.el7.x86_64
openssl-libs-1.0.2k-16.el7.x86_64 

注意: 系统默认的是 yum安装,千万不要卸载!     因为wget和yum 还依赖libcrypto.so.10 和 libssl.so.10 库文件 ,他们都是由1.0.2k软连接的. 升级openssl不需要卸载.卸载后yum wget用不了,如果你重启了ssh ,那么巧了ssh也用不了了…

  • 备份原来的openssl数据

mv /usr/include/openssl/ /usr/include/openssl_1.0.2k

mv /usr/bin/openssl /usr/bin/openssl_1.0.2k    

  • 下载新版本openssl

wget https://www.openssl.org/source/openssl-1.1.1b.tar.gz

tar -xvzf openssl-1.1.1b.tar.gz

cd   openssl-1.1.1b 

./config shared zlib 

make && make install 

自动生成这两个库文件

拷贝库文件到 /usr/lib64/目录,做软连接也可以

cp   /usr/lib64/

cp libcrypto.so.1.1 /usr/lib64/

  • 新数据做软连接

如果编译时候没指定openssl安装目录,默认会装在/usr/local下 ,命令文件在/usr/local/bin/openssl 

ln -s /usr/local/bin/openssl /usr/bin/openssl

ln -s /usr/local/include/openssl/ /usr/include/openssl

  • 再次检查openssl版本

wget和yum命令都可以正常用

库文件指向还是原来的1.0.2k , 升级后openssl的libssl.so.1.1  和这个不冲突.

升级openssh

卸载ssh服务,此时连接不会中断,进程还在内存中.但是如果网络抖动或者停电宕机这种意外情况出现 ,那么终端讲断开连接

为了保险起见推荐开启telnet,确认root可以连接telnet后,再卸载ssh服务,但是要记得操作完关掉telnet连接服务

这里我直接卸载了,具体操作网上有很多,大家有兴趣可以找一下.

  • 查看当前openssh版本并卸载

[root@redis-slave ~]# rpm -qa |grep openssh
openssh-clients-6.6.1p1-31.el7.x86_64
openssh-server-6.6.1p1-31.el7.x86_64
openssh-6.6.1p1-31.el7.x86_64

备注:卸载后sshd_config配置文件会在/etc/ssh/目录下自动备份.因为过一会要删除该目录,所以暂时移走.

  •  移走sshd_config

mv /etc/ssh/sshd_config.rpmsave ./sshd_config

  • 下载安装openssh

yum install -y gcc openssl-devel pam-devel rpm-build

wget http://ftp.openbsd.org/pub/OpenBSD/OpenSSH/portable/openssh-7.8p1.tar.gz

tar -xvzf openssh-7.8p1.tar.gz

./configure –prefix=/usr –sysconfdir=/etc/ssh –with-md5-passwords–with-pam –with-tcp-wrappers –with-ssl-dir=/usr/local/ssl –without-hardening

rm -rf /etc/ssh

make && make install 

备注:必须先删除/etc/ssh/ 在make 否则报错如下

 

  • 移动原来配置文件进行覆盖

mv sshd_config /etc/ssh/

备注:

此时已经新生成一个配置文件,但是一般我们都对ssh配置文件设置了自定义端口和一些安全优化,为了方便 还是用以前的配置文件

验证版本号

版本已升级至7.8,但是这里显示的openssl还是之前的1.0.2k 感觉还是有问题.

  • 拷贝开机启动文件

cp contrib/redhat/sshd.init /etc/init.d/sshd

  • 重启ssh服务,重新连接

因为新版本不支持旧版本配置文件的参数,如果看着不美观可以用sed注释. 不注释也不影响

  • 问题

参考:https://blog.csdn.net/levy_cui/article/details/53100315

总结

和风哥沟通后, 总结了 ssh这种服务尤其重要,能不升级尽量别升级,因为一不小心就会出错,线上环境一般都做密钥认证.可能你升级ssh成功,但是引发密钥认证问题.导致服务认证失败而不可用,这带来的损失无法估量.本次实验也仅仅是作为学习.线上真心不敢.

点赞

发表评论

电子邮件地址不会被公开。 必填项已用*标注

Loading...