背景
三级等保评测中对主机进行漏洞扫描发现linux主机存在高危漏洞,查看发现是OpenSSH版本过低导致,于是对主机系统OpenSSH软件版本进行升级。
查看系统版本 ssh版本
#查看系统版本
cat /etc/redhat-release
CentOS Linux release 7.5.1804 (Core)
#查看ssh 版本
ssh -V
OpenSSH_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 /opt
wget https://cdn.openbsd.org/pub/OpenBSD/OpenSSH/portable/openssh-8.4p1.tar.gz
tar -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.init
chmod 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.init
Description=SYSV: OpenSSH server daemon
[Service]
Type=forking
Restart=no
TimeoutSec=5min
IgnoreSIGPIPE=no
KillMode=process
GuessMainPID=no
RemainAfterExit=no
PIDFile=/var/run/sshd.pid
ExecStart=/etc/rc.d/init.d/sshd.init start
ExecStop=/etc/rc.d/init.d/sshd.init stop
ExecReload=/etc/rc.d/init.d/sshd.init reload
重载配置
systemctl daemon-reload
重启ssh服务
systemctl restart sshd
查看当前ssh版本
ssh -V
telnet 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/telnet
service telnet
{
flags = REUSE
socket_type = stream
wait = no
user = root
server = /usr/sbin/in.telnetd
log_on_failure += USERID
disable = yes
}
重启服务
systemctl restart xinetd
systemctl restart telnet.socket
telnet 默认的情况之下不允许 root 以 telnet 进入 Linux 主机,创建普通用户登录系统切换root。
telnet 测试
telnet 192.168.99.147
升级SSH 存在中断风险,如果SSH 升级失败将会导致终端无法登录,建议在使用本地虚拟机进行测试后对线上生产环境进行升级操作!!!