Centos 更新OpenSSH到8.6版本教程
Centos
最近被告知要对服务器的ssh进行更新,网上教程比较多,而且各不一样,最后找了一个看起来靠谱的教程
照着做几乎没出啥差错,只有一点小地方不一样,因此记录下来。
OpenSSH 输入验证错误漏洞
漏洞分类:通用漏洞检测
危险等级:高风险
影响主机:115.156.215.222 [ TCP / 22 ]
输出信息:
Installed version: 8.0
Fixed version: 8.1
Installation path / port: 22/tcp详细描述:
[CVE-2019-16905]OpenSSH(OpenBSD Secure Shell)是OpenBSD计划组的一套用于安全访问远程计算机的连接工具。该工具是SSH协议的开源实现,支持对所有的传输进行加密,可有效阻止窃听、连接劫持以及其他网络级的攻击。OpenSSH 7.7版本至7.9版本和8.1之前的8.x版本中存在输入验证错误漏洞。该漏洞源于网络系统或产品未对输入的数据进行正确的验证。
CVE:CVE-2019-16905
CNNVD:CNNVD-201910-599
更新教程
首先是一些编译依赖的安装
1 | yum install wget gcc -y |
然后下载最新版软件
1 | cd /usr/local/src |
我下载没有成功,就手动下载了上传到服务器的/usr/local/src
文件夹,然后我们需要做一个备份
1 | cp /etc/ssh/sshd_config sshd_config.backup |
此时可以删除低版本包,当然这个操作是有风险的,如果删除了但是安装不成功就远程连接不上去了,只有自己去远程服务器边上安装,保险办法是通过另外的手段远程连接,我自己没有遇到这个问题,所以就不赘述。
1 | rpm -e --nodeps `rpm -qa | grep openssh` |
解压安装新版本软件
1 | tar -zxvf openssh-8.6p1.tar.gz |
设置编译配置
1 | ./configure --prefix=/usr --sysconfdir=/etc/ssh --with-md5-passwords --with-pam --with-zlib --with-tcp-wrappers --with-ssl-dir=/usr/local/ssl --without-hardening |
编译安装
1 | make |
我安装时出现报错
1 |
|
发现应该是一些权限问题,再赋值一遍
1 | chmod 600 /etc/ssh/ssh_host_rsa_key /etc/ssh/ssh_host_ecdsa_key /etc/ssh/ssh_host_ed25519_key |
再复制文件
1 | cp -a contrib/redhat/sshd.init /etc/init.d/sshd |
设置允许root用户远程登录
1 | vim /etc/ssh/sshd_config |
此时需要注意:
修改
#PermitRootLogin prohibit-password
项,去掉注释#并把prohibit-password
改为yes
,修改后即为PermitRootLogin yes
去掉注释
#PasswordAuthentication yes
变为`PasswordAuthentication yes
如果使用证书登陆可以关闭这个升级之后sftp如果不好用了,需要注意的是要查看一下相关设置,新的是
Subsystem sftp /usr/libexec/sftp-server
原始系统自带的是Subsystem sftp /usr/libexec/openssh/sftp-server
一般系统是开启PAM模块的,但是编译安装升级后,这个是关闭状态,如果启用PAM,需要有一个控制文件,去掉注释#UsePAM no 变为
UsePAM yes
,如果打开这个模式,不要忘了把配置文件/etc/pam.d/sshd.backup
改回来,否则登陆不了。1
mv /etc/pam.d/sshd.backup /etc/pam.d/sshd
如果没有
/etc/pam.d/sshd
文件,可以手动创建一个,使用默认的配置1
#%PAM-1.0auth required pam_sepermit.soauth substack password-authauth include postlogin# Used with polkit to reauthorize users in remote sessions-auth optional pam_reauthorize.so prepareaccount required pam_nologin.soaccount include password-authpassword include password-auth# pam_selinux.so close should be the first session rulesession required pam_selinux.so closesession required pam_loginuid.so# pam_selinux.so open should only be followed by sessions to be executed in the user contextsession required pam_selinux.so open env_paramssession required pam_namespace.sosession optional pam_keyinit.so force revokesession include password-authsession include postlogin# Used with polkit to reauthorize users in remote sessions
最后添加开机启动
1 | chkconfig --add sshd |
测试
1 | ssh -V |
成功!
图形界面不能使用
安装完之后会发现图形界面不能使用,需要经过以下几步才行:
- 重新安装
GNOME
1
yum groupinstall "GNOME"
- 修改配置文件改成下面的样子
1
vi /etc/ssh/sshd_config
然后重启相关服务以及设置默认图形化界面1
2
3# X11Forwarding no --> X11Forwarding yes
# X11DisplayOffset 10 --> X11DisplayOffset 10
# X11UseLocalhost no --> X11UseLocalhost no1
2
3systemctl restart gdm.service
systemctl restart sshd
systemctl set-default graphical.target