OpenSSH 远程升级到 9.4p1
文章目录
- OpenSSH 远程升级到 9.4p1
- 背景
- 升级前提
- 1. 升级 OpenSSL
- 2. 安装并启用Telnet
- 升级OpenSSH
背景
最近的护网行动,被查出来了好几个关于OpenSSH 的漏洞。这是因为服务器系统安装后,直接使用了系统自带版本的OpenSSH ,此版本已经很老了,存在很多高低危漏洞。
系统信息如下:
centos: 7
openssh: 1.0.1
升级前提
- 升级OpenSSH后,原有公钥失效,信任关系需要重新配置;
- 升级过程需要停止sshd服务,会导致ssh和sftp无法使用;
- 升级需要关闭防火墙服务;
- 升级需要关闭selinux服务;
- 升级前需要开启telnet,防止升级失败,系统无法登录,对应的防火墙需要开启23端口,安装需要telnet相关包
- 升级过程中需要刷新lib库:ldconfig -v;
- 升级顺序:顺序是 openssl -> openssh;
- 升级需要gcc、make、perl、zlib、zlib-devel、pam、pam-devel依赖包;
1. 升级 OpenSSL
安装OpenSSH :9.4p1 需要最少 OpenSSL :1.1.1 以上,因此请先查看文章OpenSSL升级
2. 安装并启用Telnet
- 安装telnet服务端
yum -y install xinetd telnet-server
默认情况下,系统是不允许root用户telnet远程登录的。如果要使用root用户直接登录,需设置如下内容。或者可以添加一个可以登录的用户,登录并su到root用户(建议采用此方法,保证系统安全)。此步骤可跳过!
允许root用户通过telnet登陆:
编辑/etc/pam.d/login,注释掉下面这行
vi /etc/pam.d/login#把auth的限制去掉auth [user_unknown=ignore success=ok ignore=ignore default=bad] pam_securetty.so
开启root用户远程登陆。此步骤可跳过!
vi /etc/pam.d/remoteauth required pam_securetty.so
- 重启telnet和xinetd服务 【telnet服务依赖于xinetd服务】
systemctl restart telnet.socketsystemctl restart xinetd
- 将 23端口(系统默认23为telnet端口)添加到防火墙允许的端口的列表中。
firewall-cmd --zone=public --add-port=23/tcp --permanent
升级OpenSSH
- 关闭SElinux
#检查是否关闭:getenforce#如果未关闭,关闭之setenforce 0
上面只是临时关闭了,重启后不生效。下面改配置文件,使永久生效。
vi /etc/selinux/config#修改:SELINUX=disabled#保存退出。
- 安装相关依赖包
yum -y install gcc make perl zlib zlib-devel pam pam-devel# 安装完毕后执行下面命令,确保所有依赖包正常安装rpm -qa | egrep "gcc|make|perl|zlib|zlib-devel|pam|pam-devel"
- 升级openSSH(注意从这步开始,通过Telnet登录到服务器,务必)
#停止ssh服务systemctl stop sshd#备份ssh配置文件cp -r /etc/ssh /etc/ssh.old# 查看系统原有openssh包rpm -qa | grep openssh#删除旧版本rpm -e --nodeps `rpm -qa | grep openssh`#解压新版本tar -zxvf openssh-9.4p1.tar.gz cd openssh-9.4p1# 编译配置 这里请注意--with-ssl-dir 是你openssl安装的目录./configure --prefix=/usr --sysconfdir=/etc/ssh --with-md5-passwords --with-pam --with-zlib --with-tcp-wrappers --with-ssl-dir=/usr/local/ssl --without-hardening#编译安装make && make install#调整文件权限chmod 600 /etc/ssh/ssh_host_rsa_key /etc/ssh/ssh_host_ecdsa_key /etc/ssh/ssh_host_ed25519_key#复制配置文件cp -a contrib/redhat/sshd.init /etc/init.d/sshd chmod u+x /etc/init.d/sshd#还原 原配置文件mv ../sshd.backup /etc/pam.d/sshd mv ../sshd_config.backup /etc/ssh/sshd_config#添加自启动chkconfig --add sshd chkconfig sshd on#重启服务systemctl restart sshd# 查看版本, 验证结果 - 显示9.4p1即成功ssh -V