背景
公司有几台linux服务器,漏洞扫描时 OpenSSH 用户枚举漏洞(CVE-2018-15919) 需要把openssh升级到7.9。
我之前已经做过从openssh5.X版本到7.4版本的升级。所以很多工作不需要重复做。只需要升级openssh即可。
完全离线安装,系统centos7和redhadt5.0
升级条件
如果你现在已经是7.4版本的理论上,可以直接升级openssh即可。不需要升级zlib和openssl。但不排除例外,安装前查看一下版本。
-
OpenSSL版本:目前OpenSSH7.9不支持OpenSSH1.1.x以上。否则编译的时候会报错。
-
Zlib1.1.4或1.2.1.2或更高版本
-
gcc:因为编译需要gcc
-
openssl-devel:编译时需要
rpm -qa | grep ssh
rpm -qa | grep ssl
rpm -qa | grep zlib
具体操作步骤
1.1 卸载及备份
# 备份当前openssh
mv /etc/ssh /etc/ssh.old
# 卸载当前7.4版本的openssh
make uninstall
我的是源码安装,直接卸载就好。
1.2 安装前环境配置
# openssh安装前环境配置 (要保证这里的命令都能执行正确)
# install -v -m700 -d /var/lib/sshd
# chown -v root:sys /var/lib/sshd
# groupadd -g 51 sshd
# useradd -c 'sshd PrivSep' -d /var/lib/sshd -g sshd -s /bin/false -u 51 sshd
1.3 标准源码编译安装流程
下载页面:https://cdn.openbsd.org/pub/OpenBSD/OpenSSH/portable/
tar -zxvf openssh-7.9p1.tar.gz
进入解压包执行,标准安装
./configure --prefix=/usr --sysconfdir=/etc/ssh --with-md5-passwords --with-pam --with-zlib --with-ssl-dir=/usr/local/ssl --with-privsep-path=/var/lib/sshd
make
make install
建议每一步执行完都 echo $?确认下返回值是否为0,如果出错了,就不要往下走了,找出错误。
1.4 安装后配置
# openssh安装后环境配置
# install -v -m755 contrib/ssh-copy-id /usr/bin
# install -v -m644 contrib/ssh-copy-id.1 /usr/share/man/man1
# install -v -m755 -d /usr/share/doc/openssh-7.9p1
# install -v -m644 INSTALL LICENCE OVERVIEW README* /usr/share/doc/openssh-7.9p1
1.5 配置启动项
# cp -p contrib/redhat/sshd.init /etc/init.d/sshd
# chmod +x /etc/init.d/sshd
# chkconfig --add sshd
# chkconfig sshd on
# chkconfig --list sshd
#注意:ssh连接会因重启openssh断开
1.6 结果验证
ssh -V
1.7 可选配置
# 启动openssh服务
# echo 'X11Forwarding yes' >> /etc/ssh/sshd_config
# 配置允许root用户通过ssh登录
# echo "PermitRootLogin yes" >> /etc/ssh/sshd_config
注:客户要求禁止root登录,无需修改。7.4默认禁止root登录。
后记
以上过程基本可以实现完全离线状态升级7.4到7.9。对于每个人来说环境不同,可能在编译安装的过程中会报错。务必找到问题解决掉。其他几步,即使没有完全理解意思,可以照着做,不会有坏的影响。