OpenSSH在线升级指南:安全更新OpenSSH到9.6p1

OpenSSH在线升级指南:安全更新OpenSSH到9.6p1

摘要:本教程详细指导如何在Linux系统中安全升级OpenSSH到最新版本(以9.6p1为例)。通过配置Telnet备用连接、备份关键文件、升级依赖库(OpenSSL/Zlib),最终完成OpenSSH的编译安装与验证,确保升级过程不影响服务器远程访问能力。升级的目的是为了解决漏洞。
以下是漏洞列表

漏洞名称
OpenSSL安全漏洞(CVE-2023-5363)
OpenSSL安全漏洞(CVE-2023-51767)
OpenSSL输入验证错误漏洞(CVE-2021-23840)
OpenSSL缓冲区错误漏洞(CVE-2021-3712)
OpenSSL缓冲区错误漏洞(CVE-2021-3711)
OpenSSL代码问题漏洞(CVE-2020-1967)
OpenSSL安全漏洞(CVE-2022-0778)
OpenSSL资源管理错误漏洞(CVE-2022-4450)
OpenSSL安全漏洞(CVE-2023-0286)
OpenSSL操作系统命令注入漏洞(CVE-2022-1292)
OpenSSH资源管理错误漏洞(CVE-2021-28041)
OpenSSH安全漏洞(CVE-2021-41617)
OpenSSH操作系统命令注入漏洞(CVE-2020-15778)
OpenSSH代码问题漏洞(CVE-2023-38408)
Red Hat Enterprise Linux Openssh输入验证漏洞(CVE-2008-3844)

目录

一、配置Telnet备用访问

目的:防止SSH升级失败导致服务器失联

apt-get install telnetd xinetd -y

1. 配置inetd服务

vi /etc/inetd.conf

注释Telnet行(添加#前缀):

# telnet stream tcp nowait telnetd /usr/sbin/tcpd /usr/sbin/in.telnetd

inetd.conf配置

2. 配置xinetd服务

vi /etc/xinetd.conf

确保包含以下参数:

defaults {
  instances = 60
  log_type = SYSLOG authpriv
  log_on_success = HOST PID
  log_on_failure = HOST
  cps = 25 30
}
includedir /etc/xinetd.d

xinetd.conf配置

3. 启用Telnet服务

写入配置:

sudo cat > /etc/xinetd.d/telnet << 'EOF'
service telnet
{
  disable = no
  socket_type = stream
  wait = no
  user = root
  server = /usr/sbin/in.telnetd
  log_on_failure += USERID
  flags = REUSE
  bind = 0.0.0.0
}
EOF
# 赋权
chmod 644 /etc/xinetd.d/telnet

telnet服务配置

4. 启动服务并验证

/etc/init.d/xinetd restart
netstat -a | grep telnet  # 应显示23端口监听

二、备份SSH关键文件

重要性:升级失败时可快速回滚

vi backup.sh

粘贴备份脚本:

#!/bin/bash
BACKUP_DIR="/backup_ssh_$(date +%Y%m%d)"
sudo mkdir $BACKUP_DIR

# 备份配置文件
sudo cp -r /etc/ssh $BACKUP_DIR/etc_ssh
sudo cp /etc/ssh/sshd_config $BACKUP_DIR/sshd_config.orig

# 备份二进制文件
sudo cp /usr/sbin/sshd $BACKUP_DIR/sshd.bak
sudo cp /usr/bin/ssh $BACKUP_DIR/ssh.bak
sudo cp /usr/bin/ssh-keygen $BACKUP_DIR/ssh-keygen.bak

# 备份服务配置
sudo cp /lib/systemd/system/ssh.service $BACKUP_DIR/ssh.service.bak
sudo cp /etc/init.d/ssh $BACKUP_DIR/ssh_init.bak

# 记录当前版本
ssh -V 2>&1 | sudo tee $BACKUP_DIR/ssh_version.txt

运行脚本:

chmod +x backup.sh && ./backup.sh

备份操作

三、升级OpenSSL(3.0.13)

cd /home/files/ssh_up
wget https://www.openssl.org/source/openssl-3.0.13.tar.gz
tar xvf openssl-*.tar.gz
cd openssl-3.0.13

# 编译安装
./config shared --prefix=/usr/local/openssl --openssldir=/usr/local/openssl
make && make install

# 替换系统openssl
mv /usr/bin/openssl /usr/bin/openssl.bak
ln -s /usr/local/openssl/bin/openssl /usr/bin/openssl

# 更新库链接
echo '/usr/local/openssl/lib64' | sudo tee /etc/ld.so.conf.d/openssl.conf
ldconfig -v

# 验证版本
openssl version  # 应显示OpenSSL 3.0.13

OpenSSL版本验证

四、升级Zlib(1.3.1)

cd ..
wget https://zlib.net/zlib-1.3.1.tar.gz
tar xvf zlib-*.tar.gz
cd zlib-1.3.1

./configure --prefix=/usr/local/zlib
make && make install

五、编译安装OpenSSH(9.6p1)

cd ..
wget https://cdn.openbsd.org/pub/OpenBSD/OpenSSH/portable/openssh-9.6p1.tar.gz
tar xvf openssh-*.tar.gz
cd openssh-9.6p1

# 配置编译选项
./configure \
  --prefix=/usr \
  --sysconfdir=/etc/ssh \
  --with-ssl-dir=/usr/local/openssl \
  --with-zlib=/usr/local/zlib \
  --with-pam \
  --with-selinux \
  --with-kerberos5 \
  --with-md5-passwords \
  --with-privsep-path=/var/lib/sshd

# 编译安装
make && make install

六、恢复服务配置

1. 修改服务类型

sudo cp $BACKUP_DIR/ssh.service.bak /lib/systemd/system/ssh.service
sed -i 's/Type=notify/Type=simple/' /lib/systemd/system/ssh.service

服务类型修改

2. 更新PAM配置

sudo cp /etc/pam.d/sshd /etc/pam.d/sshd.bak
sudo sed -i 's/@include common-auth/#@include common-auth/' /etc/pam.d/sshd

3. 恢复SSH配置文件

sudo cp $BACKUP_DIR/sshd_config.orig /etc/ssh/sshd_config

七、重启服务并验证

# 重载服务配置
sudo systemctl daemon-reexec
sudo systemctl daemon-reload

# 重启SSH
sudo systemctl restart ssh

# 验证版本
ssh -V  # 应显示OpenSSH_9.6p1

# 检查服务状态
systemctl status ssh

# 测试本地连接
ssh -v localhost

# 检查端口监听
netstat -tuln | grep ':22'

服务状态验证
SSH连接测试
端口监听状态

升级后检查清单

  1. 通过Telnet和SSH分别登录验证

  2. 检查/var/log/auth.log无错误日志

  3. 确认业务应用连接正常

  4. (重要) 禁用Telnet服务:

    sed -i 's/disable = no/disable = yes/' /etc/xinetd.d/telnet
    systemctl restart xinetd
    

通过本教程,您已完成OpenSSH的安全升级!建议定期检查OpenSSH官网获取安全更新。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值