努力, 努力, 再努力
全部博文(220)
分类: 系统运维
2017-01-23 11:35:38
2016-12-19发布:
CVE-2016-10010:关闭 UsePrivilegeSeparation 权限隔离功能时,ssh 转发的 socket 文件将以 root 权限创建。
CVE-2016-10011:即使打开权限隔离,假如攻击者可以让 sshd 创建的子进程提权,那么服务器私钥理论上可能通过 realloc() 的过程泄漏给子进程。
CVE-2016-10012:sshd 服务器如果启用了认证前压缩(也就是 Compression yes),其中的某些边界检查可能会被编译优化去除,导致攻击者有可能从经过权限隔离的子进程中攻击高权限的父进程。
无名漏洞:AllowUsers 和 DenyUsers 选项可以接受无效的 IP 段。假如管理员想拉黑用户,但却输入了无效的 IP 段,那么用户就不会被禁止登录,而管理员也不知道。
(1) CentOS release 6.8 (Final) 内核:2.6.32-642.el6.x86_64
(2) CentOS release 6.5 (Final) 内核:2.6.32-431.el6.x86_64
zlib-devel-1.2.3-29.el6.x86_64
zlib-1.2.3-29.el6.x86_64
[root@wdcp ~]# ssh -V
OpenSSH_5.3p1, OpenSSL 1.0.1e-fips 11 Feb 2013
[root@wdcp ~]# openssl version
OpenSSL 1.0.1e-fips 11 Feb 2013
参考链接:
Zlib 1.1.4 or 1.2.1.2 或者更高的版本
OpenSSL >= 0.9.8f < 1.1.0, 也就是0.98f, 1.0.1, 1.0.2这3个系列的版本就
支持
Openssh官网明确声明, openssh7.4p1不支持OpenSSL 1.1.0系列的版本
特别说明一下, 0.98f, 1.0.1x, 1.0.2x 是各自独立发展的版本
换句话说,1.0.1并不是0.98f的升级版本, 1.0.2也不是1.0.1的升级版
目前, openssh官网不再为0.98f, 1.0.1系列的openSSH提供升级服务
仅支持1.0.2X, 1.1.0x
yum install gcc zlib-devel openssl-devel pam-devel –y
gcc: C编译器
zlib-devel: Header files and libraries for Zlib development
openSSH会用到该开发包
pam-devel: PAM认证软件开发包,通过ssh密码登录就会用到PAM功能
说明:centos6.5, centos6.8默认安装的openssl都是1.0.1e
即使不升级openssl也可以正常安装openssh7.4p1
但是openssl1.0.1e存在著名的“心脏流血”漏洞,及其它诸多漏
洞,如果不升级openssl, 仅升级openssh没什么意义,并没有
实质上提高安全防护能力
(1)下载openssl
wget
或者:
wget --no-check-certificate
(2) 解压: tar zxvf openssl-1.0.2j.tar.gz
(3) 编译安装:
cd openssl-1.0.2j
./config && make && make install
(4) 创建快捷链接:
mv /usr/bin/openssl /usr/bin/openssl_v101e (先将原来的openssl改名)
ln -s /usr/local/ssl/bin/openssl /usr/bin/openssl
(5) 验证:
[root@wdcp openssl-1.0.2j]# openssl version
OpenSSL 1.0.2j 26 Sep 2016
wget
tar zxvf openssh-7.4p1.tar.gz
3. 配置,环境检查
[root@wdcp openssh-7.4p1]# ./configure --prefix=/usr --sysconfdir=/etc/ssh --with-md5-passwords --with-pam --with-tcp-wrappers --with-ssl-dir=/usr/local/ssl --without-hardening
安装后的结果:
OpenSSH has been configured with the following options:
User binaries: /usr/bin
System binaries: /usr/sbin
Configuration files: /etc/ssh
Askpass program: /usr/libexec/ssh-askpass
Manual pages: /usr/share/man/manX
PID file: /var/run
Privilege separation chroot path: /var/empty
sshd default user PATH: /usr/bin:/bin:/usr/sbin:/sbin
Manpage format: doc
PAM support: yes
OSF SIA support: no
KerberosV support: no
SELinux support: no
Smartcard support:
S/KEY support: no
MD5 password support: yes
libedit support: no
Solaris process contract support: no
Solaris project support: no
Solaris privilege support: no
IP address in $DISPLAY hack: no
Translate v4 in v6 hack: yes
BSD Auth support: no
Random number source: OpenSSL internal ONLY
Privsep sandbox style: rlimit
注意:--with-pam 编译时加载pam模块,该模块用于认证密码登录
--with-ssl-dir=/usr/local/ssl 编译时指定openSSL的引用位置,即Openssl 1.0.2j的安装路径
--without-hardening 不检查openssl的头文件
--with-md5-passwords Enable use of MD5 passwords
4. 编译,安装
[root@ssh74 openssh-7.4p1]# make && make install
/etc/ssh/ssh_config already exists, install will not overwrite
/etc/ssh/sshd_config already exists, install will not overwrite
/etc/ssh/moduli already exists, install will not overwrite
ssh-keygen: generating new host keys: ECDSA ED25519
/usr/sbin/sshd -t -f /etc/ssh/sshd_config
/etc/ssh/sshd_config line 81: Unsupported option GSSAPIAuthentication
/etc/ssh/sshd_config line 83: Unsupported option GSSAPICleanupCredentials
5. 注释GSSAPI,启用root登录
sed -i '/GSSAPIAuthentication yes/s/GSSAPIAuthentication yes/#GSSAPIAuthentication yes/' /etc/ssh/sshd_config
sed -i '/GSSAPICleanupCredentials yes/s/GSSAPICleanupCredentials yes/#GSSAPICleanupCredentials yes/' /etc/ssh/sshd_config
sed -i '/^#PermitRootLogin/s/#PermitRootLogin yes/PermitRootLogin yes/' /etc/ssh/sshd_config
6. 重启sshd
/etc/init.d/sshd restart
7. 版本验证
[root@wdcp ssh]# ssh -V
OpenSSH_7.4p1, OpenSSL 1.0.2j 26 Sep 2016