言之无物

我说的一切都是错的

OpenSSH7.9更新记

《OpenSSH7.9更新记》
系统漏洞扫描,扫出一堆安全漏洞,主要的高危漏洞来自openssh。centos自带的版本是6.6的,建议升级到7.9及以上。官网上包都是基于源码安装,比较麻烦,于是网上找了一个7.9版本的rpm包,在自己的虚拟机上先试试。
Linux上安装软件都是比较痛苦的,好久没弄,手有点生疏。捣鼓了一天,总算升级成功了。查询了各种资料,都只能给你一点线索,问题还得你自己去摸索解决。今天我也提供点线索,能不能被搜到,就看各自的造化了。
1. 下载rpm安装包
csdn上能找到,基本都需要积分下载,以前10块钱能买200积分,现在只能买10个积分左右,涨的有点夸张。为了省点积分,我在网盘上下载了一个,感谢分享的作者,虽然你的文章没帮助我太多,但还是要感谢你无私的分享。下载地址:https://blog.51cto.com/11916514/2340624 在留言里有分享链接。
如果链接失效了,也可以在这里下载。
2. 更新安装openssh
解压后,有三个rpm文件,直接更新安装即可。
tar -xvf openssh*
rpm -Uhvv openssh*
vv参数能看到安装过程的详细信息,方便查看安装是否有报错。
3. 删除ssh_host开头的文件
更新完成后直接启动sshd服务器会报错,报ssh_host*的文件权限设置不对,文件格式不对之类的错误。我是直接把这些文件都删了,sshd服务启动会重新生成这些文件。
rm -rf /etc/ssh/ssh_host_*
4. 修改sshd_config配置文件
以下几个参数要修改:
PermitRootLogin yes
PasswordAuthentication yes
ChallengeResponseAuthentication no
UsePAM yes
这里特别要留意,原来UsePAM是设成yes的,更新安装后变成了no。远程连接时会报“ssh could not get shadow information for root”错误,设置成yes后,问题解决。
5. 修改pam中的sshd设置
这是最折腾人的一步,根据错误日志“pam unable to dlopen(/lib/security/pam_pwdb.so)”,类似的错误有好几条,应该是缺少包。系统里没有搜到pam_pwdb.so这个包,网上搜索居然没有现成的,找了几个libpam的rpm包,都无法顺利安装。有篇文章说pam_pwdb.so已经过时了,现在用pam_unix.so代替。在系统里搜索,居然找到了,不过是放在/usr/lib64/security目录下,其他那些缺失的包也都在。这个rpm包应该是在32位系统下制作的,所以路径和64位的不一样。
有了包,就好办了,下一步是找到相应的配置文件,把路径和pam_pwdb这个包名替换掉。找了半天,最后在/etc/pam.d目录下发现有个sshd文件,打开一看,乖乖,配置都在里面。把pam_pwdb.so换成pam_unix.so, 参考其他的配置文件,不需要加路径,直接把/lib/security删掉。最后的配置文件内容如下:
auth required pam_unix.so shadow nodelay
auth required pam_nologin.so
account required pam_unix.so
password required pam_cracklib.so
password required pam_unix.so shadow nullok use_authtok
session required pam_unix.so
session required pam_limits.so
6. 验证
一切修改完毕后,执行命令 systemctl start shhd.service, 用xshell远程连接,成功。
最后检查版本是否是7.9:rmp -qa | grep openssh
[root@localhost log]# rpm -qa|grep openssh
openssh-clients-7.9p1-1.el6.x86_64
openssh-7.9p1-1.el6.x86_64
openssh-server-7.9p1-1.el6.x86_64
7. 经验总结
a. 对于只能通过ssh连接的服务器,在ssh服务没有更新成功之前,千万不能关闭现有的连接,ssh服务停止不会影响现有的连接。如果你关闭了,或者把这个进程kill了,那就只能干瞪眼了。最好把winscp也开着,方便传文件。不过,最保险的办法还是装个telnet,现在服务器默认都不装的。
b. 日志信息相当重要,根据日志提示,一步一步解决问题。sshd的日志是/var/log/secure文件,也可通过命令systemctl status sshd.service查看。
点赞

发表评论

电子邮件地址不会被公开。 必填项已用*标注