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
就可以了. . .
终于成功了 . . .