sshd升级到8.6

参考https://blog.csdn.net/qq_46023525/article/details/109338477?spm=1001.2014.3001.5501

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/openssl --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


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

xshell连接时显示“服务器发送了一个意外的数据包。received:3,expected:20“问题的解决方法

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

如报错ssh服务器拒绝了密码 请再试一次

/etc/sshd/ssh_config

			PermitRootLogin without-password

改成

			PermitRootLogin yes

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

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值