SUSE Linux openssh漏洞修复笔记

OpenSSH roaming_common.c 堆缓冲区溢出漏洞

缓冲区溢出攻击是利用缓冲区溢出漏洞所进行的攻击行动。缓冲区溢出是一种非常普遍、非常危险的漏洞,在各种操作系统、应用软件中广泛存在。利用缓冲区溢出攻击,可以导致程序运行失败、系统关机、重新启动等后果。
Openssh MaxAuthTries 限制绕过漏洞(CVE-2015-5600)

OpenSSH sshd mm_answer_pam_free_ctx 释放后重利 用漏洞(CVE-2015-6564)

OpenSSH ‘x11_open_helper()’函数安全限制绕过漏洞 (CVE-2015-5352)

以上漏洞均来自 openssh 升级openssh服务

注意事项,openssh为远程连接服务,若处理不好可能导致连接不上主机,所以先搭建Telnet连接。

操作系统信息
SUSE Linux
现有ssh版本
tfw:/tmp/dropbear # ssh -V
OpenSSH_6.6p1, OpenSSL 0.9.8j-fips 07 Jan 2009

tfw:/tmp/dropbear # rpm -qa |grep openssl
openssl-certs-0.9.8h-27.3.1
openssl-0.9.8j-0.26.1
libopenssl0_9_8-0.9.8j-0.26.1
libopenssl0_9_8-32bit-0.9.8j-0.26.1
libopenssl1_0_0-32bit-1.0.0c-17.1
libopenssl1_0_0-1.0.0c-17.1

搭建Telnet放行23端口 参考这篇blog

升级过程详见OpenSuse Linux11升级Openssh6.7笔记
百度文库

注意事项
升级后默认root不允许登录。需要修改配置文件允许root登录
允许root登录
vi /etc/ssh/sshd_config
将PermitRootLogin值改yes

centos下升级
参考此篇

下载http://www.openssh.com/portable.html

有网络情况下
1、tar zxvf openssh-7.1p1.tar.gz
cd openssh-7.1
./configure –prefix=/usr/local/openssh –sysconfdir=/etc/ssh

知识点:
./configure –prefix=/usr/local/openssh –sysconfdir=/etc/ssh

–sysconfdir=DIR read-only single-machine data [PREFIX/etc] /etc配置文件目录
prefix 安装目录

make
make install
2、如果配置时出现如下环境问题:
configure: error: * zlib.h missing - please install first or check config.log *
使用 yum install openssl openssl-devel -y 安装相关依赖包
3、配置成功,可以编译了,如果没有make环境,用如下命令安装一下即可
yum install make automake gcc gcc-c++ gcc-g77 -y
4、上面的方法会覆盖原版本的文件,make install覆盖/etc/ssh下配置文件时可能会报错。这时删掉/etc/ssh下的原配置文件,再make install一次就可以了。
如果使用root远程无法登录,修改/etc/ssh/sshd_config
将 PermitRootLogin 参数改为yes。

完成后检查版本

[root@weixinht openssh-7.3p1]# ssh -V
OpenSSH_7.3p1, OpenSSL 1.0.1e-fips 11 Feb 2013

遇到一个问题,刚升级后忘记重启SSHD服务了,修改了配置文件设置PermitRootLogin值改yes。在机房捣鼓了半天!改配置文件尝试了各种办法!
不能偷懒啊!之前应该做备份连接方案的!
很奇怪的是联通云主机上#PermitRootLogin yes 是注释掉的但是也能ROOT登陆!

解决方案:

ssh -V
getenforce 
setenforce  0
getenforce 
vi /etc/sysconfig/selinux 
service  sshd restart

setenforce是Linux的selinux防火墙配置命令 执行setenforce 0 表示关闭selinux防火墙。

setenforce命令是单词set(设置)和enforce(执行)连写,另一个命令getenforce可查看selinux的状态。
setenforce 0 #设置SELinux 成为permissive模式
setenforce 1 设置SELinux 成为enforcing模式

——2016年11月1日19:36:18 add————
今天修复一台比较久的机器时候出现找不到SSH的问题。

ssh -V  提示如下
OpenSSL version mismatch. Built against 1000103f, you have 90802f

强行重新编译后成功。具体参考此篇
升级了zlib后查看版本还是之前的,不知为何
所以编译的时候指定了 忽略zlib版本号。
没有处理pam一块,因为安装的时候实在麻烦,少各种依赖!

升级完后 /etc/ssh/sshd_config 配置文件中全部被注释
手动改为


Port 22
PermitRootLogin yes
PubkeyAuthentication yes
AuthorizedKeysFile      .ssh/authorized_keys
PermitEmptyPasswords no

PasswordAuthentication yes
UsePrivilegeSeparation sandbox
Subsystem       sftp    /usr/libexec/openssh/sftp-server

重启命令
/etc/rc.d/init.d/ssh restart

摘要:

补充说明:
如果不想升级ssh,那么只要使用
#./config --prefix=/usr
但是升级完后版全是升上去了,但是sshd -v时,发现sshd显示的还是原来的openssl版本。

#make
#make test
#make install
#openssh version -a
OpenSSL 1.0.1g 7 Apr 2014
built on: Fri May 23 16:56:53 CST 2014
platform: linux-x86_64
options:  bn(64,64) rc4(16x,int) des(idx,cisc,16,int) idea(int) blowfish(idx) 
compiler: gcc -fPIC -DOPENSSL_PIC -DOPENSSL_THREADS -D_REENTRANT -DDSO_DLFCN -DHAVE_DLFCN_H -Wa,--noexecstack -m64 -DL_ENDIAN -DTERMIO -O3 -Wall -DOPENSSL_IA32_SSE2 -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_MONT5 -DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DMD5_ASM -DAES_ASM -DVPAES_ASM -DBSAES_ASM -DWHIRLPOOL_ASM -DGHASH_ASM
OPENSSLDIR: "/usr/ssl"
此时去运行sshd -v 或是重启sshd服务时会提示:
OpenSSL version mismatch. Built against 1000103f, you have 90802f
当现面以上进示时,只能强行重新编译SSH。

升级SSH

备份原来的ssh版本
#mv /etc/ssh /etc/ssh_old
编译
#cd openssh-6.6p1
#./configure --prefix=/usr --sysconfdir=/etc/ssh --without-zlib-version-check --with-openssl-includes=/usr/ --with-md5-passwords --mandir=/usr/share/man 
#make 
#make isntall
#service sshd restart
#sshd -v
OpenSSH_6.6p1, OpenSSL 1.0.1g 7 Apr 2014
usage: sshd [-46DdeiqTt] [-b bits] [-C connection_spec] [-c host_cert_file]
            [-E log_file] [-f config_file] [-g login_grace_time]
            [-h host_key_file] [-k key_gen_time] [-o option] [-p port]
            [-u len]

你可能感兴趣的:(服务器linux)