漏洞修复-CVE-2023-48795漏洞修复方法

CVE-2023-48795漏洞修复方法

概述

简介

Secure Shell (SSH) 协议中的新安全漏洞,攻击者可能会利用该漏 洞破坏 SSH 连接的完整性。
该漏洞名为 Terrapin Attack,编号为(CVE-2023-48795,CVSS 评分:5.9)。
SSH 是一种网络协议,用于在不安全的网络上安全访问远程服务器和服务。
它使用加密技术确保连接安全, 并对服务器进行身份验证。
SSH 被系统管理员和开发人员广泛用于管理服务器和基础设施。

风险

  1. 升级OpenSSH时,由于远程登录,在重启OpenSSH后Xshell可能与主机失联。
  2. 开启telnet服务,减少与主机失联风险。
  3. 开启多个xshell标签连接同一台主机并开启top或atop命令挂起对话框,减少与主机失联风险。
  4. 升级OpenSSH以后,会影响免密登录。

官网

  1. OpenSSL网站
    1. OpenSSL官网:https://www.openssl.org/
    2. OpenSSL下载:https://www.openssl.org/source/old/index.html
    3. OpenSSL文档:https://www.openssl.org/docs/
  2. OpenSSH网站:
    1. OpenSSH官网:http://www.openssh.com/
    2. OpenSSH下载:http://www.openssh.com/openbsd.html
    3. OpenSSH下载:https://mirrors.aliyun.com/pub/OpenBSD/OpenSSH/portable/
    4. OpenSSH文档:

检查版本

检查OpenSSL版本

openssl version -a
# OpenSSL 1.0.2k-fips  26 Jan 2017
# built on: reproducible build, date unspecified
# platform: linux-x86_64
# options:  bn(64,64) md2(int) rc4(8x,int) des(idx,cisc,16,int) idea(int) blowfish(idx)
# compiler: gcc -I. -I.. -I../include  -fPIC -DOPENSSL_PIC -DZLIB -DOPENSSL_THREADS -D_REENTRANT -DDSO_DLFCN -DHAVE_DLFCN_H -DKRB5_MIT -m64 -DL_ENDIAN -Wall -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches   -m64 -mtune=generic -Wa,--noexecstack -DPURIFY -DOPENSSL_IA32_SSE2 -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_MONT5 -DOPENSSL_BN_ASM_GF2m -DRC4_ASM -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DMD5_ASM -DAES_ASM -DVPAES_ASM -DBSAES_ASM -DWHIRLPOOL_ASM -DGHASH_ASM -DECP_NISTZ256_ASM
# OPENSSLDIR: "/etc/pki/tls"
# engines:  rdrand dynamic

检查OpenSSH版本

ssh -V
# OpenSSH_7.4p1, OpenSSL 1.0.2k-fips  26 Jan 2017

开启telent服务

检查telnet是否安装

rpm -qa | grep telnet

# telnet-0.17-66.el7.x86_64							-->客户端
# telnet-server-0.17-66.el7.x86_64			-->服务端

安装telnet服务

yum -y install telnet telnet-server

启动telnet服务

systemctl enable telnet.socket
systemctl start telnet.socket

配置root可以远程登录

默认情况下,系统是不允许root用户telnet远程登陆的,如果要使用root用户直接登录,需设置以下内容。或者可以添加一个可以登录的用户,登录并su到root用户

#方法一:
mv /etc/securetty /etc/securetty.bak

#方法二:
echo 'pts/0' >>/etc/securetty
echo 'pts/1' >>/etc/securetty

验证telnet登录

  • 检查telnet进程
netstat -anutp | grep 23
  • telnet登录测试
telnet root@192.168.108.130

升级版本

升级OpenSSL

  1. 下载解压OpenSSL
wget https://www.openssl.org/source/old/1.1.1/openssl-1.1.1t.tar.gz
tar -zvxf openssl-1.1.1t.tar.gz -C /usr/local
  1. 安装OpenSSL
cd /usr/local/openssl-1.1.1t
./config shared --prefix=/usr/local/openssl
make && make install
  1. 配置OpenSSL环境
#为openssl做软连接
cp /etc/ld.so.conf /etc/ld.so.conf_`date +%F`.bak
echo "/usr/local/openssl/lib/" >> /etc/ld.so.conf

#加载配置文件
ldconfig

#备份以前的Openssl
mv /usr/bin/openssl /usr/bin/openssl_`date +%F`.bak

#创建软链接
ln -sv /usr/local/openssl/bin/openssl /usr/bin/openssl
  1. 查看版本
openssl version -a
# OpenSSL 1.1.1t  7 Feb 2023
# built on: Thu Apr 25 08:47:24 2024 UTC
# platform: linux-x86_64
# options:  bn(64,64) rc4(8x,int) des(int) idea(int) blowfish(ptr)
# compiler: gcc -fPIC -pthread -m64 -Wa,--noexecstack -Wall -O3 -DOPENSSL_USE_NODELETE -DL_ENDIAN -DOPENSSL_PIC -DOPENSSL_CPUID_OBJ -DOPENSSL_IA32_SSE2 -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_MONT5 -DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DKECCAK1600_ASM -DRC4_ASM -DMD5_ASM -DAESNI_ASM -DVPAES_ASM -DGHASH_ASM -DECP_NISTZ256_ASM -DX25519_ASM -DPOLY1305_ASM -DNDEBUG
# OPENSSLDIR: "/usr/local/openssl/ssl"
# ENGINESDIR: "/usr/local/openssl/lib/engines-1.1"
# Seeding source: os-specific

升级OpenSSH

  1. 备份现有ssh、sshd、openssh
#查看相关路径
#ssh
find / -name ssh
# /etc/selinux/targeted/active/modules/100/ssh
# /etc/ssh
# /usr/bin/ssh
# /sf/edr/agent/bin/python/modules/vulner/ssh

#sshd
find / -name sshd
# /etc/sysconfig/sshd
# /etc/pam.d/sshd
# /var/empty/sshd
# /usr/sbin/sshd

#openssh
find / -name openssh
# /usr/libexec/openssh

#sshd.service
find / -name sshd.service
# /sys/fs/cgroup/devices/system.slice/sshd.service
# /sys/fs/cgroup/systemd/system.slice/sshd.service
# /etc/systemd/system/multi-user.target.wants/sshd.service
# /usr/lib/systemd/system/sshd.service

#备份数据
#ssh
cp -ar /etc/selinux/targeted/active/modules/100/ssh /etc/selinux/targeted/active/modules/100/ssh_`date +%F`_bak
cp -ar /etc/ssh /etc/ssh_`date +%F`_bak
cp -ar /usr/bin/ssh /usr/bin/ssh_`date +%F`_bak
cp -ar /sf/edr/agent/bin/python/modules/vulner/ssh /sf/edr/agent/bin/python/modules/vulner/ssh_`date +%F`_bak

#sshd
cp -ar /etc/sysconfig/sshd /etc/sysconfig/sshd_`date +%F`_bak
cp -ar /etc/pam.d/sshd /etc/pam.d/sshd_`date +%F`_bak
cp -ar /var/empty/sshd /var/empty/sshd_`date +%F`_bak
cp -ar /usr/sbin/sshd /usr/sbin/sshd_`date +%F`_bak

#openssh
cp -ar /usr/libexec/openssh /usr/libexec/openssh_`date +%F`_bak

#启动脚本
# cp -ar /sys/fs/cgroup/devices/system.slice/sshd.service /sys/fs/cgroup/devices/system.slice/sshd.service_`date +%F`_bak
cp -ar /sys/fs/cgroup/systemd/system.slice/sshd.service /sys/fs/cgroup/systemd/system.slice/sshd.service_`date +%F`_bak
cp -ar /etc/systemd/system/multi-user.target.wants/sshd.service /etc/systemd/system/multi-user.target.wants/sshd.service_`date +%F`_bak
cp -ar /usr/lib/systemd/system/sshd.service /usr/lib/systemd/system/sshd.service_`date +%F`_bak
  1. 下载解压OpenSSH
wget https://mirrors.aliyun.com/pub/OpenBSD/OpenSSH/portable/openssh-9.6p1.tar.gz
tar -zxvf openssh-9.6p1.tar.gz -C /usr/local/
  1. 安装OpenSSH
cd /usr/local/openssh-9.6p1/
CCFLAGS="-I/usr/local/include" LDFLAGS="-L/usr/local/lib64" \
./configure --prefix=/usr/local/openssh --sysconfdir=/etc/ssh \
--with-zlib --with-ssl-dir=/usr/local/openssl
make && make install
  1. 配置OpenSSH环境
mv /usr/bin/ssh-keygen /usr/bin/ssh-keygen_`date +%F`.bak
# #执行以下命令时,必须全部执行成功,否则影响最终结果
\cp -rf /usr/local/openssh/sbin/sshd /usr/sbin/sshd
\cp -rf /usr/local/openssh/bin/ssh /usr/bin/ssh
\cp -rf /usr/local/openssh/bin/ssh-keygen /usr/bin/ssh-keygen
cp -ar /usr/local/openssh-9.6p1/contrib/redhat/sshd.init /etc/init.d/sshd
cp -ar /usr/local/openssh-9.6p1/contrib/redhat/sshd.pam /etc/pam.d/sshd.pam

#授权
chmod 600 /etc/ssh/*
  1. 启动SSHD,生成服务配置文件,并重启服务
#启用sshd,生成服务配置文件
systemctl enable sshd
#重启服务
systemctl restart sshd
#查看状态
systemctl status sshd
  1. 检查版本
ssh -V
# OpenSSH_9.6p1, OpenSSL 1.1.1t  7 Feb 2023

检查免密登录

passwd -d tomcat

失败回滚

回滚OpenSSL

  1. 还原备份
cp /etc/ld.so.conf_2024-04-26.bak /etc/ld.so.conf
ldconfig
mv /usr/bin/openssl_2024-04-26.bak /usr/bin/openssl
  1. 检查版本
openssl version -a
# OpenSSL 1.0.2k-fips  26 Jan 2017
# built on: reproducible build, date unspecified
# platform: linux-x86_64
# options:  bn(64,64) md2(int) rc4(8x,int) des(idx,cisc,16,int) idea(int) blowfish(idx)
# compiler: gcc -I. -I.. -I../include  -fPIC -DOPENSSL_PIC -DZLIB -DOPENSSL_THREADS -D_REENTRANT -DDSO_DLFCN -DHAVE_DLFCN_H -DKRB5_MIT -m64 -DL_ENDIAN -Wall -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches   -m64 -mtune=generic -Wa,--noexecstack -DPURIFY -DOPENSSL_IA32_SSE2 -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_MONT5 -DOPENSSL_BN_ASM_GF2m -DRC4_ASM -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DMD5_ASM -DAES_ASM -DVPAES_ASM -DBSAES_ASM -DWHIRLPOOL_ASM -DGHASH_ASM -DECP_NISTZ256_ASM
# OPENSSLDIR: "/etc/pki/tls"
# engines:  rdrand dynamic

回滚OpenSSH

  1. 还原备份
#删除升级信息
rm -rf /etc/init.d/sshd
rm -rf /etc/pam.d/sshd.pam

#启动脚本
rm -rf /usr/lib/systemd/system/sshd.service
cp -ar /usr/lib/systemd/system/sshd.service_2024-04-26_bak /usr/lib/systemd/system/sshd.service

#ssh
rm -rf /etc/selinux/targeted/active/modules/100/ssh
cp -ar /etc/selinux/targeted/active/modules/100/ssh_2024-04-26_bak /etc/selinux/targeted/active/modules/100/ssh
rm -rf /etc/ssh
cp -ar /etc/ssh_2024-04-26_bak /etc/ssh
rm -rf /usr/bin/ssh
cp -ar /usr/bin/ssh_2024-04-26_bak /usr/bin/ssh

#sshd
rm -rf /etc/sysconfig/sshd
cp -ar /etc/sysconfig/sshd_2024-04-26_bak /etc/sysconfig/sshd
rm -rf /etc/pam.d/sshd
cp -ar /etc/pam.d/sshd_2024-04-26_bak /etc/pam.d/sshd
rm -rf /var/empty/sshd 
cp -ar /var/empty/sshd_2024-04-26_bak /var/empty/sshd
rm -rf /usr/sbin/sshd
cp -ar /usr/sbin/sshd_2024-04-26_bak /usr/sbin/sshd

#openssh
rm -rf /usr/libexec/openssh
cp -ar /usr/libexec/openssh_2024-04-26_bak /usr/libexec/openssh
  1. 重启服务
systemctl restart sshd
  1. 检查版本
ssh -V
# OpenSSH_7.4p1, OpenSSL 1.0.2k-fips  26 Jan 2017

关闭telnet服务

还原配置

mv /etc/securetty.bak /etc/securetty

关闭服务

systemctl disalbe telnet.socket
systemctl stop telnet.socket
  • 5
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值