Web 应用程序防火墙 (ModSecurity)

为了检测和阻止对 web 应用程序的攻击,web 应用程序防火墙 (ModSecurity) 会检测所有违反规则集的到 web 服务器的请求以及来自服务器的相关响应。如果检查成功,该 HTTP 请求就会被传递到网站内容。如果检测失败,则会执行预定义的操作。

ModSecurity 是 Apache 的一个模块。因此,只能检查到达 Apache HTTP 请求。Apache 可辅以另一款 web 服务器 - nginx。如果您启用 由 nginx 处理 PHP 选项用于处理网站的动态内容,web 应用程序防火墙将无法检查 HTTP 请求因为这些请求永远不会到达 Apache。 对于静态内容,如果启用了 由 nginx 直接服务静态文件 选项,HTTP 请求将不会到达 Apache,因此 ModSecurity 将不会对其检查。

注意: 若要使用 web 应用程序防火墙 (ModSecurity), ,从 Plesk 11.5 升级的管理员必须从 Odin 或其供应商获取 Plesk 12 的许可证密钥。

若要启用 web 应用程序防火墙:

  1. 请进入  工具与设置 > Web 应用程序防火墙 (ModSecurity) (在  安全性  组里)进行操作。必须在您的服务器上安装 ModSecurity 组件。


    Web_Application_Firewall

  2. 设置 web 应用程序防火墙模式为 启用仅检测。会针对一组规则对每次接收的 HTTP 请求以及相应响应进行检查。如果检查成功,该 HTTP 请求就会被传递到网站内容。如果检查失败,该事件将会被记录。在 仅检测 模式中,不会执行任何其他操作。在 启用 模式中,HTTP 响应将会提供一个错误代码。

    注意: 可在服务器和域名级别范围设置 web 应用程序防火墙模式。但是,域名级别模式不能高于服务器级别模式的设置。例如,如果服务器级别的 web 应用程序防火墙在 仅检测 模式中运行,您将无法为域名设置 启用 模式。只会显示 禁用仅检测 模式。

  3. 设置将被 web 应用程序防火墙引擎为每个接收 HTTP 请求检测的规则集,或上传自定义规则集。您可以设置以下规则集:
    • OWASP ModSecurity Core Rule Set (CRS). CRS 会对在 web 应用程序中找到的未知漏洞提供通用保护。该规则集免费。该规则集非常严格,生产使用需要额外调整。当选定了该规则集时,部分 WordPress 功能失效,web 邮箱和文件共享完全不能工作。因而可使用 Atomic 或 Comodo 规则集来替代。
    • Atomic ModSecurity Rule Set. 最新最强大的规则版本,所有性能得以提升,新增安全功能,由 Atomicorp GotRoot 每日发行 bug 修复程序。这是一个商业性的规则集,完全支持和适合生产用途。若要在 Plesk 中启用该规则集,请在 Atomic 网站上注册并提供您的用户名和密码。

      警示: 如果您选择了 Atomic 规则集以确保 ModSecurity 运行正常:

      在服务器上运行 aum -u 命令。Plesk modsecurity 程序包将被来自 Atomic 库的程序包所替代。然后运行以下命令:

      • plesk sbin modsecurity_ctl --disable
      • plesk sbin modsecurity_ctl –enable
      • service httpd restart
    • Comodo ModSecurity Rule Set. 这是一个简单易用、可自定义规则的流量控制系统,应用频繁更新的规则数据库保护您的 web 应用程序防止黑客攻击。该规则集免费。若要在 Plesk 中启用该规则集,请在 Comodo 网站上注册并提供您的用户名和密码。
  4. 若要自动更新选定的规则集,请选择 更新规则集 复选框并选择更新时段。
  5. 选择预设的参数集或指定自定义的 ModSecurity 指令。您可以选择以下预设的参数集:
    • Fast,当 HTTP 请求 URI 和部分信息头被分析时。该模式消耗的 CPU 最少。
    • Tradeoff,当 HTTP 请求 URI、信息头和请求 POST 数据被分析时。该模式在质量和性能之间有很好的平衡。
    • Thorough,当完整的 HTTP 请求信息头、请求 POST 数据和 HTTP 响应正文内容被分析时。该模式消耗的 CPU 资源最多,但是推荐用于需要特殊安全措施的网站。例如,在线商店接受卡支付。

      注意: 为了达到最优性能,web 应用程序防火墙需要本地的 DNS 服务器启用请求缓存功能。否则,当启用 web 应用程序防火墙时您的网站可能会运行很慢。

ModSecurity 使用两个地址来存储日志:

  • ModSecurity 审计日志(位于 /var/log/httpd/modsec_audit.log)非常详细,whole Plesk 服务器使用该日志。当 ModSecurity 检测到任何发生的事件,就会在审计日志文件中生成一个条目。若要查看 ModSecurity 审计日志,请进入  工具与设置 > Web 应用程序防火墙 (ModSecurity) > 点击 日志存档 链接 (在 ModSecurity 审计日志 组里)。您可在此查看 ModSecurity 日志文件和修改日期,并下载日志文件。
  • 域名的 Apache 错误日志(位于 /var/www/vhosts/DOMAIN.TLD/logs/error_log)只包含有关网站错误的简要信息。您可以在客户面板上的 网站与域名 > <domain_name> > 日志 > 选择仅 Apache 错误nginx 错误 而不是右边的 所有日志 以查看某个网站的错误日志。

当您修改 web 应用程序防火墙模式从禁用仅检测启用时,网站可能会停止运行。在网站错误日志中您可以找到类似 403404500 的错误代码,您把 web 应用程序防火墙模式更改回 仅检测禁用 时这些代码则不会出现。如果出现这样的情况,请分析 ModSecurity 审计日志查找原因。您可以关闭特别严格的安全规则或调整网站。

要找出为何一个网站上的 HTTP 请求无法完成而关闭安全规则:

  1. 请进入  工具与设置 > Web 应用程序防火墙 (ModSecurity)进行操作。
  2. 点击 ModSecurity 日志文件 链接下载审计日志并在新窗口中打开。
  3. 使用搜索(在大部分的 web 浏览器中按下 Ctrl+F)查找出问题的网站(域名)。例如,your_domain.tld。浏览器将会高亮突出某些项,如 HOST: your_domain.tld,在高亮突出的三行中找出字串 --eece5138-B--。连字符中间的八个字符(即 eece5138)是 HTTP 请求触发的事件的 ID。
  4. 进一步查找带有相同事件 ID 的其它条目。查找事件 ID 后面带有字母 H 的条目(例如,eece5138-H--)。该条目包含 ID 和当检查 HTTP 请求时触发的安全规则的描述。安全规则 ID 是在方框内带有 ID 前缀置于引号中的自 3 开始的一个整数 例如,[id "340003"]
  5. 使用子字符串 [id "3 在事件中查找安全规则 ID。
  6. 请进入  工具与设置 > Web 应用程序防火墙 (ModSecurity)进行操作。
  7. 安全规则 中,按 ID(例如,340003)、标签(例如,CVE-2011-4898)或按常规表达(例如,XSS)选择安全规则并点击 确定
针对在升级到 Plesk 12 之前于服务器上安装了 ModSecurity 的有用提示。
  • Plesk 将会安装自己的 ModSecurity 程序包。但是,在升级前 检查的过程中,Plesk 安装程序将会询问您是否同意在现有安装中安装 Plesk ModSecurity。
  • 保留现有的 ModSecurity 配置。但是,ModSecurity 有很多版本和配置,因此很难预测新旧配置会如何发生冲突。若要避免此问题的出现,请在升级到 Plesk 12(或在安装 Plesk 的 ModSecurity 之前)保存您现有的配置并卸载 ModSecurity。

在本节:

Atomic ModSecurity 规则集