Looyao's Blog

记录一些点滴

OpenSSL Heartbeat 漏洞检查和修复

| Comments

现在写这个貌似有点晚了,漏洞是4月8号爆出来的,美国时间应该是4月7号,OpenSSL官网的漏洞说明,https://www.openssl.org/news/secadv_20140407.txt,简要来说就是利用这个漏洞可以读到服务器64K内存数据,这个是非常危险的,比如登陆服务器,黑客在不停根据漏洞抓取64K内存值,那么这段时间进行登陆的用户的信息很可能泄漏,用户名密码直接暴露出来。

下边说下这个漏洞如何检测,最简单的方法,直接访问http://filippo.io/Heartbleed/,这个网站可以检测,我使用的时候发现不是很准,比如有漏洞的网站也有可能显示OK,有可能是这个检测网站的服务器负载太高。所以这里说下检测工具的安装,下载地址https://github.com/FiloSottile/Heartbleed,这个需要go语言支持,所以如果机器没有go语言环境需要先安装下,这里简要说下Mac上如何安装go环境,其他系统请自行google。

go 下载 & 安装:https://code.google.com/p/go/downloads/list,这里我下载的是go1.2.1.darwin-amd64-osx10.8.pkg,下载下来安装即可。

go 环境变量:这里需要设置下环境变量,这里在~/.bash_profile中添加即可,先贴出来

export GOROOT=/usr/local/go
export GOPATH=$HOME/Documents/go
export PATH=$PATH:$GOROOT/bin:$GOPATH/bin
  • GOROOT:go安装路径(默认就安装在/usr/local/go)。
  • GOPATH:这个路径是go插件默认存放位置(对go不是很熟悉,可能说的不是那么准确)
  • PATH:这个就是将GOPATH和GOROOT下bin文件夹中的可执行文件加入到默认PATH中。

接下来在终端source一下,让环境变量生效

source ~/.bash_profile

这样,go语言环境就ok了,接下来安装Heartbleed,github上有说明,只需要执行两条命令就可以安装了。

go get github.com/FiloSottile/Heartbleed
go install github.com/FiloSottile/Heartbleed

使用Heartbleed检测https网站是否有漏洞,在终端执行命令,如

Heartbleed www.example.com:443

如果显示SAFE,那么就说明没有Heartbeat漏洞,如果有漏洞,会打印出来64K内存值。

漏洞修复:这里需要升级OpenSSL,目前应该所有Linux发行版都会有OpenSSL更新包(受到漏洞影响的版本),这里拿CentOS为例,

yum update openssl

升级之后,需要重启WEB服务器,重新使用Heartbleed检测,如果未修复,那么检查下是否yum源是否自己修改过,如果有修改,请修改为默认源并重新update openssl试试。接下来就是服务器私钥了,为了安全起见,可以重新生成私钥,并去HTTPS证书提供商那里重新申请证书。

Comments