OpenSSH升级9.8p1保姆教程
最近客户要做安全整改出现了许多SSH的CVE-2024-6387 OpenSSH Server远程代码执行漏洞其他同行最近也在做这个漏洞的处理我查了其他网上的资料期间还遇到升级后SFTP无法使用的问题最后总结了一个保姆教程下载软件我把安装包下载到了root目录下也就是/rootcd~wgethttps://www.openssl.org/source/old/1.1.1/openssl-1.1.1w.tar.gzwgethttps://cdn.openbsd.org/pub/OpenBSD/OpenSSH/portable/openssh-9.8p1.tar.gz如果是离线环境还要提前准备离线yum包或系统镜像yum-yinstallzlib zlib-devel gcc openssl-devel pam-develmakebuild-essential gcc-c libtool openssl openssl-develunzipnet-toolsvimtelnent tree pstree cmake telnetzipxz查看现在的SSH版本ssh -V结果一般都是这样的[rootceshi0826 ~]# ssh -V OpenSSH_7.4p1, OpenSSL 1.0.2k-fips 26 Jan 2017启动telnet登录可选卸载SSH后再开新窗口就连不上了但是当前窗口可以连所以在重新装好SSH前不要关闭这个窗口保险起见可以开启服务器的telnet登录功能保证如果SSH重装失败或在这期间出现网络断开的情况后还可以通过telnet来登录服务器# 安装telnet-server如果yum安装不了可以在文档附件里下载rpm包安装yuminstall-ytelnet-serverrpm-ivhtelnet-server-0.17-66.el7.x86_64.rpm# 开启telnet-serversystemctl start telnet.socket# 创建一个普通用户并修改密码如果已经有普通用户就不用创建了addgreatmappasswdgreatmap在其他服务器上telnet登录测试会提示要你输入用户和密码默认不能用root远程登录所以可以用普通用户登录后再使用su切换成root用户telnet 服务器地址23安装OpenSSL如果你的漏洞里没有ssl且你服务器的openssl版本在1.1.1以上可以选择跳过这个步骤卸载原有OpenSSLyum remove openssl编译安装OpenSSLtar-xzvfopenssl-1.1.1w.tar.gzcdopenssl-1.1.1w/ ./config--prefix/usrmakemakeinstallcd..查看openssl版本openssl version[rootceshi0826 ~]# openssl version OpenSSL 1.1.1w 11 Sep 2023安装OpenSSH备份配置文件(注意备份文件路径根据实际情况选择后面会用到)mkdir-p/bak/sshcp-ra/etc/ssh/sshd_config /bak/ssh/cp-ra/etc/pam.d/sshd /bak/ssh/卸载原来的opensshrpm-e--nodepsrpm-qa|grepopensshrpm-qaopenssh修改配置文件权限chmod600/etc/ssh/ssh_host_rsa_key /etc/ssh/ssh_host_ecdsa_key /etc/ssh/ssh_host_ed25519_key编译安装文件cd~tar-zxvfopenssh-9.8p1.tar.gzcdopenssh-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如果编译报错说找不到ssl可以改成这种试一下这种不行可以划到文章最下面看下“可能遇到的问题”编译顺利的就不用管这里继续安装./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-hardeningmakemakeinstall继续安装拷贝新生成的sshdcpcontrib/redhat/sshd.init /etc/init.d/sshdchmodux /etc/init.d/sshd再把配置文件替换成之前备份的文件直接覆盖cp-ar/bak/ssh/sshd_config /etc/ssh/cp-ar/bak/ssh/sshd /etc/pam.d/修改配置把安装包的文件夹移动到新的ssh安装目录下因为之前旧的ssh和sftp已经删掉了安装包里面包含了新的sftpmv/root/openssh-9.8p1 /usr/local/openssh/安装包移过去以后再修改一下/etc/ssh/sshd_config里sftp的路径不然以后用不了SFTPvim/etc/ssh/sshd_configSubsystem sftp /usr/local/openssh/openssh-9.8p1/sftp-server如果配置文件里的允许root远程登录是注释状态也需要把注释去掉不然可能出现登录不上的问题PermitRootLogin yes添加ssh到开机启动项重启sshd服务chkconfig--addsshdchkconfigsshd on systemctl restart sshd看一下现在的版本[rootceshi0826 ~]# ssh -V OpenSSH_9.8p1, OpenSSL 1.1.1w 11 Sep 2023可能遇到的问题如果遇到安装ssh的时候找到的ssl包不对服务器上存在多个ssl时可以这样# 重新安装一个ssl指定一下安装目录cdopenssl-1.1.1w/ ./config--prefix/usr/local/opensslmakemakeinstall# 清除之前可能设置的环境变量unsetCFLAGSunsetLDFLAGSunsetCPPFLAGS# 强制指定头文件和库文件路径exportCFLAGS-I/usr/local/openssl/includeexportCPPFLAGS-I/usr/local/openssl/includeexportLDFLAGS-L/usr/local/openssl/lib -Wl,-rpath,/usr/local/openssl/lib# 安装ssh编译的时候指定这个新的ssl安装目录./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/openssl --without-hardeningmakemakeinstall