背景
三级等保评测中对主机进行漏洞扫描发现linux主机存在高危漏洞,查看发现是OpenSSH版本过低导致,于是对主机系统OpenSSH软件版本进行升级。
查看系统版本 ssh版本
#查看系统版本cat /etc/redhat-release CentOS Linux release 7.5.1804 (Core) #查看ssh 版本ssh -VOpenSSH_7.4p1, OpenSSL 1.0.2k-fips 26 Jan 2017
更新并安装所需要的依赖
yum install -y make gcc gcc-c++ openssl-devel zlib zlib-devel pam-devel
下载 解压 openssh8.4压缩包
cd /optwget https://cdn.openbsd.org/pub/OpenBSD/OpenSSH/portable/openssh-8.4p1.tar.gztar -zxvf openssh-8.4p1.tar.gz
测试及编译源码
cd openssh-8.4p1./configure --prefix=/usr --sysconfdir=/etc/ssh --with-md5-passwords --with-pam --with-tcp-wrappers --with-ssl-dir=/usr/local/ssl --without-hardening
删除/etc/ssh/下的密钥对(只删除密钥对即可,重启会重新生成)
rm -rf /etc/ssh/ssh_host_*
make安装
make && make install
修改配置文件并且去掉注释
vim /etc/ssh/sshd_config PermitRootLogin yes PasswordAuthentication yes
将源码安装包中 opensshd.init 文件复制到 /etc/init.d/ 目录下并添加可执行权限
cp /opt/openssh-8.4p1/opensshd.init /etc/init.d/sshd.initchmod u+x /etc/init.d/sshd.init
启动ssh服务
/etc/init.d/sshd.init start
备份原有sshd.service文件
mv /usr/lib/systemd/system/sshd.service /opt
添加sshd.service 文件
vim /usr/lib/systemd/system sshd.service
# Automatically generated by systemd-sysv-generator
[Unit]Documentation=man:systemd-sysv-generator(8)SourcePath=/etc/rc.d/init.d/sshd.initDescription=SYSV: OpenSSH server daemon
[Service]Type=forkingRestart=noTimeoutSec=5minIgnoreSIGPIPE=noKillMode=processGuessMainPID=noRemainAfterExit=noPIDFile=/var/run/sshd.pidExecStart=/etc/rc.d/init.d/sshd.init startExecStop=/etc/rc.d/init.d/sshd.init stopExecReload=/etc/rc.d/init.d/sshd.init reload
重载配置
systemctl daemon-reload
重启ssh服务
systemctl restart sshd
查看当前ssh版本
ssh -Vtelnet 127.0.0.1 22
升级有风险操作需谨慎(使用telnet 兜底)可选操作
安装xinted
xinetd即extended internet daemon,xinetd是新一代的网络守护进程服务程序,又叫超级Internet服务器。经常用来管理多种轻量级Internet服务。telnet服务就是通过xinetd服务来管理的,所以在安装telnet服务之前需要先安装xinetd服务。
yum install -y xinetd
yum 安装telnet-server telnet-client
yum install telnet-server telnet
查看软件版本
rpm -qa telnet-server telnet-server-0.17-66.el7.x86_64
配置telnet 文件
若此文件不存在,则创建这个文件。将其中disable=yes改为disable=no或注释掉。
vi /etc/xinetd.d/telnetservice telnet{ flags = REUSE socket_type = stream wait = no user = root server = /usr/sbin/in.telnetd log_on_failure += USERID disable = yes }
重启服务
systemctl restart xinetdsystemctl restart telnet.socket
telnet 默认的情况之下不允许 root 以 telnet 进入 Linux 主机,创建普通用户登录系统切换root。
telnet 测试
telnet 192.168.99.147
升级SSH 存在中断风险,如果SSH 升级失败将会导致终端无法登录,建议在使用本地虚拟机进行测试后对线上生产环境进行升级操作!!!