linux中openssh漏洞修复步骤详解

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

一、准备相关包

zlib-1.2.5.tar.bz2

openssl-1.0.1.tar.gz

openssh-6.6p1.tar.gz

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

二、准备其他登录方式

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

 代码如下 复制代码
# vim /etc/xinetd.d/telnet
service telnet
{
        socket_type     = stream
        protocol        = tcp
        wait            = no
        user            = root
        server          = /usr/sbin/in.telnetd
        disable         = yes
}

注,如无telnet-server包,需要先安装该包后,再配置以上选项。

配置完后,重启xinetd守护进程生效并查看是否有23端口的监听:

# service xinetd restart
# netstat -tunlp
安全起见也可以考虑修改下telnet端口或通过iptables进行源地址指定 。

三、程序升级

1、openssl 包的安装

 代码如下 复制代码
# tar -zxvf openssl-1.0.1.tar.gz
# cd openssl-1.0.1
# ./config -fPIC threads shared
# make
# make test
# make install
# mv /usr/bin/openssl /usr/bin/openssl.OFF
# mv /usr/include/openssl /usr/include/openssl.OFF
//该步骤可能提示无文件,忽略即可
# ln -s /usr/local/ssl/bin/openssl /usr/bin/openssl
# ln -s /usr/local/ssl/include/openssl /usr/include/openssl
//移走原先系统自带的openssl,将自己编译产生的新文件进行链接

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

配置文件搜索路径:

 代码如下 复制代码

# chmod 755 /usr/local/ssl/lib
# echo "/usr/local/ssl/lib" >> /etc/ld.so.conf
# /sbin/ldconfig -v
# openssl version -a
OpenSSL 1.0.1 14 Mar 2012
built on: Fri Mar 16 17:14:50 CST 2012
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 -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
OPENSSLDIR: "/usr/local/ssl"

2、卸载原openssh包

备份启动脚本

# cp /etc/init.d/sshd  /root/
停止SSHD服务

# /sbin/service sshd stop

卸载系统里原有Openssh

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

3、解压安装zlib包

 代码如下 复制代码

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

4、升级openssh包

先将将/etc/ssh的文件夹备份:

 代码如下 复制代码
# mv /etc/ssh /etc/ssh_bak
# tar -zxvf openssh-6.6p1.tar.gz
# ./configure --sysconfdir=/etc/ssh --with-ssl-dir=/usr/local/ssl  --with-md5-passwords --mandir=/usr/share/man  --with-pam
# make
# make install

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

checking for EVP_sha256... yes
checking whether OpenSSL has NID_X9_62_prime256v1... yes
checking whether OpenSSL has NID_secp384r1... yes
checking whether OpenSSL has NID_secp521r1... yes
checking if OpenSSL's NID_secp521r1 is functional... yes
checking for ia_openinfo in -liaf... no
checking whether OpenSSL's PRNG is internally seeded... yes
configure: error: PAM headers not found
如果报此错误需要安装相应版本的 pam-devel 包。安装完再重新编译即可 。

5、启动openssh服务

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

 代码如下 复制代码

# cp -p contrib/redhat/sshd.init /etc/init.d/sshd
(suse: cp contrib/suse/rc.sshd /etc/init.d/sshd)
# chmod +x /etc/init.d/sshd
# chkconfig --add sshd
# cp sshd_config /etc/ssh/sshd_config  (如提示覆盖,yes回车)
# cp sshd /usr/sbin/sshd   (如提示覆盖,yes回车)
(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)

时间: 2024-09-30 18:55:06

linux中openssh漏洞修复步骤详解的相关文章

linux中mysql主从配置步骤详解

一.mysql主从方式: 同步:主服务器有数据写入,存储在硬盘,记录二进制日志一份.二进制日志完整发送给从服务器记录于中继日志中,从服务器回应主服务器已收到, 异步:主服务器写入数据,存储磁盘,记录二进制日志,直接反馈客户端:至于从服务器收到与否,不予理会 mysql的复制默认为异步模式 二.配置主从服务器 1.先在两台机器上分别安装好mysql,版本需要一致,然后配置,启动 2.主服务器配置 1).查看mysql是否正常启动  netstat -nltp | grep 3306 2)修改配置文

linux中安装配置sphinx2步骤详解

# 安装sphinx 2.x  代码如下 复制代码 cd /home/addcn wget http://sphinxsearch.com/files/sphinx-2.1.1-beta.tar.gz tar xvf sphinx-2.1.1-beta.tar.gz cd sphinx-2.1.1-beta make clean ./configure –prefix=/usr/local/sphinx –with-mysql=/usr/local/mysql make && make i

installshield-installsheild 2008中的release Wizard步骤详解

问题描述 installsheild 2008中的release Wizard步骤详解 本人IT小白,最近在制作安装包,在installshield 2008中用Release Wizard生成exe这步有点困难, 还希望专业大牛分享一下关于这部分的操作详解..拜托了!! 解决方案 http://chorfung.blog.163.com/blog/static/1207120002010320104717707/

centos6中gitolite安装配置步骤详解

git服务端的管理工具用过2个,一个gitlab,一个是gitolite, 1,gitlab功能强大,有web管理界面,反正是各种方便吧,请参考:linux gitlab nginx 安装 配置 详解,但是gitlab安装比较麻烦 2,gitolite,安装非常简单,功能也比较简单,基本需要能满足,创建仓库,分配权限,总体来说还不错. 如果频繁的创建仓库,以及人员变更,用gitlab比较合适的,反之gitolite比较合适. 一,安装GIT # yum install perl openssh

Laravel中注册Facades的步骤详解_php实例

本文讲述了Laravel中注册Facades的步骤.分享给大家供大家参考,具体如下: 在Laravel中将类注册为Fcade可以使用Ioc容器,每次使用这个类的时候只会初始化一次类,类似单例模式,而且可以像使用静态方法调用类的方法,下面是在Laravel中注册Facades的步骤. 1.在项目app目录的Providers/AppServiceProvider.php中的register方法新增方法,代码如下. /** * Register any application services. *

linux中 关于screen 的命令详解_Linux

一.背景 系统管理员经常需要SSH 或者telent 远程登录到Linux 服务器,经常运行一些需要很长时间才能完成的任务,比如系统备份.ftp 传输等等.通常情况下我们都是为每一个这样的任务开一个远程终端窗口,因为它们执行的时间太长了.必须等待它们执行完毕,在此期间不能关掉窗口或者断开连接,否则这个任务就会被杀掉,一切半途而废了. 二.简介 GNU Screen是一款由GNU计划开发的用于命令行终端切换的自由软件.用户可以通过该软件同时连接多个本地或远程的命令行会话,并在其间自由切换. GNU

linux中route命令的使用详解

route命令用于显示和操作IP路由表.要实现两个不同的子网之间的通信,需要一台连接两个网络的路由器,或者同时位于两个网络的网关来实现.在Linux系统中,设置路由通常是 为了解决以下问题:该Linux系统在一个局域网中,局域网中有一个网关,能够让机器访问Internet,那么就需要将这台机器的IP地址设置为 Linux机器的默认路由. 作用 route命令用于查看和配置linux内核路由表,也就是用来查看和配置linux的静态路由表. 描述 route命令操作基于linux内核路由表,它的主要

linux中rpm与yum区别详解

yum与rpm区别 rpm是由红帽公司开发的软件包管理方式,使用rpm我们可以方便的进行软件的安装.查询.卸载.升级等工作.但是rpm软件包之间的依赖性问题往往会很繁琐,尤其是软件由多个rpm包组成时.Yum(全称为 Yellow dog Updater, Modified)是一个在Fedora和RedHat以及SUSE中的Shell前端软件包管理器.基於RPM包管理,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软体包,无须繁琐地一次次下载.安装.

Linux 中RPM命令参数使用详解

  此工具包最先是由Red Hat公司推出的,后来被其他Linux开发商所借用.由于它为Linux使用者省去了很多时间,所以被广泛应用于在Linux下安装.删除软件.下面就给大家介绍一下它的具体使用方法. 1.我们得到一个新软件,在安装之前,一般都要先查看一下这个软件包里有什么内容,假设这个文件是:Linux-1.4-6.i368.rpm,我们可以用这条命令查看: rpm -qpi Linux-1.4-6.i368.rpm 系统将会列出这个软件包的详细资料,包括含有多少个文件.各文件名称.文件大