目录
背景
安装包下载
上传解压安装包
安装zlib
安装OpenSSL
安装OpenSSH
验证
背景
近期,项目上线已进入倒计时阶段,然而在至关重要的安全检查环节中,却惊现现有的 OpenSSH 存在一系列令人担忧的漏洞:
OpenSSH 资源管理错误漏洞(CVE-2021-28041)
OpenSSH 信息泄露漏洞(CVE-2020-14145)
OpenSSH 输入验证错误漏洞(CVE-2020-12062)
OpenSSH 操作系统命令注入漏洞(CVE-2020-15778)
OpenSSH 安全漏洞(CVE-2023-51385)
OpenSSH 安全漏洞(CVE-2023-38408)
OpenSSH 安全漏洞(CVE-2021-41617)
OpenSSH 安全漏洞(CVE-2016-20012)
鉴于此严峻形势,按照相关的漏洞修复指引,当务之急是将 OpenSSH 升级到更为安全可靠的 9.8 版本,以确保项目能够顺利上线并在安全的环境中稳定运行。
安装包下载
- 查看服务器系统版本
[root@localhost ~]# cat /etc/os-release
NAME="Kylin Linux Advanced Server"
VERSION="V10 (Sword)"
ID="kylin"
VERSION_ID="V10"
PRETTY_NAME="Kylin Linux Advanced Server V10 (Sword)"
ANSI_COLOR="0;31"
- 下载OpenSSH
openssh-9.8p1.tar.gzhttps://cdn.openbsd.org/pub/OpenBSD/OpenSSH/portable/openssh-9.8p1.tar.gz
- 下载OpenSSL
openssl-3.2.2.tar.gzhttps://github.com/openssl/openssl/releases/download/openssl-3.2.2/openssl-3.2.2.tar.gz
- 下载zlib
zlib-1.3.1.tar.gzhttps://zlib.net/fossils/zlib-1.3.1.tar.gz
上传解压安装包
将这3个安装包放置服务器 /opt 目录下,执行以下命令,解压安装包
tar -xf openssh-9.8p1.tar.gz
tar -xf openssl-3.2.2.tar.gz
tar -xf zlib-1.3.1.tar.gz
安装zlib
- 编译安装
cd /opt/zlib-1.3.1
./configure --prefix=/usr/local/src/zlilb
make -j 4 && make test && make install
- 验证
[root@localhost opt]# ldconfig -V
ldconfig (GNU libc) 2.28
Copyright (C) 2018 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
Written by Andreas Jaeger.
安装OpenSSL
- 编译安装
cd /opt/openssl-3.2.2
./config --prefix=/usr/local/src/openssl# 这里需要等待较长时间,勿慌
make -j 4 && make install
- 创建openssl软连接
mv /usr/bin/openssl /usr/bin/openssl.bak2
ln -s /usr/local/src/openssl/bin/openssl /usr/bin/openssl
ln -s /usr/local/src/openssl/lib64/libssl.so.3 /usr/lib64/libssl.so.3
ln -s /usr/local/src/openssl/lib64/libcrypto.so.3 /usr/lib64/libcrypto.so.3
- 验证
[root@localhost openssl-3.2.2]# openssl version -a
OpenSSL 3.2.2 4 Jun 2024 (Library: OpenSSL 3.2.2 4 Jun 2024)
built on: Tue Dec 3 13:10:47 2024 UTC
platform: linux-x86_64
options: bn(64,64)
compiler: gcc -fPIC -pthread -m64 -Wa,--noexecstack -Wall -O3 -DOPENSSL_USE_NODELETE -DL_ENDIAN -DOPENSSL_PIC -DOPENSSL_BUILDING_OPENSSL -DNDEBUG
OPENSSLDIR: "/usr/local/src/openssl/ssl"
ENGINESDIR: "/usr/local/src/openssl/lib64/engines-3"
MODULESDIR: "/usr/local/src/openssl/lib64/ossl-modules"
Seeding source: os-specific
CPUINFO: OPENSSL_ia32cap=0xfff83203078bffff:0x209c01ab
安装OpenSSH
- 编译安装
cd /opt/openssh-9.8p1
./configure --prefix=/usr/local/src/ssh --sysconfdir=/etc/ssh --with-pam --with-ssl-dir=/usr/local/src/openssl --with-zlib=/usr/local/src/zlilb
make -j 4 && make install
- 覆盖旧的ssh文件
cp -rf /opt/openssh-9.8p1/contrib/redhat/sshd.init /etc/init.d/sshd
cp -rf /usr/local/src/ssh/sbin/sshd /usr/sbin/sshd
cp -rf /usr/local/src/ssh/bin/ssh /usr/bin/ssh
cp -rf /usr/local/src/ssh/bin/ssh-keygen /usr/bin/ssh-keygen
- 设置ssh允许root用户登录、开启公钥认证登录、允许密码认证登录
echo 'PermitRootLogin yes' >>/usr/local/openssh/etc/sshd_config
echo 'PubkeyAuthentication yes' >>/usr/local/openssh/etc/sshd_config
echo 'PasswordAuthentication yes' >>/usr/local/openssh/etc/sshd_config
- 重启ssh
systemctl daemon-reload
/etc/init.d/sshd restart
/etc/init.d/sshd status
- 查看ssh版本
[root@gxq-fwaqjc-4 openssh-9.8p1]# ssh -V
OpenSSH_9.8p1, OpenSSL 3.2.2 4 Jun 2024
- 设置开机自启
chkconfig --add sshd
验证
最后,打开新窗口尝试是否能通过SSH连接服务器,千万不要关闭当前连接,验证新窗口能正常连接再关闭,不然操作失误,无法连接上服务器就难搞了。
该篇教程到此结束啦,亲测可用,希望也能解决你的问题!如果有帮助到你,点个赞呗!🎉🎉🎉