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

来自菜鸟教程
跳转至:导航、​搜索

介绍

2014 年 9 月 24 日,一个被称为 Shellshock 或“Bash Bug”的 GNU Bash 漏洞被披露。 简而言之,该漏洞允许远程攻击者在特定条件下执行任意代码,方法是在分配环境变量后传递代码字符串。 由于 Bash 在 Linux、BSD 和 Mac OS X 发行版中无处不在,许多计算机容易受到 Shellshock 的攻击; 1.14 到 4.3 之间的所有未打补丁的 Bash 版本(即 到现在为止的所有版本)都存在风险。

Shellshock 漏洞可以在运行服务或应用程序的系统上被利用,这些服务或应用程序允许未经授权的远程用户分配 Bash 环境变量。 可利用系统的示例包括:

  • 使用以 Bash 编写或启动到 Bash 子shell 的 CGI 脚本(通过 mod_cgimod_cgid)的 Apache HTTP 服务器
  • 某些 DHCP 客户端
  • 使用 ForceCommand 功能的 OpenSSH 服务器
  • 各种使用 Bash 的网络公开服务

可以在 CVE-2014-6271CVE-2014-7169CVE-2014-7186中找到该错误的详细描述CVE-2014-7187

由于 Shellshock 漏洞非常普遍(甚至比 OpenSSL Heartbleed 漏洞更严重)并且特别容易被利用,因此强烈建议对受影响的系统进行适当更新以尽快修复或缓解漏洞。 我们将向您展示如何测试您的机器是否易受攻击,如果是,如何更新 Bash 以消除该漏洞。

检查系统漏洞

在每个运行 Bash 的系统上,您可以通过在 bash 提示符下运行以下命令来检查 Shellshock 漏洞:

env 'VAR=() { :;}; echo Bash is vulnerable!' 'FUNCTION()=() { :;}; echo Bash is vulnerable!' bash -c "echo Bash Test"

命令中突出显示的 echo Bash is vulnerable! 部分表示远程攻击者可以注入恶意代码的位置; 环境变量赋值中函数定义后的任意代码。 因此,如果您看到以下输出,则您的 Bash 版本存在漏洞,应更新

Bash is vulnerable!
Bash Test

如果您的输出不包括模拟攻击者的有效载荷,即 “Bash 易受攻击”不会打印为输出,您至少可以抵御第一个漏洞(CVE-2014-6271),但您可能容易受到后来发现的其他 CVE 的攻击。 如果输出中有任何 bash 警告或错误,您应该将 Bash 更新到最新版本; 这个过程将在下一节中描述。

如果 test 命令的唯一输出是以下内容,则您的 Bash 不会受到 Shellshock 的影响:

Bash Test

测试远程站点

如果您只是想测试网站或特定 CGI 脚本是否易受攻击,请使用此链接:'ShellShock' Bash Vulnerability CVE-2014-6271 Test Tool

只需在适当的表格中输入您要测试的网站或 CGI 脚本的 URL 并提交。

修复漏洞:更新 Bash

修复漏洞最简单的方法是使用默认的包管理器来更新 Bash 的版本。 以下小节介绍了在各种 Linux 发行版上更新 Bash,包括 Ubuntu、Debian、CentOS、Red Hat 和 Fedora。

APT-GET:Ubuntu / Debian

对于当前支持的 UbuntuDebian 版本,通过 apt-get 将 Bash 更新到可用的最新版本:

sudo apt-get update && sudo apt-get install --only-upgrade bash

现在通过运行上一节中的命令(Check System Vulnerability)再次检查您的系统漏洞。

生命周期结束的 Ubuntu / Debian 版本

如果您正在运行被视为 生命终结 状态的 Ubuntu / Debian 版本,则必须升级到受支持的版本才能使用包管理器来更新 Bash。 以下命令可用于升级到新版本(建议您先备份服务器和重要数据,以防遇到任何问题):

sudo do-release-upgrade

升级完成后,确保更新 Bash。

百胜:CentOS / 红帽 / Fedora

通过 yum 将 Bash 更新到最新版本:

sudo yum update bash

现在通过运行上一节中的命令(Check System Vulnerability)再次检查您的系统漏洞。

生命周期结束的 CentOS / Red Hat / Fedora 版本

如果您运行的 CentOS / Red Hat / Fedora 版本被视为 生命终结 状态,则必须升级到受支持的版本才能使用包管理器来更新 Bash。 以下命令可用于升级到新版本(建议您先备份服务器和重要数据,以防遇到任何问题):

sudo yum update

升级完成后,确保更新 Bash。

结论

确保将所有受影响的服务器更新到最新版本的 Bash! 此外,请务必使用最新的安全更新使您的服务器保持最新状态!