linux系统将OpenSSH升级到最高版本

一、背景:

公司安全扫描到主机的OpenSSH安全漏洞,由于是虚拟机只能由自己修复,很多OpenSSH的漏洞厂商都没有提供补丁,只能通过禁用scp或者端口的方式临时解决,但是后面使用就不方便了,而且也不安全,所以直接将OpenSSH升级到现在的最高版本openssh-9.3p2,ssl升级到1.1.1。

linux系统将OpenSSH升级到最高版本_第1张图片

 二、准备工作:

升级OpenSSH是有风险的,失败会导致不能通过SSH连接到主机,所以最好先按照telnet的相关工具,通过telnet连接主机进行SSH升级操作,因为此次操作的是虚拟机,跟公司的机房老师沟通,即使升级失败,他们也是可以连接上主机的,所有我就没再按照telnet的相关组件,直接通过SSH连接到主机进行的升级。升级前可以先看下报错处理章节,方便安装过程中有问题解决。

升级SSH需要先查看gcc、pcre、zlib  perl是否安装使用以下命令可以查看:

gcc --version、rpm -qa pcre、yum list installed | grep zlib*、perl -version。查看SSH版本 ssh -V, 查看ssl版本openssl version

 

gcc包没有的请参考这篇文章:https://blog.51cto.com/u_15064655/4818120

perl没有的:

下载地址:https://www.cpan.org/src/5.0/perl-5.34.0.tar.gz,将包上传到服务器上,然后执行一下命令:

tar -xzf perl-5.34.0.tar.gz

 cd perl-5.34.0

./Configure -des -Dprefix=$HOME/localperl

make 

make test 

make install

注意:

1、通过SSH连接主机升级时,不要关闭SSH连接,再升级过程中关闭了以后可能就连不上了;

2、SSH升级依赖于SSL,对SSL的版本有要求,要先按照SSL再按照SSH;

三、开始安装:

1、下载openssl、openssh、zlib包

下载openssl
https://www.openssl.org/source/openssl-1.1.1t.tar.gz
下载openssh
https://cdn.openbsd.org/pub/OpenBSD/OpenSSH/portable/openssh-9.3p2.tar.gz
下载zlib
http://www.zlib.net/zlib-1.2.13.tar.gz

按照顺序是zlib库-> openssl -> openssh的顺序安装;

2、安装zlib

tar -zxvf zlib-1.2.13.tar.gz   -C /usr/local/src

cd zlib-1.2.13
./configure --prefix=/usr/local/zlib &&?make?-j 4?&&?make?install


3、安装ssl

tar -zxvf openssl-1.1.1t.tar.gz -C /usr/local/src/
cd /usr/local/src/openssl-1.1.1t

./config --prefix=/usr/local/ssl -d shared  #编译时可能会报错,请看错误模块

make -j 4 && make install

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

ldconfig -v

/usr/local/ssl/bin/openssl version -a # 查询这个目录下openssl版本已是1.1.1p

4、安装ssh

tar -zxvf openssh-9.3p1.tar.gz -C /usr/local/src/

先备份:mv /etc/ssh /etc/ssh.bak
cd  /usr/local/src/openssh-9.3p2

#指定ssl和zlib安装位置
./configure --prefix=/usr/local/openssh --sysconfdir=/etc/ssh --with-ssl-dir=/usr/local/ssl --with-zlib=/usr/local/zlib

make -j 4 && make install

#修改配置文件sshd_config文件修改

echo "X11Forwarding yes" >> /etc/ssh/sshd_config
echo "X11UseLocalhost no" >> /etc/ssh/sshd_config                
echo "XAuthLocation /usr/bin/xauth" >> /etc/ssh/sshd_config
echo "UseDNS no" >> /etc/ssh/sshd_config
echo 'PermitRootLogin yes' >> /etc/ssh/sshd_config
echo 'PubkeyAuthentication yes' >> /etc/ssh/sshd_config
echo 'PasswordAuthentication yes' >> /etc/ssh/sshd_config

#备份 /etc/ssh 原有文件,并将新的配置复制到指定目录

mv /usr/sbin/sshd /usr/sbin/sshd.bak
cp -rf /usr/local/openssh/sbin/sshd /usr/sbin/sshd
mv /usr/bin/ssh /usr/bin/ssh.bak
cp -rf /usr/local/openssh/bin/ssh /usr/bin/ssh 
mv /usr/bin/ssh-keygen /usr/bin/ssh-keygen.bak
cp -rf /usr/local/openssh/bin/ssh-keygen /usr/bin/ssh-keygen

安装完成,查看版本ssh -V

5、重启sshd服务

systemctl restart sshd

systemctl status sshd

四、报错处理:

1、执行ssl的./config --prefix=/usr/local/ssl -d shared编译时报错:

Operating system: x86_64-whatever-linux2 You need Perl 5.

你需要安装perl-5.34.0.tar.gz

下载https://www.cpan.org/src/5.0/perl-5.34.0.tar.gz

tar -xzf perl-5.34.0.tar.gz
 cd perl-5.34.0
./Configure -des -Dprefix=$HOME/localperl
make 
make test 
make install

2、ssl 执行  make -j 4 && make install报错
sh: pod2html: command not found
没找到原因,但是暂时没找到有什么影响,测试ssl是正常的。

3、重启ssh服务报错:

Job for sshd.service failed because the control process exited with error code. See "systemctl status sshd.service" and "journalctl -xe" for details.        

使用/usr/sbin/sshd -T查看
是/etc/ssh/ssh_host_ed25519_key这个文件的权限太大了,去所在目录下执行 chmod 600 ssh_host_ed25519_key 命令修改文件权限,重启可能还报错,再用-T看下,还有其他的文件权限太大。
chmod 600 ssh_host_rsa_key、chmod 600 ssh_host_ecdsa_key、 chmod 600 ssh_host_ed25519_key基本上这三个。

linux系统将OpenSSH升级到最高版本_第2张图片

4、重启报错:Job for sshd.service failed because the control process exited with error code. See "systemctl status sshd.service" and "journalctl -xe" for details. 

用sshd -t看到报错信息为

/etc/ssh/sshd_config line 80: Unsupported option GSSAPICleanupCredentials

/etc/ssh/sshd_config line 96: Unsupported option UsePAM

vi /etc/ssh/sshd_config
把#GSSAPIAuthentication yes  、#GSSAPICleanupCredentials no  把这两个禁掉
#UsePAM no也禁掉

你可能感兴趣的:(安全,linux,服务器,安全,ssh)