Linux 升级OpenSSH至最新版本。

原因

云服务器(Linux) 报了一个漏洞修复 , 提示需要修复一下 . . .

漏洞名称

OpenSSH权限提升漏洞(CVE-2021-41617)

漏洞详情

由于OpenSSH在执行AuthorizedKeysCommand或AuthorizedPrincipalsCommand时未能正确初始化,运行时可能会被设置为以其他用户的权限运行。这些指令将继承 sshd启动时的组的权限。根据系统配置的不同,可能会导致获得意外的权限,最终导致权限提升。

修复建议

升级OpenSSH至最新版本

0.0.准备工作.由于升级过程ssh会连接不上,需要先开启telnet服务,这个一定不要忘记

#开启Telnet服务
chkconfig telnet on

然后使用另外一台服务器,看能不能通过Telnet连接到这台升级OpenSSH的服务器.

#比如升级OpenSSH服务器地址为"X.X.X.X"
telnet X.X.X.X

0.1.准备工作.安装依赖软件包

yum install wget gcc -y
yum install -y zlib-devel openssl-devel 
yum install pam-devel libselinux-devel zlib-devel openssl-devel -y

1.0.备份ssh文件,如果升级出问题,再回滚

cp -r  /etc/ssh   /etc/ssh20211111
cp -r  /etc/pam.d /etc/pam.d20211111
cp -r /etc/init.d/sshd /etc/init.d/sshd20211111
#这个文件夹我的服务器里面没有,所以报错了,但是我忽略没有管,继续往下走就行了→报错信息→cp: 无法获取"/etc/init.d/sshd" 的文件状态(stat): 没有那个文件或目录
cp  /usr/bin/ssh /usr/bin/ssh20211111

2.0.下载新版的OpenSSH

#去指定文件夹下下载安装包 ( 后续还要在此文件夹下解压文件,编译安装系列操作 )
cd /usr/local/src
#根据自己需要安装版本 ( 我这里是安装的8.6版本 )
wget https://ftp.openbsd.org/pub/OpenBSD/OpenSSH/portable/openssh-8.6p1.tar.gz

3.0.卸载旧版OpenSSH

一代新人换旧人...

#查看已经安装的OpenSSH相关软件
rpm -qa | grep openssh
#输出...
#openssh-7.4p1-21.el7.x86_64
#openssh-server-7.4p1-21.el7.x86_64
#openssh-clients-7.4p1-21.el7.x86_64

#卸载旧版本 ( 旧版本名称大家的都不一样,具体卸载名称需要根据自己查找到的名称进行卸载 )
#卸载命令模板"rpm -e --nodeps {查到的安装的软件名称}"
rpm -e --nodeps openssh-7.4p1-21.el7.x86_64
rpm -e --nodeps openssh-server-7.4p1-21.el7.x86_64
rpm -e --nodeps openssh-clients-7.4p1-21.el7.x86_64
#应该有命令是可以批量卸载的吧...自行探索吧...

4.0.安装 - 解压,并切换目录

#解压
tar -zxvf openssh-8.6p1.tar.gz
#切换目录 cd ( change directory )
cd openssh-8.6p1.tar.gz

4.1.安装 - 执行配置命令

#注意下,配置的路径后续还需要改,
./configure --prefix=/usr/local/openssh/ --sysconfdir=/etc/ssh --with-md5-passwords --with-pam --with-zlib --with-openssl-includes=/usr --with-privsep-path=/var/lib/sshd

4.2.安装 - 编译 & 安装

#编译 ( 如果没有执行上一步"./configure ..."的话,这个编译步骤是无法执行的 .
make

#安装
make install

4.3.安装 - 复制配置文件

老实说,这一步是我最迷糊的步骤,各种复制,复制的文件比较多 . . .

#我是直接复制执行的 . . .
cp -p contrib/redhat/sshd.init /etc/init.d/sshd
chmod +x /etc/init.d/sshd
chkconfig --add sshd
cp sshd_config /etc/ssh/sshd_config
cp /usr/local/openssh/sbin/sshd /usr/sbin/sshd
cp ssh-keygen /usr/bin/

4.4.安装 - 更改配置文件 ( 共2个文件需要编辑 )

#第1个需要编辑配置文件
vim /etc/init.d/sshd

具体修改内容↓
1.
SSHD=/usr/sbin/sshd 改为 SSHD=/usr/local/openssh/sbin/sshd
2.
/usr/sbin/ssh-keygen -A 改为 /usr/local/openssh/bin/ssh-keygen -A
3.
$SSHD $OPTIONS && success || failure 这一行的上面加上 → OPTIONS="-f /etc/ssh/sshd_config"


#第2个需要编辑的配置文件
vim /etc/ssh/sshd_config

这个好搞,只需要在底部加上2行配置就行了

PasswordAuthentication yes
PermitRootLogin yes

5.0.生成认证

#执行以下两个命令:提示是否覆盖按"y",后面直接回车就好
ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key
ssh-keygen -t dsa -f /etc/ssh/ssh_host_dsa_key

6.0.修改权限

chmod 600 /etc/ssh/ssh_host_ecdsa_key
chmod 600 /etc/ssh/ssh_host_rsa_key

7.0.启动服务

servie sshd start

8.0.验证 - 查看版本

ssh -V
OpenSSH_8.6p1, OpenSSL 1.0.2k-fips  26 Jan 2017

上午安装完成之后执行ssh -V,记得是报错了,
然后执行的sshd -V,
下午再次执行ssh -V就可以了. . .
终于成功了 . . .

摘抄文档

原文地址:https://www.cnblogs.com/love-zf/p/15517737.html