SSL安全漏洞
2014年4月7日星期一,一个被称为近期互联网历史上最糟糕的安全漏洞之一的OpenSSL漏洞被披露,该漏洞被称为Heartbleed漏洞,在OpenSSL版本 1.0.1中引入。
该错误允许任何攻击者读取易受攻击的主机的记忆,这意味着在具有易受攻击的OpenSSL版本的主机上使用的任何密钥都应该被视为受损。
我们将向您展示如何更新您的系统使用安全版本的OpenSSL,撤销任何不安全的SSL证书,并测试您是否脆弱。
更新您的系统
DigitalOcean 镜子正在更新,以包括 OpenSSL 包的最新版本,因为它们由分发包装提供。
在 Ubuntu 和 Debian 上,您可以通过键入以下方式进行更新:
1sudo apt-get update
2sudo apt-get dist-upgrade
如果您只想升级受影响的软件包,而不是更新整个系统(如果您有理由相信升级到其他组件会破坏您的系统),您可以选择性地升级 OpenSSL 软件包,键入:
1sudo apt-get install --only-upgrade openssl
2sudo apt-get install --only-upgrade libssl1.0.0
这将升级易受攻击的软件包,同时将其余的系统留在未升级的状态。
在 CentOS 和 Fedora 上,您可以输入以下信息来更新整个系统:
1yum update
如果您只想升级受影响的软件包,您可以发出以下命令:
1yum update openssl
再次,如果您有没有更新完整系统的具体原因,则仅建议这样做。
在写这篇文章时(8月4日14日),Fedora 19尚未在稳定存储库中拥有最新版本,您可以等待更新被接受,但您也可以继续手动构建包。
对于 64 位系统:
1yum -y install koji
2koji download-build --arch=x86_64 openssl-1.0.1e-37.fc19.1
3yum localinstall openssl-1.0.1e-37.fc19.1.x86_64.rpm
您可以通过键入以下方式对 32 位 Fedora 19 系统做同样的事情:
1yum -y install koji
2koji download-build --arch=i686 openssl-1.0.1e-37.fc19.1
3yum localinstall openssl-1.0.1e-37.fc19.1.i686.rpm
在Arch Linux上,可以通过键入更新包:
1sudo pacman -Syu
如果您选择性地更新包,Arch Linux系统可能会变得非常不稳定,所以我们不建议您只更新OpenSSL包。
这应该引入所有最近的更新,包括OpenSSL,如果您指向的镜子已经引入了最新的包,您应该在升级包列表中看到openssl
或某种变体。
完成后,您应该重新启动您的计算机,以确保您的服务器不使用已载入内存的旧版本。
1sudo shutdown -r now
查看您的版本号码
您应该在更新系统后检查您的 OpenSSL 版本。
虽然OpenSSL版本 1.0.1g 是此问题的官方解决方案,但解决此问题的版本对于不同的发行版和发行版可能会有所不同。
出于这个原因,最好检查您的分销商的包装系统,因为openssl版本
命令可能不反映我们需要的信息。
Debian 和 Ubuntu 发布和修复版本
对于 Debian 和 Ubuntu 系统,您可以通过键入以下方式获取您的 OpenSSL 包的当前版本:
1dpkg -l | grep "openssl"
你应该得到这样的输出:
1ii openssl 1.0.1e-2+deb7u6 amd64 Secure Socket Layer (SSL) binary and related cryptographic tools
对于 Debian 用户来说,您正在运行的 Debian 版本将决定正确的版本,如果您的 OpenSSL 版本至少与您的发行中列出的版本一样新,您应该受到保护:
- Debian 6 (Squeeze):未受影响(在漏洞发生之前发货)
- Debian 7 (Wheezy): 1.0.1e-2+deb7u6
- Debian测试(Jessie): 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:生命终止支持,应升级
- Ubuntu 13.10: 1.0.1e-3ubuntu1.2
如果您的发行版不再受支持(Ubuntu 13.04),建议您由于这个错误的严重程度而过渡到受支持的操作系统。
CentOS 和 Fedora 发布和修复版本
对于 CentOS 和 Fedora 系统,您可以通过键入来查询系统上安装的 OpenSSL 软件包的版本:
1rpm -q -a | grep "openssl"
你应该得到一个看起来像这样的输出:
1openssl-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 用户来说,您可以检查您的软件包版本是否至少与下面列出的版本相同。
- Fedora 17:未受影响(在漏洞发生之前发送的旧版本)
- Fedora 19: openssl-1.0.1e-37.fc19.1
** 注意**:注意 Fedora 版本号. 后台.1
告诉你是否已被修补,如果你的包末尾没有.1
,你仍然脆弱!
Arch Linux 修复版本
如果你正在运行Arch Linux,验证就更容易了,因为没有多个版本。
您可以检查您已安装的 OpenSSL 版本:
1pacman -Q | grep "openssl"
你应该得到一个看起来像这样的输出:
1openssl 1.0.1.g-1
如果你的安装版本是这个版本或更高版本,你没事。
取消和重新发行您的 SSL 证书 / 密钥
如果您从提供商那里购买了SSL证书,并在服务器上更新了您的OpenSSL包,则需要撤销旧密钥,并重新发行新密钥。
这个过程非常取决于发出您的初始证书的SSL服务,但您应该搜索他们的管理界面,以寻找类似于重新发行
或重新发行密钥
的选项。
遵循您的SSL提供商给您的指示,他们可能会为您提供如何重建CSR的非常具体的指示,或者他们可能不会。
如果他们不为您提供他们希望您使用的具体openssl
命令,您可以通过键入这样的东西来生成新的SSL CSR。
openssl req -new -newkey rsa:2048 -nodes -keyout hostname.key -out hostname.csr
您将需要将生成的 CSR 复制到您的服务器提供商的 Web 接口后,以便重新锁定您的服务器。
您将不得不将新密钥安装到旧密钥和证书保存在的相同位置。您需要使用的证书和密钥的路径将因分布和您如何配置 Web 服务器而有所不同。
例如,如果您正在使用 Apache 网页服务器,您应该在您的主 Apache 配置文件中看到一行,一个 virtualhost 文件,或一个单独源的配置文件,指向其搜索您的 SSL 信息的位置:
1SSLEngine on
2SSLCertificateFile /path/to/your_domain.crt
3SSLCertificateKeyFile /path/to/your_key.key
4SSLCertificateChainFile /path/to/CA.crt
这些可能看起来不同,但它们应该向您指向正确的方向,以找到您的SSL证书位置。
如果你正在使用 Nginx,你会发现类似的指南,指向你的服务器的SSL证书和密钥。
1server {
2 . . .
3 ssl_certificate /path/to/your_domain.crt;
4 ssl_certificate_key /path/to/your_key.key;
5 . . .
6}
另一种选择是检查您的分布的文档或检查您的服务器的文件系统,以了解您的证书存储在哪里。
当你完成时,你应该重新启动你的网页服务器使用新的密钥. 这样做的方式将因分布和服务器而异。
在 Debian 或 Ubuntu 上,您可以通过键入以下方式重新启动您的 Web 服务器:
1sudo service apache2 restart # For Apache web server
2sudo service nginx restart # For Nginx web server
在 CentOS 或 Fedora 上,您可以通过键入以下方式重新启动:
1sudo service httpd restart # For Apache web server
2sudo service nginx restart # For Nginx web server
对于Arch Linux,你应该使用这样的东西:
1sudo systemctl restart httpd.service
2sudo systemctl restart nginx.service
这应该允许您的 Web 服务器接收您的新证书更改。
从客户的角度进一步考虑
由于这个错误的普遍性,你还应该考虑其他因素,作为网页服务和网站的消费者,你也应该迅速做出反应,以尽量减少对你的帐户和信息的潜在损害。
您应该考虑之前通过SSL保护的任何通信都被这个错误破坏了,这意味着任何与安全网站的互动都可能受到欺诈。
一个很好的第一步是,在您使用的每个网站上更改您的密码,**在您验证他们已经更新了他们的OpenSSL版本以修补此漏洞后。
一个非常重要的考虑是确保您已设置的任何VPN实例。VPN连接的实现方式有几种,但SSL是最受欢迎的。例如,OpenVPN使用SSL。
另一个很好的措施是删除所有会话密钥和cookie,这意味着再生API密钥,清除存储在您的浏览器中的cookie等这可能是一个巨大的不便,但现在不经历这些痛苦的成本是您的帐户基本上是广泛开放的,并且与未更新OpenSSL的远程服务器的通信不应该被认为比简单文本更安全。
结论
这是一个非常大的漏洞,用户和管理员无法忽略或推迟,您应该立即更新您控制的任何服务器,并通知用户的漏洞,以便他们可以从头开始进行损坏控制。
通过补丁您的系统和更新您的SSL证书,您应该被保护免受这个漏洞,作为一个主机,为未来的通信。