记录Linux openssl及ssh升级记录
CVE-2018-15473 漏洞
漏洞描述
中危漏洞
OpenSSH(OpenBSD Secure Shell)是OpenBSD计划组所维护的一套用于安全访
问远程计算机的连接工具。该工具是SSH协议的开源实现,支持对所有的传输进行加
密,可有效阻止窃听、连接劫持以及其他网络级的攻击。
OpenSSH 7.7及之前版本中存在用户枚举漏洞,该漏洞源于程序会对有效的和无效的
用户身份验证请求发出不同的响应。攻击者可通过发送特制的请求利用该漏洞枚举用
户名称。
漏洞原因
由于linux ssh版本过低导致,以下是我的版本。
修复过程
根据漏扫建议升级OpenSSH-7.8已经修复这个安全问题,我想不如干脆升级到8.8p1版本算了。
升级过程
本次升级操作系统为CentOS 7.5
OpenSSL 1.0.1升级至 OpenSSL 3.0.1
OpenSSH 7.4p1 升级至 OpenSSH 8.8p1
由于是服务器是没有互联网,只能离线升级
准备工作
准备 OpenSSH_8.8p1安装包,OpenSSL 3.0.1安装包,建议听劝升级SSH前先把SSL升级了。 我只准备了这两个安装包。
下载地址
OpenSSL 3.0.1
OpenSSH 8.8p1,使用官网镜像
openssl安装
tar -zxvf openssl-3.0.1.tar.gz
cd openssl-3.0.1
./config shared zlib enable-fips --prefix=/usr/local/ssl
# 如果缺少zlib 就用 ./config --prefix=/usr/local/ssl
make && make install
也可以分开执行make(编译) 再执行make install(安装)
如果编译OpenSSL时报错,请查看下方链接。
编译OpenSSL时报错,Can‘t locate IPC/Cmd.pm in @INC
IPC/Cmd下载地址
IPC/Cmd下载地址
rpm -ivhU * --nodeps --force
备份原来的OpenSSL
mv /usr/bin/openssl /usr/bin/openssl.bak
mv /usr/include/openssl /usr/include/openssl.bak
创建软连接
因为源码安装默认安装的位置是 /usr/local/ssl 需要将创建软链接到系统位置:
ln -s /usr/local/ssl/bin/openssl /usr/bin/openssl
ln -s /usr/local/ssl/include/openssl /usr/include/openssl
修改lib库
echo '/usr/local/ssl/openssl/lib64' > /etc/ld.so.conf.d/openssl.conf
ldconfig
查看OpenSSL版本
[root@centos7 openssl-3.0.1]# openssl version -a
OpenSSL 3.0.1 14 Dec 2021 (Library: OpenSSL 3.0.1 14 Dec 2021)
built on: Wed Dec 29 07:20:46 2021 UTC
platform: linux-x86_64
options: bn(64,64)
compiler: gcc -fPIC -pthread -m64 -Wa,--noexecstack -Wall -O3 -DOPENSSL_USE_NODELETE -DL_ENDIAN -DOPENSSL_PIC -DOPENSSL_BUILDING_OPENSSL -DZLIB -DNDEBUG
OPENSSLDIR: "/usr/local/ssl/ssl"
ENGINESDIR: "/usr/local/ssl/lib64/engines-3"
MODULESDIR: "/usr/local/ssl/lib64/ossl-modules"
Seeding source: os-specific
CPUINFO: OPENSSL_ia32cap=0xfdfa32035f8bffff:0x9c67ab
若提示以下错误
[root@centos7 openssl-3.0.1]# openssl version -a
openssl: error while loading shared libraries: libssl.so.3: cannot open shared object file: No such file or directory
通过 find / -name libcrypto.so.3 和 libssl.so.3 查找到对应so文件的位置,并建立软连接
ln -s /usr/local/ssl/lib64/libssl.so.3 /usr/lib/libssl.so.3
ln -s /usr/local/ssl/lib64/libcrypto.so.3 /usr/lib/libcrypto.so.3
ldconfig
openssh安装
OpenSSH升级
备份原ssh配置文件
mv /etc/ssh /etc/ssh.bak
编译安装
注意:–with-ssl-dir参数指定为新升级的ssl路径
tar -zxf openssh-8.8p1.tar.gz
cd openssh-8.8p1/
./configure --prefix=/usr --sysconfdir=/etc/ssh --with-md5-passwords --mandir=/usr/share/man --with-zlib --with-pam --with-ssl-dir=/usr/local/ssl
# 如果失败 看一下error提示不是pam异常,如果是pam就把 --with-pam 去掉
#(缺少组件,如果有网 可以执行 yum -y pam-devel 进行安装,离线版我还没找到)
make && make install
修改配置文件
根据原ssh配置文件,修改新生成的配置文件/etc/ssh/sshd_config
从源码包中拷贝一些文件到目标位置(如果目标目录存在就覆盖)
(可能下面的ssh.pam文件都没用到,因为sshd_config配置文件貌似没使用它,请自行测试。我这边是拷贝了)
cp -a contrib/redhat/sshd.init /etc/init.d/sshd
cp -a contrib/redhat/sshd.pam /etc/pam.d/sshd.pam
chmod +x /etc/init.d/sshd
重启服务并配置开机自启
把原先的systemd管理的sshd文件删除或者移走或者删除,不移走的话影响我们重启sshd服务
mv /usr/lib/systemd/system/sshd.service /usr/lib/systemd/system/sshd.service.bak
设置开机自启
chkconfig --add sshd
chkconfig sshd on
systemctl enable sshd
重启服务
使用以下命令管理sshd
/etc/init.d/sshd restart
/etc/init.d/sshd stop
/etc/init.d/sshd start
或通过systemctl
systemctl stop sshd
systemctl start sshd
systemctl restart sshd
服务验证
[root@GZWGQGLYJJC21 openssh-8.8p1]# ssh -V
OpenSSH_8.8p1, OpenSSL 3.0.1 14 Dec 2021
参考文献:
https://blog.csdn.net/sd4493091/article/details/122219298
https://blog.csdn.net/weixin_45920147/article/details/135200046