网站地图    收藏   

主页 > 系统 > linux系统 >

linux中openssh漏洞修复步骤详解

来源:未知    时间:2015-04-28 15:04 作者:xxadmin 阅读:

[导读] openssh漏洞上次是说linux中一个bug了,下文我给各位整理一下openssh漏洞修复方法,希望能对大家有帮助. 近期有几台主机上线,上线的主机在进行安全合规扫描时,发现如下openssh漏洞,其中有几...

openssh漏洞上次是说linux中一个bug了,下文我给各位整理一下openssh漏洞修复方法,希望能对大家有帮助.

近期有几台主机上线,上线的主机在进行安全合规扫描时,发现如下openssh漏洞,其中有几个是陈年老漏洞,主要为CVE-2014-1692漏洞(openssh schnorr.c漏洞)为今天一月份的新漏洞,由于主机没有配置外网连接,而且针对suse和redhat不同的版本,所以使用用了源码包编译升级openssh版本的方式修复.

一、准备相关包

  1. zlib-1.2.5.tar.bz2 
  2. openssl-1.0.1.tar.gz 
  3. openssh-6.6p1.tar.gz 

相关包已上传百度云盘上.

二、准备其他登录方式

由于其间有卸载ssh的操作,以免登录不上主机,可以选择先配置telnet或者vnc来进行远程操作,这里以telnet为例,如下:

  1. # vim /etc/xinetd.d/telnet 
  2. service telnet 
  3.         socket_type     = stream 
  4.         protocol        = tcp 
  5.         wait            = no 
  6.         user            = root 
  7.         server          = /usr/sbin/in.telnetd 
  8.         disable         = yes 
  9. }  //phpfensi.com 

注,如无telnet-server包,需要先安装该包后,再配置以上选项,配置完后,重启xinetd守护进程生效并查看是否有23端口的监听:

  1. # service xinetd restart 
  2. # netstat -tunlp 

安全起见也可以考虑修改下telnet端口或通过iptables进行源地址指定.

三、程序升级

1、openssl 包的安装,代码如下:

  1. # tar -zxvf openssl-1.0.1.tar.gz 
  2. # cd openssl-1.0.1 
  3. # ./config -fPIC threads shared 
  4. # make 
  5. # make test 
  6. # make install 
  7. # mv /usr/bin/openssl /usr/bin/openssl.OFF 
  8. # mv /usr/include/openssl /usr/include/openssl.OFF 
  9. //该步骤可能提示无文件,忽略即可 
  10. # ln -s /usr/local/ssl/bin/openssl /usr/bin/openssl 
  11. # ln -s /usr/local/ssl/include/openssl /usr/include/openssl 
  12. //移走原先系统自带的openssl,将自己编译产生的新文件进行链接 

注:不能卸载原openssl包,否则会影响系统的ssl加密库文件,除非你可以做两个软连接libcryto和libssl.

配置文件搜索路径,代码如下:

  1. # chmod 755 /usr/local/ssl/lib 
  2. # echo "/usr/local/ssl/lib" >> /etc/ld.so.conf 
  3. # /sbin/ldconfig -v 
  4. # openssl version -a 
  5. OpenSSL 1.0.1 14 Mar 2012 
  6. built on:Fri Mar 16 17:14:50 CST 2012 
  7. platform:linux-x86_64 
  8. options:  bn(64,64) rc4(16x,int) des(idx,cisc,16,int) idea(int) blowfish(idx) 
  9. compiler: gcc -fPIC -DOPENSSL_PIC -DZLIB -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 
  10. OPENSSLDIR: "/usr/local/ssl" 

2、卸载原openssh包.

备份启动脚本:# cp /etc/init.d/sshd  /root/

停止SSHD服务:# /sbin/service sshd stop

卸载系统里原有Openssh:

  1. # rpm  -qa|grep openssh  //查询系统原安装的openssh包,全部卸载。 
  2. # rpm -e openssh --nodeps 
  3. # rpm -e openssh-server --nodeps 
  4. # rpm -e openssh-clients --nodeps 
  5. # rpm -e openssh-askpass 
  6. 或rpm -e --nodeps `rpm -qa |grep openssh` 

3、解压安装zlib包,代码如下:

  1. # tar -jxvf zlib-1.2.5.tar.bz2 //首先安装zlib库,否则会报zlib.c错误无法进行 
  2. # cd zlib-1.2.5 
  3. # ./configure 
  4. # make&&make install 

4、升级openssh包,先将将/etc/ssh的文件夹备份,代码如下:

  1. # mv /etc/ssh /etc/ssh_bak 
  2. # tar -zxvf openssh-6.6p1.tar.gz 
  3. # ./configure --sysconfdir=/etc/ssh --with-ssl-dir=/usr/local/ssl  --with-md5-passwords --mandir=/usr/share/man  --with-pam 
  4. # make 
  5. # make install 

编译过程中可能报如下错:

  1. checking for EVP_sha256... yes 
  2. checking whether OpenSSL has NID_X9_62_prime256v1... yes 
  3. checking whether OpenSSL has NID_secp384r1... yes 
  4. checking whether OpenSSL has NID_secp521r1... yes 
  5. checking if OpenSSL's NID_secp521r1 is functional... yes 
  6. checking for ia_openinfo in -liaf... no 
  7. checking whether OpenSSL's PRNG is internally seeded... yes 
  8. configure: error: PAM headers not found  --phpfensi.com 

如果报此错误需要安装相应版本的 pam-devel 包,安装完再重新编译即可.

5、启动openssh服务

编译安装好后,可以通过sshd -d 进行验证,如果没有报错就可以重新启用openssh了,代码如下:

  1. # cp -p contrib/redhat/sshd.init /etc/init.d/sshd 
  2. (suse: cp contrib/suse/rc.sshd /etc/init.d/sshd) 
  3. # chmod +x /etc/init.d/sshd 
  4. # chkconfig --add sshd 
  5. # cp sshd_config /etc/ssh/sshd_config  (如提示覆盖,yes回车) 
  6. # cp sshd /usr/sbin/sshd   (如提示覆盖,yes回车) 
  7. (redhat:cp ssh-keygen /usr/bin/ssh-keygen) 

通过下面的命令启动ssh服务,代码如下:

service sshd start 或 service sshd restart

:ssh -V //如果看到了新的版本号就没问题啦,如果没有ssh这条命令,执行(redhat、suse: ln -s /usr/local/bin/ssh /usr/bin/ssh).

自学PHP网专注网站建设学习,PHP程序学习,平面设计学习,以及操作系统学习

京ICP备14009008号-1@版权所有www.zixuephp.com

网站声明:本站所有视频,教程都由网友上传,站长收集和分享给大家学习使用,如由牵扯版权问题请联系站长邮箱904561283@qq.com

添加评论