Ubuntu18.04 LTS OpenSSH服务漏洞升级

152 阅读4分钟

01-OpenSSH升级

安全检查、漏洞扫描中会发现自软件服务器系统Ubuntu18.04 Server LTS系统存在OpenSSH 安全漏洞,一般将其定义为中危风险等级。可以使用如下方式进行升级处理。

一、前置条件

服务器已经安装telnet server服务,可以通过telnet登录服务器并获取root用户权限。

二、环境准备

服务器系统具有GCC以及依赖环境,具有make编译环境。

三、软件包准备

  • zlib
  • openssl
  • openssh

四、升级操作

1、安装telnet server服务

1.1、服务器安装telnet server软件

安装telnet需要准备相关软件包

将提供的软件压缩包解压后将openssh/telnet_server目录下的所有文件上传到服务器。离线安装telnet server服务

mkdir -p /root/openssh/telnet_server
# 上传以上软件包到/root/openssh/telnet_server目录
cd /root/openssh/telnet_server
dpkg -i *.deb

1.2、验证telnet服务 ⭐⭐⭐⭐⭐

使用其他电脑测试telnet服务是否可用,确保可以正常登录服务器,由于后期需要卸载ssh服务,导致无法登陆服务器,因此务确保可以telnet登录服务器。

telnet  server_ip

Ubuntu 18.04.5 LTS
whr login: om
Password:
Last login: Wed Jan 11 07:48:11 UTC 2023 from 172.16.10.152 on pts/0
Welcome to Ubuntu 18.04.5 LTS (GNU/Linux 4.15.0-112-generic x86_64)
......
om@whr:~$
om@whr:~$

2、安装gcc环境

gcc目录下的所有软件包上传到服务器,并进行安装

mkdir  -p /root/openssh/gcc
# 将gcc目录下所有软件包上传到服务器/root/openssh/gcc目录下
cd /root/openssh/gcc
dpkg -i *.deb

3、安装make编译环境

make目录下所有软件包上传到服务器并安装软件包

mkdir -p /root/openssh/make
# 将make目录下所所有软件包上传到/root/openssh/make
cd /root/openssh/make
dpkg -i *.deb

4、安装libpam0g依赖包

libpam0g目录下软件包上传到服务器/root/openssh/libpam0g目录下

mkdir -p /root/openssh/libpam0g
# 目录下软件包上传到服务器/root/openssh/libpam0g目录下
cd /root/openssh/libpam0g
dpkg -i *.deb

4、编译安装zlib

openssh目录下所有压缩包上传到服务器。

mkdir -p /root/openssh/openssh
# 将openssh目录下所所有软件包上传到/root/openssh/openssh

4.1、第一次编译zlib

# 解压zlib压缩包
tar -zxvf zlib-1.2.13.tar.gz
cd zlib-1.2.13
./configure
make test
make install

4.2、第二次编译安装

本次编译主要是编译暗账共享库,解决编译OpenSSL是找不到共享库的问题

make clean
./configure --shared
make test
make install
cp zutil.h /usr/local/include
cp zutil.c /usr/local/include

5、编译安装OpenSSL

解压OpenSSL源码包,编译安装

tar -zxvf openssl-1.1.1q.tar.gz
cd /tmp/openssl-1.1.1q/
# 配置编译参数,指定shared zlib
./config shared zlib
# 指定8个CPU进行编译,可以根据自己服务器的情况指定,也可以直接使用make编译
make -j 8
make install
# 备份原有的的OpenSSL文件
mv /usr/bin/openssl /usr/bin/openssl.bak
mv /usr/include/openssl /usr/include/openssl.bak
# 生成新的文件链接
ln -s /usr/local/ssl/bin/openssl /usr/bin/openssl
ln -s /usr/local/ssl/include/openssl /usr/include/openssl
echo “/usr/local/ssl/lib” >> /etc/ld.so.conf
# 配置新的OpenSSL生效。
ldconfig

可以使用下面的命令检查OpenSSL是否升级成功

openssl version -a

6、编译安装OpenSSH

注意这里将要安装新版本的OpenSSH软件,需要将原有版本卸载,卸载OpenSSH会导致无法连接服务,所以务必保证可以通过其他方式登录服务器,例如通过telnet方式登录服务器;如果使用已经通过SSH连接的会话,务必保证在完成升级前不会断开SSH连接。

# 备份原有SSH服务的配置文件
mv /etc/init.d/ssh /etc/init.d/ssh.old
mv /etc/ssh /etc/ssh.old
# 删除已经安装的SSH软件包
apt-get remove openssh-server openssh-client -y
# 解压源码包
tar -zxvf openssh-9.0p1.tar.gz
cd openssh-9.0p1
# 配置编译参数
./configure --prefix=/usr \
--sysconfdir=/etc/ssh \
--with-md5-passwords \
--with-pam --with-zlib \
--with-ssl-dir=/usr/local \
--with-privsep-path=/var/lib/sshd 
# 指定参与编译的CPU数量,可以直接使用make补丁定参数
make -j 8
# 安装已经编译成的openssh软件
make install 

# 还原原有备份配置文件
cd /etc/ssh
mv sshd_config sshd_config.default
cp ../ssh.old/sshd_config ./
mv /etc/init.d/ssh.old /etc/init.d/ssh
systemctl unmask ssh
# 重新启动SSH服务
systemctl restart ssh

验证OpenSSH是否升级成功

ssh -V 

开启SSH连接工具创建新的连接登录服务器验证服务是否正常。

如果现场环境允许可以重新启动服务器,检查是否可以通过SSH登录服务器。

五、升级后收尾

经过验证可以正常登录后,建议关闭之前安装的telnet服务

# 取消telnet服务的开机启动
systemctl disable inetd
# 停止服务器的telnet服务
systemctl stop inetd