CentOS7 OpenSSH 安全漏洞(CVE-2021-28041)修复(升级OpenSSH至最新版本(8.8))

57 篇文章 3 订阅
35 篇文章 1 订阅

准备工作

配置镜像源

如果是内网条件下,建议配置本地源,本地源的配置方式可以参考我的博客:CentOS7配置本地yum源_szw906689771的博客-CSDN博客

如果是外网条件,可以配置阿里云等的镜像源。

安装telnet

避免升级失败后无法ssh登录

#进行安装,客户端和服务器端
yum -y install telnet-server.x86_64
yum -y install telnet.x86_64
yum -y install xinetd.x86_64


#配置开机启动
systemctl enable xinetd.service
systemctl enable telnet.socket

#启动服务
systemctl start telnet.socket
systemctl start xinetd

#查看端口,看到23端口已打开
netstat -ntlp

#说明:如果提示-bash: netstat: 未找到命令,则安装一下netstat 命令,执行以下yum
yum -y install net-tools

#开启防火墙允许访问23端口(没开防火墙跳过此步骤)
firewall-cmd --add-port=23/tcp --permanent
firewall-cmd --reload

#默认root无法远程访问,修改/etc/securetty
vi /etc/securetty
在末尾添加
pts/0
pts/1

测试使用telnet登录服务器

 测试Telnet

利用windows电脑进行测试:

 

 

升级OpenSSL版本

下载新版本到指定目录

 备份证书文件和秘钥文件

mv /usr/bin/openssl /usr/bin/openssl.old&&mv /usr/include/openssl /usr/include/openssl.old

安装新版本openssl

#解压
cd /media/update_openssh_8.8/
tar -zxvf openssl-1.0.2r.tar.gz
#进入目录
cd openssl-1.0.2r
#预编译到指定安装路径,生成Makefile文件,-t参数可测试编译情况,–prefix:指定安装目录;–openssldir:指定openssl配置文件路径
./config --prefix=/usr/local/openssl

说明:执行上面语句,可能回抛出如下问题

需要我们安装一下Perl 5,首先下载安装包,上传至服务器。

 

#进入目录
cd /media/update_openssh_8.8/
#解压
tar -zxvf perl-5.28.0.tar.gz
#进入解压目录
cd perl-5.28.0
# Dprefix :指定安装目录
./Configure -des -Dprefix=/usr/local/perl5

 执行上面命令,如果出现以下报错:

 则执行:

yum install gcc
yum install gcc-c++

后续继续执行:

make
make install

至此Perl 5安装完成,我们继续安装openssl

#进入目录:
cd /media/update_openssh_8.8/openssl-1.0.2r/

#预编译到指定安装路径,生成Makefile文件,-t参数可测试编译情况,–prefix:指定安装目录;–openssldir:指定openssl配置文件路径
./config --prefix=/usr/local/openssl

#编译
make

#安装
make install

替换原有旧openssl文件

ln -s /usr/local/openssl/bin/openssl /usr/bin/openssl
ln -s /usr/local/openssl/include/openssl /usr/include/openssl
#在/etc/ld.so.conf文件中写入openssl库文件的搜索路径
echo "/usr/local/openssl/lib" >> /etc/ld.so.conf
#使修改后的/etc/ld.so.conf生效

验证版本

openssl version

 至此openssl安装完毕。

升级OpenSSH

下载OpenSSH

 

#进入文件存放的目录
cd /media/update_openssh_8.8/
#解压
tar -zxvf openssh-8.8p1.tar.gz

编译安装

cd openssh-8.8p1
#编译
./configure --prefix=/usr --sysconfdir=/etc/ssh --with-md5-passwords --with-pam --with-tcp-wrappers --with-ssl-dir=/usr/local/openssl --with-zlib=/usr/local/lib64 --without-hardening

抛出下面的错误。

 安装Zlip

yum -y install zlib zlib-devel

抛出:

 执行:

yum -y install pam-devel

继续执行命令:

./configure --prefix=/usr --sysconfdir=/etc/ssh --with-md5-passwords --with-pam --with-tcp-wrappers --with-ssl-dir=/usr/local/openssl --with-zlib=/usr/local/lib64 --without-hardening

#查看结果,输出为0代表正常
echo $?

 安装

make
#查看结果,输出为0代表正常
echo $?
make install
#查看结果,输出为0代表正常
echo $?

配置SSH文件

#允许root账户登录
echo "PermitRootLogin yes" >> /etc/ssh/sshd_config
grep "^PermitRootLogin"  /etc/ssh/sshd_config

echo "UseDNS no" >> /etc/ssh/sshd_config
grep  "UseDNS"  /etc/ssh/sshd_config    

#复制文件到系统服务目录
cp -a contrib/redhat/sshd.init /etc/init.d/sshd
cp -a contrib/redhat/sshd.pam /etc/pam.d/sshd.pam

#添加执行权限
chmod +x /etc/init.d/sshd

#添加服务,配置开机启动
chkconfig --add sshd
systemctl enable sshd
chkconfig sshd on

#原来的服务移走,否则有时重启后ssh服务起不来
mv /usr/lib/systemd/system/sshd.service  /home/

测试验证

测试服务是否正常:

/etc/init.d/sshd restart

抛出如下异常:

 执行: systemctl status sshd.service

执行: journalctl -xe

 于是执行:

chmod 0600 /etc/ssh/ssh_host_ed25519_key

 

查看端口
netstat -ntlp

#可以通过systemctl start/stop/restart sshd.service   启动/停止/重启sshd服务
#查看版本
ssh -V

 关闭telnet

systemctl disable xinetd.service
systemctl stop xinetd.service
systemctl disable telnet.socket
systemctl stop telnet.socket

再次使用telnet就不能再登录了。
再次漏扫,漏洞消除!

  • 0
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值