前言
突然接到客户电话,漏扫发现服务器OpenSSH存在漏洞,需要尽快通过升级OpenSSH修复漏洞;SSH(Secure Shell)是Linux/Unix系统管理员最常使用的远程管理工具,几乎每台服务器都运行着OpenSSH服务。正因如此,OpenSSH的安全漏洞往往影响范围极广,一旦被利用,可能导致服务器被完全控制,后果相当严重。
一般情况下,Linux的发行版对应提供的最新的OpenSSH RPM包版本都比要求修复漏洞的版本低很多,所以一般只能通过源码包进行编译安装,本文系统整理了OpenSSH升级步骤,具体如下:
一、安装基础软件包
yum install -y wget zlib* pam-* gcc openssl-devel telnet telnet-server xinetd telnet* net-tools
二、部署telnet服务
问:为什么要部署telnet服务呢? 答:一般来说,远程登录服务器都是用ssh,因为telnet是使用明文传输的,无法保证安全性,但是当我们在升级openssh时,ssh将无法使用所以无法通过ssh远程登录服务器进行openssh升级,需要临时使用telnet远程连接服务器升级openssh。注意:不要经互联网telnet远程连接服务器,可以使用其他机器作为跳板,然后内网连接服务器做openssh升级。
1)添加telnet配置文件
vi /etc/xinetd.d/telnet# default: on# description: The telnet server serves telnet sessions; it uses \# unencrypted username/password pairs for authentication.service telnet{flags = REUSEsocket_type = streamwait = nouser = rootserver = /usr/sbin/in.telnetdlog_on_failure += USERIDdisable = no}
2)注释配置文件/etc/pam.d/remote中的“auth required pam_securetty.so”
vi /etc/pam.d/remote#%PAM-1.0#auth required pam_securetty.so
3)重启xinetd服务
systemctl restart xinetdsystemctl status xinetd
4)远程连接测试telnet是否可用
telnet 192.168.32.132
至此,通过telnet已经可以远程到服务器上了。下面就可以开始升级openssh了。
三、升级OpenSSH
1)获取升级源码包
wget https://mirrors.aliyun.com/openssh/portable/openssh-9.1p1.tar.gz?spm=a2c6h.25603864.0.0.16103bf9f8Ydtbmv openssh-9.1p1.tar.gz?spm=a2c6h.25603864.0.0.16103bf9f8Ydtb openssh-9.1p1.tar.gztar -xf openssh-9.1p1.tar.gz
2)编译安装OpenSSH
cd openssh-9.1p1./configure --prefix=/usr/local/openssh_9.1p1 --with-zlib=/usr/local/zlib --with-ssl-dir=/usr/local/sslmake && make install
3)修改配置文件
vi /usr/local/openssh_9.3p2/etc/sshd_config#LoginGraceTime 2mPermitRootLogin yesPubkeyAuthentication yesPasswordAuthentication yes
4)备份原版本命令与配置,新版本命令预配置覆盖旧版本
cp /etc/init.d/sshd /etc/init.d/sshd.bakcp contrib/redhat/sshd.init /etc/init.d/sshdchkconfig --add sshdcp -r /etc/ssh /etc/ssh.bak2cp -r /usr/bin/ssh /usr/bin/ssh.bak2cp -r /usr/sbin/sshd /usr/sbin/sshd.bak2cp -r /usr/local/openssh_9.1p1/etc/sshd_config /etc/ssh/sshd_configcp -r /usr/local/openssh_9.1p1/sbin/sshd /usr/sbin/sshdcp -r /usr/local/openssh_9.1p1/bin/ssh /usr/bin/sshcp -r /usr/local/openssh_9.1p1/bin/ssh-keygen /usr/bin/ssh-keygencp -r /usr/local/openssh_9.1p1/etc/ssh_host_ecdsa_key.pub /etc/ssh/ssh_host_ecdsa_key.pub
5)修改属主与属组
cd /etc/ssh/chown -R root:root ./*
6)修改服务配置文件
vi /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/sshdDescription=SYSV: OpenSSH server daemon[Service]Type=forkingRestart=noTimeoutSec=5minIgnoreSIGPIPE=noKillMode=processGuessMainPID=noRemainAfterExit=noPIDFile=/var/run/sshd.pidExecStart=/etc/rc.d/init.d/sshd startExecStop=/etc/rc.d/init.d/sshd stopExecReload=/etc/rc.d/init.d/sshd reload
6)重启sshd服务
systemctl daemon-reloadsystemctl restart sshd.service
此时重启服务报错,查看服务状态可以看到报错信息。
vim /var/log/messages查看服务报错详细信息:
通过报错信息可以看到0640的权限对于服务太大了,需要修改为0600
修改权限后服务可以正常启动。
OpenSSH版本已经升级到要求的版本。
7)ssh远程连接测试
ssh登录远程连接成功
四、关闭telnet服务,卸载telnet(可选)
systemctl stop xinetdyum remove -y xinetd telnet-server
至此,OpenSSH升级完成,如果您有任何疑问,请留言交流。
往期精彩推荐
Linux操作系统-centos7如何离线安装桌面环境
Linux操作系统-tcpdump抓包定位网络问题实战
Linux操作系统-免交互远程登录操作系统
Linux操作系统-压缩与解压
Linux操作系统-防火墙