IT博客汇
  • 首页
  • 精华
  • 技术
  • 设计
  • 资讯
  • 扯淡
  • 权利声明
  • 登录 注册

    OpenSSH高危漏洞和升级教程

    1900发表于 2024-07-02 12:17:24
    love 0

    在TG上看到 OpenSSH出现高危远程代码执行漏洞-影响超过1400万台暴露在公网上的服务器 一文,遂用 ssh -v 检查了一下自己的SSH版本,似乎在受影响范围,遂打算赶紧升级一下。

    问了一下GPT,给的方案是 sudo apt update ,但是不管用,后找了一篇教程 ssh爆漏洞了,手动更新OpenSSH教程,整理了一下相关资讯,教程和注意事项如下。

    💡
    提示
    升级后你的 sshd_config 设置会被覆盖,再重启服务器前请重新设置配置文件。
    Ubuntu 的软件源更新了 https://ubuntu.com/security/notices/USN-6859-1
    Debian 11 12 已经修复了 https://security-tracker.debian.org/tracker/CVE-2024-6387

    尽量使用包管理更新openssh
    make install安装会导致后续无法使用包管理更新
    我按手动方式操作完后出现了问题,后重新使用 apt-get 安装解决
    sudo apt-get purge openssh-server
    sudo apt-get install openssh-server

    自动升级

    如果你是Debian12的话可以使用apt包管理工具一键升级

    1. 更新包列表:sudo apt update
    2. 升级 OpenSSH: sudo apt upgrade openssh-server
    3. 检查版本: ssh -V
    4. 重启服务: sudo systemctl restart ssh

    手动编译安装

    查看版本

    ssh -v
    sudo apt update
    sudo apt upgrade
    

    更新安装必须的包

    sudo apt-get  -y update
    sudo apt-get install build-essential zlib1g-dev libssl-dev
    

    下载最新的包:

    wget https://cdn.openbsd.org/pub/OpenBSD/OpenSSH/portable/openssh-9.8p1.tar.gz
    

    解压:

    tar -xzf openssh-9.8p1.tar.gz
    cd openssh-9.8p1
    

    编译:

    ./configure
    make
    

    安装

    sudo make install
    

    重启服务&查看版本

    sudo systemctl restart ssh
    ssh -V
    

    如果版本没显示openssh-9.8p1,就是需要添加环境变量:

    echo 'export PATH=/usr/local/bin:/usr/local/sbin:$PATH' >> ~/.bashrc
    

    验证生效

    source ~/.bashrc
    

    查看版本(出现openssh-9.8p1就OK)

    ssh -V
    

    修改 ssh.service 文件中的 ExecStartPre、ExecStart 和 ExecReload 行,
    将 /usr/sbin/sshd 改为 /usr/local/sbin/sshd

    sudo sed -i 's|ExecStartPre=/usr/sbin/sshd|ExecStartPre=/usr/local/sbin/sshd|; s|ExecStart=/usr/sbin/sshd|ExecStart=/usr/local/sbin/sshd|; s|ExecReload=/usr/sbin/sshd|ExecReload=/usr/local/sbin/sshd|' /lib/systemd/system/ssh.service
    

    确认修改内容:

    grep -E 'ExecStartPre|ExecStart|ExecReload' /lib/systemd/system/ssh.service
    

    重新加载服务:

    sudo systemctl daemon-reload
    sudo systemctl restart sshd
    

    列出正在运行的SSH进程(确认是否是 /usr/local/sbin/sshd)

    ps -ef | grep sshd
    

    清除旧版本

    sudo rm /usr/sbin/sshd
    


沪ICP备19023445号-2号
友情链接