Catalog
  1. 1. OpenSSH 输入验证错误漏洞
  2. 2. 更新教程
  3. 3. 图形界面不能使用
Centos 更新OpenSSH到8.6版本教程

最近被告知要对服务器的ssh进行更新,网上教程比较多,而且各不一样,最后找了一个看起来靠谱的教程

CSDN:CentOS 8 升级 OpenSSH 8.4

照着做几乎没出啥差错,只有一点小地方不一样,因此记录下来。

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
2
yum install -y zlib-devel openssl-devel 
3
yum install pam-devel libselinux-devel zlib-devel openssl-devel -y

然后下载最新版软件

1
cd /usr/local/src
2
wget https://cdn.openbsd.org/pub/OpenBSD/OpenSSH/portable/openssh-8.6p1.tar.gz

我下载没有成功,就手动下载了上传到服务器的/usr/local/src文件夹,然后我们需要做一个备份

1
cp /etc/ssh/sshd_config sshd_config.backup
2
cp /etc/pam.d/sshd sshd.backup

此时可以删除低版本包,当然这个操作是有风险的,如果删除了但是安装不成功就远程连接不上去了,只有自己去远程服务器边上安装,保险办法是通过另外的手段远程连接,我自己没有遇到这个问题,所以就不赘述。

1
rpm -e --nodeps `rpm -qa | grep openssh`

解压安装新版本软件

1
tar -zxvf openssh-8.6p1.tar.gz
2
cd  openssh-8.6p1

设置编译配置

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
2
make install

我安装时出现报错

1
2
(cd openbsd-compat && make)
3
make[1]: Entering directory '/usr/local/src/openssh-8.6p1/openbsd-comp         at'
4
make[1]: Nothing to be done for 'all'.
5
make[1]: Leaving directory '/usr/local/src/openssh-8.6p1/openbsd-compa         t'
6
/bin/mkdir -p /usr/bin
7
/bin/mkdir -p /usr/sbin
8
/bin/mkdir -p /usr/share/man/man1
9
/bin/mkdir -p /usr/share/man/man5
10
/bin/mkdir -p /usr/share/man/man8
11
/bin/mkdir -p /usr/libexec
12
/bin/mkdir -p -m 0755 /var/empty
13
/bin/install -c -m 0755 -s ssh /usr/bin/ssh
14
/bin/install -c -m 0755 -s scp /usr/bin/scp
15
/bin/install -c -m 0755 -s ssh-add /usr/bin/ssh-add
16
/bin/install -c -m 0755 -s ssh-agent /usr/bin/ssh-agent
17
/bin/install -c -m 0755 -s ssh-keygen /usr/bin/ssh-keygen
18
/bin/install -c -m 0755 -s ssh-keyscan /usr/bin/ssh-keyscan
19
/bin/install -c -m 0755 -s sshd /usr/sbin/sshd
20
/bin/install -c -m 4711 -s ssh-keysign /usr/libexec/ssh-keysign
21
/bin/install -c -m 0755 -s ssh-pkcs11-helper /usr/libexec/ssh-pkcs11-h         elper
22
/bin/install -c -m 0755 -s ssh-sk-helper /usr/libexec/ssh-sk-helper
23
/bin/install -c -m 0755 -s sftp /usr/bin/sftp
24
/bin/install -c -m 0755 -s sftp-server /usr/libexec/sftp-server
25
/bin/install -c -m 644 ssh.1.out /usr/share/man/man1/ssh.1
26
/bin/install -c -m 644 scp.1.out /usr/share/man/man1/scp.1
27
/bin/install -c -m 644 ssh-add.1.out /usr/share/man/man1/ssh-add.1
28
/bin/install -c -m 644 ssh-agent.1.out /usr/share/man/man1/ssh-agent.1
29
/bin/install -c -m 644 ssh-keygen.1.out /usr/share/man/man1/ssh-keygen         .1
30
/bin/install -c -m 644 ssh-keyscan.1.out /usr/share/man/man1/ssh-keysc         an.1
31
/bin/install -c -m 644 moduli.5.out /usr/share/man/man5/moduli.5
32
/bin/install -c -m 644 sshd_config.5.out /usr/share/man/man5/sshd_conf         ig.5
33
/bin/install -c -m 644 ssh_config.5.out /usr/share/man/man5/ssh_config         .5
34
/bin/install -c -m 644 sshd.8.out /usr/share/man/man8/sshd.8
35
/bin/install -c -m 644 sftp.1.out /usr/share/man/man1/sftp.1
36
/bin/install -c -m 644 sftp-server.8.out /usr/share/man/man8/sftp-serv         er.8
37
/bin/install -c -m 644 ssh-keysign.8.out /usr/share/man/man8/ssh-keysi         gn.8
38
/bin/install -c -m 644 ssh-pkcs11-helper.8.out /usr/share/man/man8/ssh         -pkcs11-helper.8
39
/bin/install -c -m 644 ssh-sk-helper.8.out /usr/share/man/man8/ssh-sk-         helper.8
40
/bin/mkdir -p /etc/ssh
41
ssh-keygen: generating new host keys: DSA
42
/usr/sbin/sshd -t -f /etc/ssh/sshd_config
43
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
44
@         WARNING: UNPROTECTED PRIVATE KEY FILE!          @
45
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
46
Permissions 0640 for '/etc/ssh/ssh_host_rsa_key' are too open.
47
It is required that your private key files are NOT accessible by other         s.
48
This private key will be ignored.
49
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
50
@         WARNING: UNPROTECTED PRIVATE KEY FILE!          @
51
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
52
Permissions 0640 for '/etc/ssh/ssh_host_ecdsa_key' are too open.
53
It is required that your private key files are NOT accessible by other         s.
54
This private key will be ignored.
55
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
56
@         WARNING: UNPROTECTED PRIVATE KEY FILE!          @
57
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
58
Permissions 0640 for '/etc/ssh/ssh_host_ed25519_key' are too open.
59
It is required that your private key files are NOT accessible by other         s.
60
This private key will be ignored.
61
sshd: no hostkeys available -- exiting.
62
make: [Makefile:383: check-config] Error 1 (ignored)

发现应该是一些权限问题,再赋值一遍

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
2
chmod u+x /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
2
chkconfig sshd on

测试

1
ssh -V

成功!

图形界面不能使用

安装完之后会发现图形界面不能使用,需要经过以下几步才行:

  1. 重新安装GNOME
    1
    yum groupinstall "GNOME"
  2. 修改配置文件
    1
    vi /etc/ssh/sshd_config
    改成下面的样子
    1
    # X11Forwarding no --> X11Forwarding yes
    2
    # X11DisplayOffset 10 --> X11DisplayOffset 10
    3
    # X11UseLocalhost no --> X11UseLocalhost no
    然后重启相关服务以及设置默认图形化界面
    1
    systemctl restart gdm.service
    2
    systemctl restart sshd
    3
    systemctl set-default graphical.target
Author: Knifelee
Link: https://knifelees3.github.io/2021/06/30/C_%E6%95%99%E7%A8%8B_Centos8%E6%9B%B4%E6%96%B0Openssh%E7%89%88%E6%9C%AC%E8%87%B38dot6/
Copyright Notice: All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.
Donate
  • 微信
  • 支付寶

Comment