[ 安全运维 ] OpenSSH版本内网脚本升级
0x00.前言:
最近做漏扫时,扫描出Linux系统的一些漏洞问题,其中有一个漏洞是关于OpenSSH低版本出现的一些漏洞,需要对这些使用低版本OpenSSH的服务器进行软件升级,由于这些存在问题的Linux机器无法连接外网,需要在内网升级,并且需要操作的服务器数量多,最为关键的是客户需要一个超级简单的升级方案(拿网上的教程发过去就得挨P)。为了方便,我就找到最新版本OpenSSH 8.0p1安装包,自己写了个升级脚本,大大的简化了客户升级的难度。
0x01.检查版本信息
使用命令: ssh -V
这里需要升级的版本为低于OpenSSH 8.0p1,可以看到这里的版本已经很老了,在网上可以查找到此OpenSSH版本的相关漏洞。
0x02.准备升级包
最新版本OpenSSH 8.0p1下载地址:
https://www.openssh.com/openbsd.html
脚本内容:(这里使用的是红帽下的命令,同样适用于Cent OS,其他linux版本自行更改相关命令)
#!/bin/sh oldversion=`ssh -V 2>&1` echo "开始执行 OpenSSH 版本升级脚本" echo -e "当前OpenSSH版本为: \033[31m $oldversion \033[0m" echo "正在解压安装OpenSSH 8.0p1源代码......" { tar -zxf openssh-8.0p1.tar.gz } &>> install.log echo "备份原版OpenSSH......" { mv /etc/ssh/ ./ssh.bak } &>> install.log echo "安装编译所需依赖,耗时较长,请耐心等待......" { yum -y install gcc zlib-devel openssl-devel } &>> install.log echo "配置并编译OpenSSH......" { cd openssh-8.0p1/ ./configure --prefix=/usr --sysconfdir=/etc/ssh make } &>> install.log echo "卸载旧版OpenSSH......" { rpm -e --nodeps `rpm -qa | grep openssh` } &>> install.log echo "开始安装......" { make install
chmod 0600 /etc/ssh/ssh_host_rsa_key chmod 0600 /etc/ssh/ssh_host_ecdsa_key
chmod 0600 /etc/ssh/ssh_host_ed25519_key make install } &>> install.log newversion=`ssh -V 2>&1` echo "开始执行 OpenSSH 版本升级脚本" echo -e "安装完成,当前SSH版本为: \033[32m $newversion \033[0m" echo "配置权限及启动项......" { cp contrib/redhat/sshd.init /etc/init.d/sshd chkconfig --add sshd
脚本保存为sshfix.sh
然后将脚本和升级包放在同一文件夹下,压缩后发送给客户。
0x03.安装使用步骤
注意因升级需要先卸载SSH,建议此操作在telnet或直接在服务器上操作。
解压并执行脚本
tar xvf OpenSSH_update.tar
进入升级包解压后目录下,对需要运行的脚本附加执行权限,并执行脚本。
使用的命令:
cd OpenSSH_update Chmod +x sshfix.sh ./sshfix.sh
0x04.安装升级成功
脚本会提示当前SSH版本为OpenSSH 8.0p1