CentOS 8 升级 OpenSSH 8.4

安全 centos8 运维 · systemofdown · 于 3个月前 发布 · 418 次阅读

背景

近日有安全提示:OpenSSH XMSS Key 解析整数溢出漏洞

XMSS中使用的签名方案是有状态的,这意味着密钥随时间而变化,此过程需要考虑以前保存的“状态”(如果有)。负责处理XMSS保存的“状态”的函数会由于整数溢出漏洞而导致内存破坏。任何可以解析私有XMSS密钥的OpenSSH函数都容易受到攻击。

披露时间:2019-10-09 00:00:00 CVE编号:CVE-2019-16905

修复方案

升级OpenSSH至8.1及以上版本

需确认机器已安装的软件包中不存在低版本openssh组件,如可通过执行命令:rpm -qa | grep openssh查看组件版本。

准备工作

安装编译所需依赖软件包:

yum install wget gcc -y
yum install -y zlib-devel openssl-devel 
yum install pam-devel libselinux-devel zlib-devel openssl-devel -y 

下载安装包OpenSSH8.4上传至服务器或wget直接下载

cd /usr/local/src
wget https://cdn.openbsd.org/pub/OpenBSD/OpenSSH/portable/openssh-8.4p1.tar.gz

备份配置文件 一般卸载的时候都会把配置文件以sshd_config.rpmsave的方式另存一份,但是/etc/pam.d/sshd这个配置文件并没有另存,所以建议都备份一下。

cp /etc/ssh/sshd_config sshd_config.backup
cp /etc/pam.d/sshd sshd.backup

删除低版本OpenSSH的的rpm包

rpm -e --nodeps `rpm -qa | grep openssh`

安装openssh

解压

tar -zxvf openssh-8.4p1.tar.gz
cd  openssh-8.4p1

编译配置

 ./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

设置允许root用户远程登录

vim /etc/ssh/sshd_config
  1. 修改#PermitRootLogin prohibit-password项,去掉注释#并把prohibit-password改为yes,修改后即为PermitRootLogin yes

  2. 去掉注释#PasswordAuthentication yes变为PasswordAuthentication yes 如果使用证书登陆可以关闭这个

  3. 升级之后sftp如果不好用了,需要注意的是要查看一下相关设置,新的是Subsystem sftp /usr/libexec/sftp-server原始系统自带的是Subsystem sftp /usr/libexec/openssh/sftp-server

  4. 一般系统是开启PAM模块的,但是编译安装升级后,这个是关闭状态,如果启用PAM,需要有一个控制文件,去掉注释#UsePAM no 变为UsePAM yes,如果打开这个模式,不要忘了把配置文件/etc/pam.d/sshd.backup改回来,否则登陆不了。

     mv /etc/pam.d/sshd.backup /etc/pam.d/sshd
    

    如果没有/etc/pam.d/sshd文件,可以手动创建一个,使用默认的配置

     #%PAM-1.0
    auth       required     pam_sepermit.so
    auth       substack     password-auth
    auth       include      postlogin
    # Used with polkit to reauthorize users in remote sessions
    -auth      optional     pam_reauthorize.so prepare
    account    required     pam_nologin.so
    account    include      password-auth
    password   include      password-auth
    # pam_selinux.so close should be the first session rule
    session    required     pam_selinux.so close
    session    required     pam_loginuid.so
    # pam_selinux.so open should only be followed by sessions to be executed in the user context
    session    required     pam_selinux.so open env_params
    session    required     pam_namespace.so
    session    optional     pam_keyinit.so force revoke
    session    include      password-auth
    session    include      postlogin
    # Used with polkit to reauthorize users in remote sessions
    -session   optional     pam_reauthorize.so prepare
    

添加添加自启服务ssh到开机启动项

chkconfig --add sshd
chkconfig sshd on

重启服务

systemctl restart sshd

验证结果

查看下安装结果:

ssh -V

本文由 systemofdown 创作,采用 知识共享署名 3.0 中国大陆许可协议 进行许可。 可自由转载、引用,但需署名作者且注明文章出处。

共收到 0 条回复
没有找到数据。
添加回复 (需要登录)
需要 登录 后方可回复, 如果你还没有账号请点击这里 注册