CentOS7.9安装OpenSSL 1.1.1t和OpenSSH9.9p1
一、临时开启telnet登录方式,避免升级失败无法登录系统
(注意telnet登录方式存在安全隐患,升级openssh相关服务后要记得关闭)
1.安装telnet服务
yum -y install xinetd telnet*
2.允许root用户通过telnet登陆,编辑文件注释掉下面这行:
vim /etc/pam.d/login
#auth [user_unknown=ignore success=ok ignore=ignore default=bad] pam_securetty.so
3.备份配置文件/etc/securetty
cp /etc/securetty /etc/securetty.bak
4.添加超级用户登陆设备至/etc/securetty文件:
echo "pts/1" >> /etc/securetty
echo "pts/2" >> /etc/securetty
echo "pts/3" >> /etc/securetty
echo "pts/4" >> /etc/securetty
echo "pts/5" >> /etc/securetty
echo "pts/6" >> /etc/securetty
echo "pts/7" >> /etc/securetty
echo "pts/8" >> /etc/securetty
echo "pts/9" >> /etc/securetty
echo "pts/10" >> /etc/securetty
5.开启root用户远程登陆,编辑文件注释掉下面这行:
vim /etc/pam.d/remote
#auth required pam_securetty.so
6.创建 Telnet 的 xinetd 配置文件,使用下面的命令创建并编辑/etc/xinetd.d/telnet文件:
vim /etc/xinetd.d/telnet
在文件中添加以下内容:
# default: on
# description: The telnet server serves telnet sessions; it uses \
# unencrypted username/password pairs for authentication.
service telnet
{
flags = REUSE
socket_type = stream
wait = no
user = root
server = /usr/sbin/in.telnetd
log_on_failure += USERID
disable = no
}
编辑完成后,保存并退出。
7.防火墙规则放行telnet默认端口23
firewall-cmd --add-port=23/tcp --zone=public --permanent
firewall-cmd --reload
8.启动 xinetd 服务
systemctl start xinetd
9.如果要禁用telnet服务,执行如下操作:
#停止telnet服务
systemctl stop xinetd
systemctl disable xinetd
systemctl stop telnet.socket
#防火墙禁用端口
firewall-cmd --remove-port=23/tcp --zone=public --permanent
firewall-cmd --reload
#编辑配置文件,恢复注释过的配置项:
vim /etc/pam.d/login
auth [user_unknown=ignore success=ok ignore=ignore default=bad] pam_securetty.so
vim /etc/pam.d/remote
auth required pam_securetty.so
二、编译安装 OpenSSL 1.1.1t(全新安装)
1.下载依赖
yum install -y gcc make perl zlib-devel
2.在进行升级操作之前,对现有的 OpenSSL 和 OpenSSH 配置文件进行备份,防止升级过程中出现问题导致配置丢失。
cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak
cp /etc/ssh/ssh_config /etc/ssh/ssh_config.bak
3.下载并解压(路径根据实际情况修改)
mkdir -p /root/soft && cd /root/soft
wget -O openssl-1.1.1t.tar.gz https://www.openssl.org/source/openssl-1.1.1t.tar.gz
tar -xzf openssl-1.1.1t.tar.gz
4.配置编译
cd openssl-1.1.1t
./config --prefix=/usr/local/openssl --openssldir=/usr/local/openssl shared zlib
5.编译安装
make -j$(nproc)
make install
6.验证安装结果
ls -l /usr/local/openssl/{lib,include/openssl}
# 必须存在以下文件:
lib/libssl.so.1.1
lib/libcrypto.so.1.1
7. 配置系统环境变量,让系统能够找到新安装的 OpenSSL 库
echo "/usr/local/openssl/lib" > /etc/ld.so.conf.d/openssl.conf
ldconfig
8. 处理 SSH 配置文件过时的选项,编辑 /etc/ssh/sshd_config 文件,注释掉不支持的选项。
vi /etc/ssh/sshd_config
在文件中找到以下几行,在行首添加 # 进行注释:
#GSSAPIAuthentication yes
#GSSAPICleanupCredentials yes
#UsePAM yes
保存并退出文件。
9. 修正 SSH 主机密钥文件权限,将 SSH 主机密钥文件权限修改为 600,确保只有文件所有者可读写。
chmod 600 /etc/ssh/ssh_host_rsa_key
chmod 600 /etc/ssh/ssh_host_ecdsa_key
chmod 600 /etc/ssh/ssh_host_ed25519_key
三、编译 OpenSSH 9.9p1(绑定 OpenSSL 1.1.1t)
1:下载安装包和编译
cd /root/soft
wget -O openssh-9.9p1.tar.gz https://ftp.openbsd.org/pub/OpenBSD/OpenSSH/portable/openssh-9.9p1.tar.gz
tar -xzf openssh-9.9p1.tar.gz
cd /root/soft/openssh-9.9p2
#编译安装文件
./configure --with-ssl-dir=/usr/local/openssl --with-zlib --sysconfdir=/etc/ssh
2.编译安装(含动态链接修复)
make -j$(nproc) && make install
# 永久生效动态链接(避免重启失效)
echo '/usr/local/openssl-1.1.1t/lib' >> /etc/ld.so.conf.d/openssl-1.1.conf
# 验证 libssl.so.1.1 路径
ldconfig -v
3. 配置 SSH 服务,将原有的 SSH 服务配置文件替换为新安装的 OpenSSH 提供的配置文件,并设置权限。
cp -f contrib/redhat/sshd.init /etc/init.d/sshd
chmod +x /etc/init.d/sshd
chkconfig --add sshd
4 启动 SSH 服务,启动 SSH 服务并设置为开机自启。
systemctl start sshd
systemctl enable sshd
5. 验证版本,验证 OpenSSL 和 OpenSSH 是否成功升级到指定版本。
/usr/local/openssl/bin/openssl version
ssh -V
6. 验证 SSH 服务,检查 SSH 服务是否正常运行。
systemctl status sshd
最后要记得,按照前面步骤禁用telnet登录方式。