最近客户要做安全整改,出现了许多SSH的CVE-2024-6387 OpenSSH Server 远程代码执行漏洞,其他同行最近也在做这个漏洞的处理,我查了其他网上的资料,期间还遇到升级后SFTP无法使用的问题,最后总结了一个保姆教程
下载软件
我把安装包下载到了root目录下,也就是/root
cd ~
wget https://www.openssl.org/source/old/1.1.1/openssl-1.1.1w.tar.gz
wget https://cdn.openbsd.org/pub/OpenBSD/OpenSSH/portable/openssh-9.8p1.tar.gz
如果是离线环境还要提前准备离线yum包或系统镜像
yum -y install zlib zlib-devel gcc openssl-devel pam-devel make build-essential gcc-c++ libtool openssl openssl-devel unzip net-tools vim telnent tree pstree cmake telnet zip xz
查看现在的SSH版本:ssh -V
,结果一般都是这样的:
[root@ceshi0826 ~]# ssh -V
OpenSSH_7.4p1, OpenSSL 1.0.2k-fips 26 Jan 2017
安装OpenSSL
卸载原有OpenSSL
yum remove openssl
编译安装OpenSSL
tar -xzvf openssl-1.1.1w.tar.gz
cd openssl-1.1.1w/
./config --prefix=/usr
make && make install
cd ..
查看openssl版本:openssl version
[root@ceshi0826 ~]# openssl version
OpenSSL 1.1.1w 11 Sep 2023
安装OpenSSH
备份配置文件(注意备份文件路径根据实际情况选择,后面会用到)
mkdir -p /bak/ssh
cp -ra /etc/ssh/sshd_config /bak/ssh/
cp -ra /etc/pam.d/sshd /bak/ssh/
卸载原来的openssh
rpm -e --nodeps `rpm -qa | grep openssh`
rpm -qa openssh
修改配置文件权限
chmod 600 /etc/ssh/ssh_host_rsa_key /etc/ssh/ssh_host_ecdsa_key /etc/ssh/ssh_host_ed25519_key
编译安装文件
cd ~
tar -zxvf openssh-9.8p1.tar.gz
cd openssh-9.8p1
./configure --prefix=/usr/local/openssh --exec-prefix=/usr --sysconfdir=/etc/ssh --with-md5-passwords --with-pam --with-zlib --with-selinux --with-tcp-wrappers --with-ssl-dir=/usr/local/ssl --without-hardening
# 如果编译报错可以改成
./configure --prefix=/usr/local/openssh --exec-prefix=/usr --sysconfdir=/etc/ssh --with-md5-passwords --with-pam --with-zlib --with-selinux --with-tcp-wrappers --with-ssl-dir=/usr/local --without-hardening
make && make install
拷贝新生成的sshd
cp contrib/redhat/sshd.init /etc/init.d/sshd
chmod u+x /etc/init.d/sshd
再把配置文件替换成之前备份的文件,直接覆盖
cp -ar /bak/ssh/sshd_config /etc/ssh/
cp -ar /bak/ssh/sshd /etc/pam.d/
修改配置
把安装包的文件夹移动到新的ssh安装目录下,因为之前旧的ssh和sftp已经删掉了,安装包里面包含了新的sftp,安装包移过去以后再修改一下/etc/ssh/sshd_config
里sftp的路径,不然以后用不了SFTP
mv /root/openssh-9.8p1 /usr/local/openssh/
vim /etc/ssh/sshd_config
Subsystem sftp /usr/local/openssh/openssh-9.8p1/sftp-server
如果配置文件里的允许root远程登录是注释状态,也需要把注释去掉,不然可能出现登录不上的问题
PermitRootLogin yes
添加ssh到开机启动项,重启sshd服务
chkconfig --add sshd
chkconfig sshd on
systemctl restart sshd
看一下现在的版本
[root@ceshi0826 ~]# ssh -V
OpenSSH_9.8p1, OpenSSL 1.1.1w 11 Sep 2023