openssh漏洞修复升级openssh8.4离线升级

openssh漏洞修复升级openssh8.4p1离线升级

主机扫描出来以下漏洞

OpenSSH 输入验证错误漏洞(CVE-2019-16905) OpenSSH
漏洞OpenSSH 7.7版本至7.9版本和8.1之前的8.x版本中存在输入验证错误漏洞。该漏洞源于网络系统或产品未对输入的数据进行正确的验证。
OpenSSH 命令注入漏洞(CVE-2020-15778)
OpenSSH 8.3p1及之前版本中的scp的scp.c文件存在命令注入漏洞。该漏洞源于外部输入数据构造可执行命令过程中,网络系统或产品未正确过滤其中的特殊元素。攻击者可利用该漏洞执行非法命令。
针对这两个漏洞采用升级openssh来解决 下面是我实验出来的一些步骤和所需要的文件链接 服务器是无法连接网络的只能通过源码包安装 如果用yum那就简单多了 随便百度就一大堆 下面是我的操作步骤

此篇实施过程没有root权限 最好可以登录后执行 sudo -s 切换为root 执行 可根据自己环境操作 先编译安装openssh 缺什么在装什么

  • 查看现在的版本和备份现有的ssh文件(准备好需要的源码包)
 # ssh -V
 # sudo cp -r /etc/ssh /etc/ssh.bak
 # sudo cp -r /etc/pam.d /etc/pam.d.bak
  • 安装telnet 升级过程在telnet远程登录执行 避免升级失败连接不上的问题
# sudo rpm -ivh xinetd.rpm
# sudo rpm -ivh telnet.x86_64.rpm
# sudo rpm -ivh telnet-server.x86_64.rpm
# sudo systemctl restart xinetd.service
# sudo systemctl restart telnet.socket
# sudo netstat -tnl | grep 23
  • 如果telnet登录不上先查看防火墙
查看端口是否开启
# firewall-cmd --query-port=23/tcp
这里显示no就是没有开启 执行下面的命令 显示yes就是已经开启 排查其他原因
# firewall-cmd --add-port=23/tcp
这是开启23端口
# firewall-cmd --query-port=23/tcp
再次查看
  • 利用telnet远程登录进行升级(避免升级失败 一定要telnet登录操作 )
# telnet ip
  • 安装 gcc(上传gcc源码包)
# sudo tar zxf gcc_rpm.tar.gz
# cd gcc/
# sudo rpm -ivh *.rpm --nodeps --force
# cd
  • 安装zlib
# sudo tar zxf zlib.tar.gz
# cd zlib/
# sudo ./configure
# sudo make test
# sudo make install
# sudo make clean
# sudo ./configure --shared
# sudo make test
# sudo make install
# sudo cp zutil.h /usr/local/include/
# sudo cp zutil.c /usr/local/include/
# cd
  • 安装openssl(编译openssh8.4不报openssl错误就不用安装)
# sudo tar zxf openssl.tar.gz 
# cd openssl
# sudo ./config --prefix=/usr/local/ --shared
# sudo make
# sudo make test
# sudo make install
# sudo ln -sf /usr/local/openssl/bin/openssl /usr/bin/openssl
# sudo vi /etc/ld.so.conf 
添加 /usr/local/openssl/lib
# sudo ldconfig -v
# cd
  • 安装Perl(编译openssl不报Perl错误就不用安装)
# sudo tar zxf perl.tar.gz 
# cd perl
# sudo ./configure.gnu --prefix=/usr -Dpager"/bin/less -isR"
# sudo make 
# sudo make install
# cd
  • 安装pam(编译openssh8.4不报pam错误就不用安装)
# sudo rpm -Uvh pam.rpm --nodeps --force
# sudo rpm -ivh pam-devel.rpm
  • 安装openssh
# sudo tar zxf openssh-8.4p1.tar.gz
# cd openssh-8.4p1
# sudo ./configure --prefix=/usr/ --sysconfdir=/etc/ssh --with-openssl-include=/usr/local/openssl/include --with-ssl-dir=/usr/local/openssl --with-zlib --with-md5-passwords --with-pam
# sudo make
# sudo make install
  • 查看版本
# ssh -V
# sudo install -v -m755 contrib/ssh-copy-id /usr/bin 
# sudo install -v -m644 contrib/ssh-copy-id.1 /usr/share/man/man1 # sudo install -v -m755 -d /usr/share/doc/openssh-8.4p1 
# sudo install -v -m644 INSTALL LICENCE OVERVIEW README* /usr/share/doc/openssh-8.4p1 
# sudo echo 'UsePAM yes' >> /etc/ssh/sshd_config (权限不够就进入配置文件修改 一般不用修改 最好查看一下)
# sudo cp -p contrib/redhat/sshd.init /etc/init.d/sshd
# sudo chmod +x /etc/init.d/sshd
# sudo chkconfig --add sshd
# sudo chkconfig sshd on
# sudo chmod -R 600 /etc/ssh/*
# sudo service sshd restart
# ssh -V

以下是一些常见的报错
如果跳板机或其他软件登录报错(类似下面这种)

SecureCRT
Key exchange failed.
No compatible key exchange method.The server supports thesemethods:
telnet登录操作

# sudo vi /etc/ssh/sshd_config
添加
KexAlgorithms curve25519-sha256@libssh.org,ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group-exchange-sha256,diffie-hellman-group14-sha1,diffie-hellman-group-exchange-sha1,diffie-hellman-group1-sha1

如果报
Password authentication failed.
Please verify that the username and password are correct.

# sudo cp /etc/pam.d.bak/sshd /etc/pam.d
  • 然后在重启服务
# sudo systemctl restart sshd
# ssh -V

telnet先不要退出 可以在开一个服务器 用刚刚升级完的服务器进行连接测试
等确定没有问题之后在关闭telnet或者卸载telnet
此方法不一定适合所有 仅作为一个参考方法
要对生产环境保持敬畏之心!!!

猜你喜欢

转载自blog.csdn.net/qq_46023525/article/details/109338477