Linux升级OpenSSH和OpenSSL,解决XMSS Key 解析整数溢出漏洞、OpenSSL 拒绝服务漏洞
OpenSSH和OpenSSL
🔧OpenSSL
OpenSSL其实是一个开源的C函数库,多用于加密依赖,很多程序的编译,需要OpenSSL作为依赖包。
🖥OpenSSH
OpenSSH 是 SSH (Secure SHell) 协议的免费开源实现,类似于OpenJDK和OracleJDK的区别。需要用到OpenSSL的函数库,所以在更新OpenSSH前,最好先更新OpenSSL。
SSH协议族可以用来进行远程控制, 或在计算机之间传送文件。相对于传统方式,OpenSSH提供了服务端后台程序和客户端工具,并且加密远程控制和文件传输过程中的数据。
简单地说,日常使用OpenSSH:远程控制服务器端,如:远程登录访问Linux的Terminal。且过程中加密传输。
OpenSSL 拒绝服务漏洞
拒绝服务漏洞,代号为:CVE-2021-3449:
- 主要是一些操作,可能会让OpenSSL TLS 强行停止。【我感觉这个漏洞不是很严重啦,但是大家都觉得很严重……那还是有必要修复一下╮( ̄▽ ̄"")╭】
解决方法很简单:升级OpenSSL版本。
XMSS Key 解析整数溢出漏洞
XMSS Key漏洞,代号为:CVE-2019-16905:
- 主要是非法用户,可以通过此漏洞,跳过OpenSSH的认证,远程登录到你服务器【不过计算难度挺高的,而且条件苛刻……】。
但是,总归是重大漏洞,需要修复:
解决方法很简单:升级OpenSSH版本。
升级的方法很简单:
- 下载新版本OpenSSL源码
- 备份旧版本OpenSSL
- 编译安装新版本OpenSSL
下载新版本OpenSSL源码
这边推荐下载地址:https://ftp.openssl.org/source
比如,我这边下载openssl-1.1.1k.tar.gz。到Linux控制台内,使用wget下载即可(你也可以使用宝塔等软件下载,但是记得权限问题):
wget 'https://ftp.openssl.org/source/openssl-1.1.1k.tar.gz'
之后,我们解压这个tar.gz文件夹,并进入:
# 使用tar工具包解压
tar -xf openssl-1.1.1k.tar.gz
# 进入文件夹
cd openssl-1.1.1k
备份旧版本OpenSSL
为了避免编译过程中,出现意外(如:远程SSH突然断连,导致编译失败);我们提前备份旧版本OpenSSL,给回滚“留条路”(如果你之前都没有安装OpenSSL,这步可以跳过):
# 备份OpenSSL到用户目录,并重命名为openBak
mv openssl ~/openBak
编译安装新版本OpenSSL
刚刚我们已经在新的OpenSSL目录,所以我们可以直接开始编译。首先,设置配置。我们使用默认的即可:
./config
之后,进行make编译操作:
make -j 4
最后,进行make install安装操作:
make install
操作完成后/usr/bin下重新有openssl文件。我们只需要重新建立软连接即可:
ln -s /usr/local/bin/openssl /usr/bin/openssl
到此,OpenSSL升级完成。重新腾讯云安全检测:
升级OpenSSH
OpenSSH的升级的方法也很简单:
下载新版本OpenSSH源码
- 备份(移除)旧版本OpenSSH
- 编译安装新版本OpenSSH
- 重启OpenSSH进程服务(重要‼️)
下载新版本OpenSSH源码
同样,这边推荐下载地址:http://ftp.openbsd.org/pub/OpenBSD/OpenSSH/portable/
https://cdn.openbsd.org/pub/OpenBSD/OpenSSH
备份(移除)旧版本OpenSSH
我们要移除旧版本的OpenSSH配置:
# 备份旧文件
cp /etc/ssh ~/sshBak
# 删除旧文件 #这步可以忽略不操作
rm -rf /etc/ssh/*
1、依赖软件包:
yum install wget gcc -y
yum install -y zlib-devel openssl-devel
yum install pam-devel libselinux-devel zlib-devel openssl-devel -y
2、下载安装包OpenSSH8.4上传至服务器或wget直接下载
wget https://cdn.openbsd.org/pub/OpenBSD/OpenSSH/portable/openssh-8.4p1.tar.gz
3、删除低版本OpenSSH的的rpm包
rpm -e --nodeps `rpm -qa | grep openssh`
4、安装openssh
(1).解压
tar -zxvf openssh-8.4p1.tar.gz
cd openssh-8.4p1
(2).配置 #参数根据自己需要追加
./configure --prefix=/usr --sysconfdir=/etc/ssh --with-md5-passwords --with-pam --with-zlib --with-tcp-wrappers --with-ssl-dir=/usr/local/ssl --without-hardening
(3).编译安装
make -j 4
make install
(4)赋权
chmod 600 /etc/ssh/ssh_host_rsa_key /etc/ssh/ssh_host_ecdsa_key /etc/ssh/ssh_host_ed25519_key
(5)复制配置文件并设置允许root用户远程登录
cp -a contrib/redhat/sshd.init /etc/init.d/sshd
cp -a contrib/redhat/sshd.pam /etc/pam.d/sshd.pam
chmod u+x /etc/init.d/sshd
vim /etc/ssh/sshd_config
1.修改#PermitRootLogin prohibit-password项,去掉注释#并把prohibit-password改为yes,修改后即为PermitRootLogin yes
2.去掉注释#PasswordAuthentication yes变为PasswordAuthentication yes
(6)添加添加自启服务ssh到开机启动项
chkconfig --add sshd
chkconfig sshd on
或者 systemctl enable sshd
(7)重启服务
systemctl restart sshd
(8)查看下安装结果:
ssh -V
ssh真实升级案例
公司:贝塔数据
服务器:腾讯云虚拟主机
系统版本:CentOS Linux release 8.4.2105
内核版本:4.18.0-305.10.2.el8_4.x86_64
# wget http://ftp.openbsd.org/pub/OpenBSD/OpenSSH/portable/openssh-8.8p1.tar.gz
# rpm -qa | grep openssh
# cp /etc/ssh ~/sshBak -r
# tar zxvf openssh-8.8p1.tar.gz
# cd openssh-8.8p1/
# yum install wget gcc -y
# yum install -y zlib-devel openssl-devel
# yum install pam-devel libselinux-devel zlib-devel openssl-devel -y
# ssh -V
# which ssh
# cp /usr/bin/ssh /tmp/
# rpm -e --nodeps `rpm -qa | grep openssh`
# rpm -qa | grep openssh
# ./configure --prefix=/usr --sysconfdir=/etc/ssh --with-md5-passwords --with-pam --with-zlib --with-tcp-wrappers
# make -j 4
# echo $?
# make install
# echo $?
# ssh -V
# chmod 600 /etc/ssh/ssh_host_rsa_key /etc/ssh/ssh_host_ecdsa_key /etc/ssh/ssh_host_ed25519_key
# cp -a contrib/redhat/sshd.init /etc/init.d/sshd
# cp -a contrib/redhat/sshd.pam /etc/pam.d/sshd.pam
# chmod u+x /etc/init.d/sshd
# vim /etc/ssh/sshd_config
1.修改#PermitRootLogin prohibit-password项,去掉注释#并把prohibit-password改为yes,修改后即为PermitRootLogin yes
2.去掉注释#PasswordAuthentication yes变为PasswordAuthentication yes
[root@VM-16-15-centos openssh-8.8p1]# ssh -V
OpenSSH_8.8p1, OpenSSL 1.1.1g FIPS 21 Apr 2020
[root@VM-16-15-centos openssh-8.8p1]# systemctl enable sshd
sshd.service is not a native service, redirecting to systemd-sysv-install.
Executing: /usr/lib/systemd/systemd-sysv-install enable sshd
systemctl restart sshd #一定要重启