OpenSSH 漏洞修复升级最新版本

RoronoaV587 2024-07-24 08:37:07 阅读 84

Centos7系统ssh默认版本一般是OpenSSH7.4左右,低版本是有漏洞的而且是高危漏洞,在软件交付和安全扫描上是过不了关的,一般情况需要升级OpenSSH的最新版本

今天详细说下升级最新版本的处理过程(认真看会发现操作很简单,因为写的操作很详细...)

1、第一步通过telnet-server连接服务器

现在绝大多数服务器的操作连接基本都是走的SSH协议,也就是常用的22端口。在升级OpenSSH的过程中会卸载老版本,安装新版本,也就意味着升级过程中如果出现了问题,你可能会永远连不上你的服务器了,最后只能重装系统(在客户服务器上踩过雷...)

如何避免这个问题呢,就是采用telnet协议(23端口)来连接服务器,这样在SSH升级的过程中失败也不会有影响,重来就完事了 ~

安装telnet-server服务

<code>#telnet服务是由xinetd管理的,需要安装xinetd服务才能启动telnet-server

yum -y install telnet-server xinetd

#添加telnet配置文件

echo "service telnet

{

flags = REUSE

socket_type = stream

wait = no

user = root

server = /usr/sbin/in.telnetd

log_on_failure += USERID

disable = no

}" > /etc/xinetd.d/telnet

#启动xinetd

systemctl start xinetd

#开机自启xinetd (开机自启最好加上,升级完成SSH之后。会有重启环节,为防止意外服务最好自启 后续升级完成再关闭就行)

systemctl enable xinetd

服务安装完成,创建新用户用来登录telnet

#telnet本身拒绝root用户远程登录,最好用普通用户登录 然后su 到root账户

#创建账号

useradd test

#设置密码

passwd test

用telnet方式连接登录服务器

[root@jinzhi01 ~]# telnet 192.168.0.200

Trying 192.168.0.200...

Connected to 192.168.0.200.

Escape character is '^]'.

Kernel 3.10.0-862.el7.x86_64 on an x86_64

jinzhi01 login: test

Password:

Last login: Sat Dec 2 22:44:45 from jinzhi01

[test@jinzhi01 ~]$ su

密码:

[root@jinzhi01 test]#

到这里telnet网络连接就安装完成了,安全部分已经得到保障,后续所有操作 都可以在telnet连接下进行(你会发现和SSH协议 除了登录有点区别,操作都是一样的)

2、安装openssl和zlib

升级OpenSSH需要先安装最新版的openssl和zlib

openssl地址

icon-default.png?t=N7T8

https://www.openssl.org/source/

zlib地址

icon-default.png?t=N7T8

https://www.zlib.net/OpenSSH: for OpenBSDOpenSSH for OpenBSD

icon-default.png?t=N7T8

https://www.openssh.com/openbsd.html下载安装包

<code>#进入源码存放目录

cd /usr/local/src/

#下载openssh最新安装包

wget https://cdn.openbsd.org/pub/OpenBSD/OpenSSH/portable/openssh-9.5p1.tar.gz

#下载ssl

wget https://www.openssl.org/source/openssl-3.2.0.tar.gz --no-check-certificate

#下载zlib

wget https://www.zlib.net/zlib-1.3.tar.gz

安装zlib

cd /usr/local/src/

#解压文件

tar zxvf zlib-1.3.tar.gz

cd zlib-1.3

#安装前置依赖

yum install gcc gcc-c++ make -y

#编译安装zlib

./configure --prefix=/usr/local/zlib

make && make install

安装openssl

cd /usr/local/src/

#解压文件

tar zxvf openssl-3.2.0.tar.gz

cd openssl-3.2.0

#安装相应的前置依赖

yum install -y perl-CPAN perl-ExtUtils-CBuilder perl-ExtUtils-MakeMaker

#--prefix指定编译到的目录,"shared"作用是生成动态链接库(即.so库)

./config --prefix=/usr/local/ssl --shared

#编译安装ssl,这个安装过程很长大概有10分钟左右

make && make install

#路径写入etc/ld.so.conf

#这里有网友遇到过问题(32位系统兼容问题),命令已修复从lib64改为lib,这样64位和32位置系统都能可以正常使用

#echo '/usr/local/ssl/lib64' >> /etc/ld.so.conf

echo '/usr/local/ssl/lib' >> /etc/ld.so.conf

3、备份并卸载老版本OpenSSH

#备份ssh配置文件

cp -p /etc/ssh/sshd_config /etc/ssh/sshd_config.bak

cp -p /usr/sbin/sshd /usr/sbin/sshd.bak

cp -p /usr/bin/ssh /usr/bin/ssh.bak

cp -p /usr/bin/ssh-keygen /usr/bin/ssh-keygen.bak

cp -p /etc/ssh/ssh_host_ecdsa_key.pub /etc/ssh/ssh_host_ecdsa_key.pub.bak

#停止ssh服务

systemctl stop sshd

#备份ssh文件

cp -r /etc/ssh /etc/ssh.old

#查询原有ssh包并卸载

rpm -qa | grep openssh

openssh-7.4p1-23.el7_9.x86_64

openssh-clients-7.4p1-23.el7_9.x86_64

openssh-server-7.4p1-23.el7_9.x86_64

#根据查询结果,卸载原有OpenSSH包

yum remove openssh-7.4p1-23.el7_9.x86_64

#再次查看已经没有了

rpm -qa | grep openssh

4、升级OpenSSH

cd /usr/local/src/

#解压

tar zxvf openssh-9.5p1.tar.gz

cd openssh-9.5p1

#编译安装openssh 指明zlib路径和ssl路径

./configure --prefix=/usr/local/openssh --with-zlib=/usr/local/zlib --with-ssl-dir=/usr/local/ssl

make && make install

#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

#将编译安装的新配置文件 拷贝到原路径下

cp /usr/local/openssh/etc/sshd_config /etc/ssh/sshd_config

cp /usr/local/openssh/sbin/sshd /usr/sbin/sshd

cp /usr/local/openssh/bin/ssh /usr/bin/ssh

cp /usr/local/openssh/bin/ssh-keygen /usr/bin/ssh-keygen

cp /usr/local/openssh/etc/ssh_host_ecdsa_key.pub /etc/ssh/ssh_host_ecdsa_key.pub

#拷贝启动脚本

cp -p contrib/redhat/sshd.init /etc/init.d/sshd

#给sshd添加可执行权限

chmod +x /etc/init.d/sshd

#设置开机自启

systemctl enable sshd

#重新启动sshd服务

systemctl restart sshd

#查看sshd服务状态

systemctl status sshd

#查看ssh版本是否升级成功,可以查看到已经是9.5版本了

ssh -V

OpenSSH_9.5p1, OpenSSL 3.2.0 23 Nov 2023

到这里升级基本完成了,可以通过reboot重启服务器 用来校验相关的自启服务 ~



声明

本文内容仅代表作者观点,或转载于其他网站,本站不以此文作为商业用途
如有涉及侵权,请联系本站进行删除
转载本站原创文章,请注明来源及作者。