修复生产服务器的openssh漏洞,版本升级到9.4以后,建议先整体通读一遍再按文档操作,完整记录虚拟机操作步骤
安装包下载
OpenSSH的安装包地址
https://mirrors.aliyun.com/pub/OpenBSD/OpenSSH/portable/?spm=a2c6h.25603864.0.0.6ff47250Fj1pCr
wget https://mirrors.aliyun.com/pub/OpenBSD/OpenSSH/portable/openssh-9.5p1.tar.gz
相关依赖安装
gcc pam-devel zlib-devel openssl-devel
yum -y install gcc pam-devel zlib-devel openssl-devel
备份历史文件
mv /etc/ssh/ /etc/ssh.back
mv /etc/pam.d /etc/pam.d.back
mv /usr/sbin/sshd /usr/sbin/sshd.bak
mv /usr/bin/ssh /usr/bin/ssh.bak
mv /usr/bin/ssh-keygen /usr/bin/ssh-keygen.bak
删除旧的版本
rpm -e --nodeps `rpm -qa | grep openssh`
解压安装包
tar -zxvf openssh-9.5p1.tar.gz
编译安装
编译
cd /root/openssh-9.5p1
./configure --prefix=/usr/local/openssh9p5 --sysconfdir=/etc/ssh --with-pam --with-md5-passwords --with-zlib
编译失败,错误提示:要求 OpenSSL版本 >= 1.1.1
手动安装OpenSSL1.1.1
下载OpenSSL的历史版本OpenSSL1.1.1,https://www.openssl.org/source/old/1.1.1/index.html
wget https://www.openssl.org/source/old/1.1.1/openssl-1.1.1w.tar.gz
wget https://www.openssl.org/source/old/1.1.1/openssl-1.1.1w.tar.gz --no-check-certificate
解压编译安装
按照下面命令来,安装日志太多刷掉了之前的命令没有截图,默认没有编译出.so的文件,而openssh编译的时候需要,所以需要手动添加 -d shared的选项
tar -zxvf openssl-1.1.1w.tar.gz
cd openssl-1.1.1w
./config --prefix=/usr/local/openssl -d shared
make && make install
替换旧版本
mv /usr/bin/openssl /usr/bin/openssl.bak
mv /usr/include/openssl /usr/include/openssl.bak
ln -s /usr/local/openssl/bin/openssl /usr/bin/openssl
ln -s /usr/local/openssl/include/openssl /usr/include/openssl
查看版本
openssl version
查看版本报错,提示找不到共享库,需要重新加载openssl库文件,否则执行openssl命令时会提示这个,后面编译openssh时会失败
重新加载openssl库文件
echo "/usr/local/openssl/lib" >> /etc/ld.so.conf
ldconfig -v
继续编译(指定ssl目录)
cd /root/openssh-9.5p1
./configure --prefix=/usr/local/openssh9p5 --sysconfdir=/etc/ssh --with-pam --with-ssl-dir=/usr/local/openssl --with-md5-passwords --with-zlib
安装
make && make install
复制还原
cp /usr/local/openssh9p5/sbin/sshd /usr/sbin/sshd
cp /usr/local/openssh9p5/bin/ssh /usr/bin/ssh
cp /usr/local/openssh9p5/bin/ssh-keygen /usr/bin/ssh-keygen
验证版本
ssh -V
sshd -V
修改配置
vim /etc/ssh/sshd_config
# PermitRootLogin yes:允许root用户通过SSH登录到系统
# PubkeyAuthentication yes:启用公钥身份验证
# PasswordAuthentication yes:启用密码身份验证
开机自启
cp /root/openssh9p5/contrib/redhat/sshd.init /usr/sbin/sshd
systemctl enable sshd
重启验证
#重启ssh服务
systemctl restart sshd
#重启服务器
init 6
-
重启ssh服务并重连服务器
-
重启服务器并重连服务器(此步骤可省略)
评论区