如何保护您的服务器免受Heartbleed OpenSSL漏洞的影响

重要SSL安全漏洞

在2014年4月7日星期一,一个OpenSSL漏洞被披露,被称为最近的互联网史上最严重的安全漏洞之一。在OpenSSL版本1.0.1中引入了称为Heartbleed错误的错误。自2012年3月,已经在野生和修补与4月7日2014年发布的问题OpenSSL的版本1.0.1g,标记CVE-2014-0160,是 在这里详细描述 。 该漏洞允许任何攻击者读取易受攻击的主机的内存,这意味着在具有易受攻击版本的OpenSSL的主机上使用的任何密钥都应被视为受到攻击。分发者已经更新其包并推出更新,但用户需要下拉最新的包,并撤销基于不安全版本的任何以前的密钥。 我们将向您展示如何使用安全版本的OpenSSL更新您的系统,撤销任何不安全的SSL证书,并测试您是否容易受到攻击。

更新系统

DigitalOcean镜像正在更新,以包括OpenSSL包的最新版本,因为它们可由分发包装商提供。更新软件包的最简单方法是更新整个系统。 在Ubuntu和Debian上,您可以通过键入以下内容进行更新:
sudo apt-get update
sudo apt-get dist-upgrade
如果你 只是想升级受影响的软件包,而不是更新整个系统(仅建议,如果你有理由相信,升级到其他部件会破坏你的系统),可以有选择地通过键入升级OpenSSL的包:
sudo apt-get install --only-upgrade openssl
sudo apt-get install --only-upgrade libssl1.0.0
这将升级易受攻击的包,而将系统的其余部分保持在未升级状态。 在CentOS和Fedora上,您可以键入此更新整个系统:
yum update
如果您只希望升级受影响的软件包,可以改为发出以下命令:
yum update openssl
同样,这只是建议,如果你有一个特定的原因,不更新整个系统。 在写这篇文章的时候(04/08/14),Fedora 19还没有最新版本的稳定版本库。您可以等待更新被接受,但您也可以继续并手动构建软件包。考虑到错误的严重性,这可能是值得的。 对于64位系统:
yum -y install koji
koji download-build --arch=x86_64 openssl-1.0.1e-37.fc19.1
yum localinstall openssl-1.0.1e-37.fc19.1.x86_64.rpm
您可以通过键入以下内容对Fedora 19的32位系统执行相同操作:
yum -y install koji
koji download-build --arch=i686 openssl-1.0.1e-37.fc19.1
yum localinstall openssl-1.0.1e-37.fc19.1.i686.rpm
在Arch Linux上,可以通过键入以下内容来更新软件包:
sudo pacman -Syu
如果您选择性地更新软件包,Arch Linux系统可能会变得非常不稳定,因此我们不建议您只更新OpenSSL软件包。 这应该拉入所有最近的更新,包括OpenSSL,如果你指向的镜像拉最新的软件包。您应该看到 openssl或升级后的软件包列表中的某些变种。 完成后,应重新启动计算机,以确保您的服务器未使用内存中加载的旧版本。你可以通过发出:
sudo shutdown -r now

检查您的版本号

在更新系统后,应检查OpenSSL的版本。 虽然OpenSSL版本1.0.1g是此问题的官方修复,但是为不同发行版和发行版修复此问题的版本可能会有所不同。一些版本和发行版修补了旧版本以解决这个问题,而不是将一个全新的版本发布到一个老的,稳定的生态系统中。 因为这个原因,最好是通过发行版的包装系统进行检查,因为 openssl version命令可能无法反映我们所需要的信息。

Debian和Ubuntu发布和修复版本

对于Debian和Ubuntu系统,通过键入以下内容获取OpenSSL包的当前版本:
dpkg -l | grep "openssl"
您应该收到如下输出:
ii  openssl                            1.0.1e-2+deb7u6               amd64        Secure Socket Layer (SSL) binary and related cryptographic tools
对于Debian用户,您运行的Debian版本将确定修复的正确版本。如果您的OpenSSL版本 至少是因为最近这里列出的Linux发行版,你应该得到保护:
  • Debian 6 (挤压):不受影响(随旧版本之前的漏洞)
  • 的Debian 7(Wheezy):1.0.1e-2 + deb7u6
  • Debian的测试(杰西):1.0.1g-1
  • Debian的不稳定(SID):1.0.1g-1
对于Ubuntu用户,正确的修补版本也与发布有关。使用此列表查看您的版本的最低安全版本:
  • Ubuntu的10.04:不受影响(之前的漏洞随旧版本)
  • Ubuntu的12.04:1.0.1-4ubuntu5.12
  • Ubuntu的12.10:1.0.1c-3ubuntu2.7
  • Ubuntu的13.04:LIFE达到支持结束,应该升级
  • Ubuntu的13.10:1.0.1e-3ubuntu1.2
如果您使用的是其中一个受支持的发行版,请确保您的OpenSSL版本是最新的。如果您的发行版不再支持(Ubuntu 13.04),强烈建议您转移到支持的操作系统,因为这个错误的严重性。

CentOS和Fedora发布和修复版本

对于CentOS和Fedora系统,您可以键入以下命令查询系统上安装的OpenSSL包的版本:
rpm -q -a | grep "openssl"
您应该收到类似下面的输出:
openssl-1.0.1e-16.el6_5.7.x86_64
对于CentOS,以下是必须应用的OpenSSL版本和最低版本,以保护未来的SSL交互。我们将在我们的列表中结束我们的架构:
  • CentOS的5:不受影响(之前的漏洞随旧版本)
  • CentOS 6的 :的OpenSSL 1.0.1e-16.el6.5.7
对于Fedora用户,您可以检查您的软件包版本是否至少与下面列出的一样。再次,我已经删除了下面的架构,因为这适用于32位和64位版本:
  • Fedora的17:不受影响(之前的漏洞随旧版本)
  • Fedora的19:的OpenSSL 1.0.1e-37.fc19.1
注意 :要密切关注的Fedora版本号。后面的“.1”告诉你是否被打补丁。如果你的包没有“.1”在结尾,你还是脆弱的!

Arch Linux修复版本

如果您正在运行Arch Linux,则由于没有多个版本,因此验证要容易得多。 您可以检查您已安装的OpenSSL的版本:
pacman -Q | grep "openssl"
您应该收到类似下面的输出:
openssl 1.0.1.g-1
如果你安装的版本是这个版本或更高版本,你没关系。

撤销和重新发放您的SSL证书/密钥

如果您已从提供程序购买了SSL证书,并且已在服务器上更新了OpenSSL包,则需要撤销旧密钥,您必须重新签发新密钥。这是一个称为“密钥更新”的过程。 此过程非常依赖于发出初始证书的SSL服务,但是您应该在其管理界面中搜索类似于“rekey”或“reissue keys”的选项。大多数SSL发行者在您重新输入密钥时会撤销您以前的密钥,但您通常也可以使用他们的管理界面明确地执行此操作。 按照您的SSL提供商提供的指示操作。他们可能给你非常具体的说明如何重新生成CSR,或者他们可能不会。 如果他们不为你提供具体的 openssl命令,他们希望你使用,你可以通过键入像这样生成新的SSL CSR。 再次,加 sudo ,如果你不是根用户:
openssl req -new -newkey rsa:2048 -nodes -keyout hostname.key -out hostname.csr
您需要在生成后将生成的CSR复制到提供程序的Web界面中,以便重新键入您的服务器。然后,您需要从Web界面下载新证书。 您必须将新密钥安装到保存旧密钥和证书的位置。您需要为证书和密钥使用的路径因分发和您的Web服务器配置而异。例如,一些保存在 /etc/ssl/certs ,而其他人可能被保存在由Web服务器提供的位置。 例如,如果您使用Apache Web服务器,则应在主Apache配置文件,虚拟主机文件或指向查找SSL信息的位置的单独配置文件中看到一行:
SSLEngine on
SSLCertificateFile /path/to/your_domain.crt
SSLCertificateKeyFile /path/to/your_key.key
SSLCertificateChainFile /path/to/CA.crt
这些可能看起来不同,但它们应该指向正确的方向,以找到您的SSL证书位置。 如果你使用Nginx,你会发现类似的指令,指向你的服务器的SSL证书和密钥。他们可能看起来像这样:
server {
    . . .
    ssl_certificate /path/to/your_domain.crt;
    ssl_certificate_key /path/to/your_key.key;
    . . .
}
另一个选项是检查您的发行版文档或检查您的服务器的文件系统,以找出您的证书存储在哪里。 完成后,应重新启动Web服务器以使用新密钥。执行此操作的方法因分发和服务器而异。 在Debian或Ubuntu上,您可以键入以下命令重新启动Web服务器:
sudo service apache2 restart    # For Apache web server
sudo service nginx restart      # For Nginx web server
在CentOS或Fedora上,您可以键入以下命令重新启动:
sudo service httpd restart      # For Apache web server
sudo service nginx restart      # For Nginx web server
对于Arch Linux,您应该使用类似:
sudo systemctl restart httpd.service
sudo systemctl restart nginx.service
这应该允许您的Web服务器提取您的新证书更改。

客户视角的其他注意事项

由于这个bug的广泛性,还有其他一些考虑因素,你也应该考虑。作为网络服务和网站的消费者,您还应尽快做出反应,尽量减少对您的帐户和信息的潜在损害。 您应该考虑您之前通过SSL保护的任何通信已被此错误危害。这意味着与安全网站的任何种类的交互都是开放的窥探。 一个好的第一步是在你使用,你已经验证,他们已经更新了他们的OpenSSL的版本来修补这个漏洞 后,每一个网站更改密码。如果在远程站点修补其SSL版本之前更改了密码,则新密码与旧密码一样脆弱。 一个非常重要的考虑是保护您设置的任何VPN实例。有几种不同的方式实现VPN连接,但SSL是最受欢迎的之一。例如,OpenVPN使用SSL。连接到您的服务器所需的任何证书都应重新生成,以确保它们是安全的。 另一个好的措施是删除所有会话密钥和cookie。这意味着重新生成API密钥,清除存储在浏览器中的cookie等。这可能会带来很大的不便,但是现在没有经历这些痛苦的代价是,您的帐户基本上是开放的,并且与没有远程服务器的通信更新他们的OpenSSL应该被认为不比纯文本更安全。

结论

这是一个令人难以置信的大错误,用户和管理员不能忽视或推迟。您应该立即更新您可以控制的任何服务器,并通知用户这些漏洞,以便他们可以从他们的结尾进行损害控制。 通过修补系统和更新SSL证书,您应该可以防止此漏洞作为主机,以便将来进行通信。
作者:Justin Ellingwood
赞(52) 打赏
未经允许不得转载:优客志 » 系统运维
分享到:

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏