SSH升级

1、背景

安全组反馈机器存在如下SSH漏洞,要求修复。

OpenSSH 安全漏洞(CVE-2023-38408)
OpenSSH 输入验证错误漏洞(CVE-2019-16905)
OpenSSH 命令注入漏洞(CVE-2020-15778)
OpenSSH 安全漏洞(CVE-2021-41617)
OpenSSH信息泄露漏洞(CVE-2020-14145)
OpenSSH 安全漏洞(CVE-2016-20012)

查看了一下说明,都是因为版本低导致。查看机器SSH版本8.0p1。
访问https://mirrors.aliyun.com/pub/OpenBSD/OpenSSH/portable,发现最新版本9.5p1,准备升级到9.4p1。

2.升级SSH版本

下载9.4p1之后安装。查询SSH版本,ssh -V,发现版本已更新至9.4p1。然后让安全组的同事重新扫描,结果漏洞依然存在,ssh版本还是8.0p1。很是困惑。通过rpm -qa | grep ssh。发现版本是8.0p1。想到可能需要先卸之前SSH。

3、升级步骤

  • 3.1 配置Telnet服务

    • 安装Telnet服务端(防止OpenSSH升级失败后导致当前SSH终端断开连接无法远程操作)

        yum -y install xinetd telnet-server
      
    • 允许root用户登录:

        echo -e "pts/0\npts/1\npts/2\npts/3\npts/4\npts/5" >> /etc/securetty
      
        tail -6 /etc/securetty
      
    • 修改Telnet默认TCP/23端口

        grep -w "^telnet" /etc/services
      
        sed -i "s#23/tcp#23023/tcp#" /etc/services
      
        sed -i "s#23/udp#23023/udp#" /etc/services
      
        grep -w "^telnet" /etc/services
      
        grep -w "^ListenStream" /usr/lib/systemd/system/telnet.socket
      
        sed -i "s/ListenStream=23/ListenStream=23023/" /usr/lib/systemd/system/telnet.socket
      
        grep -w "^ListenStream" /usr/lib/systemd/system/telnet.socket
      
    • 启动服务

        systemctl start xinetd
      
        systemctl enable xinetd
      
        systemctl start telnet.socket
      
        systemctl enable telnet.socket
      
        ss -tunlp | grep 23023
      
    • 测试 telnet

  • 3.2 安装新版本

    • 备份配置文件

        cd /etc/ssh
      
        cp sshd_config{,.bak}
      
        cd /etc/pam.d
      
        cp sshd{,.bak}
      
    • 安装依赖软件包

        yum -y install gcc gcc-c++ zlib-devel openssl-devel pam-devel
      
    • 卸载旧版本

        rpm -qa | grep openssh
      
        rpm -e --nodeps `rpm -qa | grep openssh`
      
    • 安装新版本

        tar -zxvf openssh-9.4p1.tar.gz /usr/local
      
        cd /usr/local/openssh-9.4p1
      
        ./configure --prefix=/usr --sysconfdir=/etc/ssh --with-zlib --with-pam
      
        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
      
    • 还原之前备份的配置文件

        cd /etc/ssh
      
        mv -f sshd_config.bak sshd_config
      
        cd /etc/pam.d
      
        mv -f sshd.bak sshd
      
    • 允许root用户远程登录

        sed -i 's/#PermitRootLogin yes/PermitRootLogin yes/g' /etc/ssh/sshd_config
      
    • 设置开机自启

        chkconfig --add sshd
      
        chkconfig sshd on
      
        chkconfig --list
      
    • 重启SSH

        systemctl restart sshd
      
        systemctl status sshd
      
    • 版本验证

        ssh -V
      
    • 修复sftp协议使用类似Xftp工具传输文件

        vim /etc/ssh/sshd_config
        Subsystem  sftp  /usr/libexec/openssh/sftp-server
        修改为:
        Subsystem  sftp  internal-sftp
        systemctl restart sshd
      
  • 3.3 关闭Telnet服务

      systemctl stop xinetd
      systemctl disable xinetd
      systemctl stop telnet.socket
      systemctl disable telnet.socket
      ss -tunlp | grep 23023
    
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容