SSH 升级记录(附常见问题)

3 条回复
61 次浏览

2Libra 首发,我还没发公众号 👀

由于合规需要,OpenSSH 存在一些中高危漏洞(版本匹配,实际利用难度很高,但是评级还是中高危),需要升级版本,系统为 CentOS7.9,自带的 SSH 为 7.4p1,去年出了几个 CVE,最低要升到 10+
image
升级前,7.4p1 的扫描记录
下面开始升级
高版本 OpenSSH 需要升级 OpenSSL,系统自带的为:1.0.2k,这里为了防止其他东西出问题,就不升级为 3+了,只升级到 1.1
备份 YUM 源
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.bak
更新为阿里云旧版本 CentOS 源

复制
cat > /etc/yum.repos.d/CentOS-Base.repo <<EOF
[base]
name=CentOS-7 - Base
baseurl=http://mirrors.aliyun.com/centos-vault/7.9.2009/os/x86_64/
gpgcheck=0

[updates]
name=CentOS-7 - Updates
baseurl=http://mirrors.aliyun.com/centos-vault/7.9.2009/updates/x86_64/
gpgcheck=0

[extras]
name=CentOS-7 - Extras
baseurl=http://mirrors.aliyun.com/centos-vault/7.9.2009/extras/x86_64/
gpgcheck=0
EOF

image
替换源
yum clean all
yum makecache
image
清理重建

yum update
image
更新软件

这个仓库也没有 OpenSSL1.1 的包,这里启用 EPEL 仓库

复制
yum install -y epel-release
yum clean all
yum makecache
yum search openssl11

默认的

复制
yum install -y https://mirrors.aliyun.com/epel/epel-release-latest-7.noarch.rpm
yum clean all
yum makecache
yum install -y openssl11 openssl11-devel

阿里云 EPEL 仓库

image
境外可能有点慢,15M 用了 12 分钟,根据图可以看到,搜索到了 OpenSSL1.1 的包
安装 OpenSSL1.1
yum install -y openssl11 openssl11-devel
image
安装完毕
安装依赖
yum install -y gcc make pam-devel zlib-devel openssl-devel
image

下载 openssh 源码
wget https://cdn.openbsd.org/pub/OpenBSD/OpenSSH/portable/openssh-10.2p1.tar.gz
解压
tar -zxvf openssh-10.2p1.tar.gz
进入目录
cd openssh-10.2p1
使用 OpenSSL1.1 编译
编译 OpenSSH 时 指定 OpenSSL 的头文件和库路径
./configure --prefix=/usr --sysconfdir=/etc/ssh --with-pam --with-ssl-dir=/usr/include/openssl11 LDFLAGS="-L/usr/lib64/openssl11" CPPFLAGS="-I/usr/include/openssl11"
image
编译配置完成,准备编译&安装
make -j$(nproc)
image
编译完毕,准备安装
make install
image
安装完毕,但是 sshd 配置检查报错
新版 openssh 不支持 GSSAPIAuthentication、GSSAPICleanupCredentials
需要修改配置文件,注释这两行,新版本比较严格,需要允许 root 登录,否则会登录不了
image

配置权限(否则无法启动)
chmod600 /etc/ssh/ssh_host_*
chown root:root /etc/ssh/ssh_host_*
image
测试通过
重启后检查版本
systemctl restart sshd
image

更新后(OpenSSH10.2p1)扫描
image
没有扫出任何漏洞

1、需要 OpenSSL1.1+/3.x 才可以编译 OpenSSH9/10
2、需要手动指定 OpenSSL 的头文件和库文件,单独指定一个不行
3、需要修改 ssh_host 文件的权限
4、需要手动 PermitRootLogin yes 要不然远程不能用 root 登录,这个配置项是注释的也不行

  • 附言 1

    阿里云的 EPEL 没有 OpenSSL1.1, 5LuW5aaI55qE ,还是用国外的吧。或者编译安装 OpenSSL
    yum install -y epel-release

发表一个评论

R保持