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
标签:LTS,OpenSSH,make,telnet,ssh,openssh,服务器,Ubuntu18.04,root
From: https://blog.51cto.com/iopera/6021449