openssh升级
根据漏扫报告显示,原版本openssh存在漏洞,需将openssh升级到最新版解决,目前openssh最新版本为9.8
升级新版openssh时,需事先安装openssl,zlib作为依赖:
插件 | 版本 |
openssh | 9.8p1 |
openssl | 1.1.1b |
zlib | 1.2.11 |
下载安装包
openssh:https://cdn.openbsd.org/pub/OpenBSD/OpenSSH/portable/openssh-9.8p1.tar.gz
openssl:https://www.openssl.org/source/old/1.1.1/openssl-1.1.1b.tar.gz
zlib:https://zlib.net/zlib-1.2.11.tar.gz
上传到服务器的/opt/openssh目录中,如果没有需要建立
进行备份
创建备份目录/文件存放目录
]# mkdir /opt/openssh9.8p1/backup/{ssh_bin_bak,log,sshd_bin_bak}
复制以下目录/文件
]# cp -r /etc/ssh/ /opt/openssh9.8p1/backup/ssh_bak ]# cp -r ~/.ssh/ /opt/openssh9.8p1/backup/root_ssh_bak ]# cp /var/log/audit/audit.log /opt/openssh9.8p1/backup/log/ ]# cp /usr/bin/ssh* /opt/openssh9.8p1/backup/ssh_bin_bak/ ]# cp /usr/sbin/sshd /opt/openssh9.8p1/backup/sshd_bin_bak/
安装openssl
执行安装步骤
]# cd /opt/openssh9.8p1 ]# tar xvf openssl-1.1.1b.tar.gz ]# ./config --prefix=/usr/local/openssl1.1.1b ]# make ]# make install
设置环境变量
]# export LD_LIBRARY_PATH=/usr/local/openssl1.1.1b/lib:$LD_LIBRARY_PATH ]# echo 'export LD_LIBRARY_PATH=/usr/local/openssl1.1.1b/lib:$LD_LIBRARY_PATH' >> /etc/profile ]# source /etc/profile
建立库文件软链接
]# ln -s /usr/local/openssl1.1.1b/lib/libcrypto.so.1.1 /usr/lib/ ]# ln -s /usr/local/openssl1.1.1b/lib/libcrypto.so.1.1 /usr/lib64/
查看安装版本:
安装zlib
]# cd /opt/openssh9.8p1 ]# tar xvf openssh-9.8p1.tar.gz ]# cd openssh-9.8p1 ]# ./configure --prefix=/usr/local/zlib1.2.11 ]# make ]# make install
安装openssh
指定编译安装参数:
]# ./configure --prefix=/usr --sysconfdir=/etc/ssh --with-ssl-dir=/usr/local/openssl1.1.1b --with-zlib=/usr/local/zlib1.2.11
--with-ssl-dir:openssl所在目录,--with-zlib:zlib所在目录
执行make,并检查校验新版本的openssh与当前配置文件是否匹配
]# make ]# /opt/openssh9.8p1/openssh-9.8p1/sshd -t
如果有报错,需将新版本不支持的参数从配置文件中删除掉
例如:GSSAPIAuthentication,GSSAPICleanupCredentials,UsePAM,这些参数在新版openssh中都不在支持
修改完毕后,再次检查,检查无误后,执行下一步:
]# make install
复制ssh-copy-id脚本到bin目录下,脚本路径是源码包的contrib/ssh-copy-id
]# cp /opt/openssh9.8p1/openssh-9.8p1/contrib/ssh-copy-id /usr/local/bin/
重启sshd
]# systemctl restart sshd
查看openssh版本
升级回滚
如果新版openssh有问题,比如无法进行远程登录,则需进行回滚,回滚恢复原备份文件即可
]# cp backup/ssh_bin_bak/ssh* /usr/bin ]# cp backup/sshd_bin_bak/sshd /usr/sbin ]# cp -r backup/ssh_bak /etc/ssh
升级脚本
放到与源码包同一目录中执行即可
注意,openssh比较特殊,升级失败可能会导致无法登录,建议进行远程连接升级时,多开几个远程连
接窗口,且设置连接不断开,防止升级失败后与主机远程连接断开后,无法到服务器上排查问题,有条
件可以做个系统快照。