//雪花飘落特效 //右上角github跳转   

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配置:

# 备份旧文件
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  #一定要重启
posted @ 2021-10-09 09:29  农夫运维  阅读(856)  评论(0编辑  收藏  举报