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

Plesk for Linux 和 Plesk for Windows 都支持 ModSecurity。以 web 服务器 (Apache 或 IIS) 模块的形式工作。

启用 ModSecurity

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

  1. 请进入  工具与设置 > Web 应用程序防火墙 (ModSecurity) (在  安全性  组里)进行操作。

    若未看到该链接,请进入 工具与设置 > 更新 > 添加/移除组件 > 主机 组里安装 ModSecurity 组件。

    image 78702

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

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

  3. 设置将被 web 应用程序防火墙引擎为每个接收 HTTP 请求检测的规则集,或上传自定义规则集。您可以设置以下规则集:

    • Atomic Basic ModSecurity. 与 Plesk 绑定的 Atomic ModSecurity 规则的 starter 版本。包含每月发行的重要安全功能和 bug 修复程序。欲了解该规则集中的所有规则,请参阅 Atomic ModSecurity 规则集

    • OWASP ModSecurity Core Rule Set (CRS). CRS 会对在 web 应用程序中找到的未知漏洞提供通用保护。该规则集免费。该规则集非常严格,生产使用需要额外调整。当选定了该规则集时,部分 WordPress 功能失效,web 邮箱和文件共享完全不能工作。因而可使用 Atomic 或 Comodo 规则集来替代。

    • Advanced ModSecurity Rules by Atomicorp 。最新最强大的规则版本,所有性能得以提升,新增安全功能,由 Atomicorp GotRoot 每日发行 bug 修复程序。这是一个商业性的规则集,完全支持和适合生产用途。Plesk 还提供 Security Core Complete by Atomicorp 额外的功能,可以在 Plesk 中启用该规则集。您可以通过以下方式获取额外的功能:

      • 可直接在 Plesk 在线商店 中购买 Advanced ModSecurity Rules by Atomicorp 产品。
      • If you already have a Plesk license, you can add the extra feature via the Plesk Partner Central UI or via the Partner API (for details, refer to the Partner Central User’s Guide or Partner API 3.0 reference).
      • 如果您已经有 Plesk 许可证但是无法访问 Plesk 合作伙伴中心,可联系您的提供商。

      如果您在  Atomic 网站上已经有帐户,您可以提供您的用户名和密码以启用该规则集。

      注解: 如果您购买了该功能,Plesk 用户界面将会显示 Advanced ModSecurity Rules by Atomicorp 而不是 Atomic Basic ModSecurity ,表示完整的 Atomic ModSecurity 规则集。

      欲了解该规则集中的所有规则,请参阅 Atomic ModSecurity 规则集

      请注意 (Linux): 如果您选择了 Atomic 规则集以确保 ModSecurity 运行正常。在服务器上运行 aum -u 命令。Plesk modsecurity 程序包将被来自 Atomic 库的程序包所替代。然后运行以下命令:

      • plesk sbin modsecurity_ctl --disable
      • plesk sbin modsecurity_ctl --enable
      • service httpd restart
    • Comodo ModSecurity 规则集 (Linux). 这是一个简单易用、可自定义规则的流量控制系统,应用频繁更新的规则数据库保护您的 web 应用程序防止黑客攻击。该规则集免费。若要在 Plesk 中启用该规则集,请在 Comodo 网站 上注册并提供您的用户名和密码。

    • 自定义 。您可以上传自定义的 web 应用程序防火墙规则集,例如,Atomic 的试用包或 Comodo 的免费包。支持的格式:zip、tar.gz、tgz、tar.bz2、conf。

  4. 若要自动更新选定的规则集,请选择 更新规则集 复选框并选择更新时段。

  5. 选择预设的参数集或指定自定义的 ModSecurity 指令。您可以选择以下预设的参数集:

    • Fast ,当分析 HTTP 请求 URI和部分标头时。该模式消耗的 CPU 最少。

    • Tradeoff, 当分析HTTP 请求 URI、标头和请求 POST 数据时。该模式在质量和性能之间有很好的平衡。

    • Thorough ,当分析完整的 HTTP 请求头、POST 请求数据和HTTP 响应正文时。该模式消耗的 CPU 资源最多,但是推荐用于需要特殊安全措施的网站。例如,在线商店接受卡支付。

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

      image 76906

日志文件 (Linux)

在 Linux 系统上,ModSecurity 使用两个地址来存储日志:

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

日志文件 (Windows)

在 Windows 系统上,ModSecurity 审计日志是域名级别的,位于 %plesk_dir%\ModSecurity\vhosts\<domain's GUID>\logs (其中 %plesk_dir% 是 Plesk 的默认安装目录)。

禁用规则

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

要找出为何一个网站上的 HTTP 请求无法完成:

  1. 查看网站的审计日志文件。

    在 Plesk for Linux 中,您可以使用 Plesk 的 UI 查看日志:进入  工具与设置 > Web 应用程序防火墙 (ModSecurity) 点击 ModSecurity 日志文件 链接下载审计日志并在新的浏览器窗口中打开该日志。

  2. 使用搜索(在大部分的 web 浏览器中按下 Ctrl+F )查找出问题的网站(域名)。例如, your_domain.tld 。浏览器将会高亮突出某些项,如 HOST: your_domain.tld. 在凸显条目以上的三行中,找到如 --eece5138-B-- 的字串。连字符中间的八个字符(即 eece5138 )是 HTTP 请求触发的事件的 ID。

  3. 进一步查找带有相同事件 ID 的其它条目。查找事件 ID 后面带有字母 H 的条目(例如, eece5138-H-- )。该条目包含 ID 和当检查 HTTP 请求时触发的安全规则的描述。安全规则 ID 是在方框内带有 ID 前缀置于引号中的自 3 开始的一个整数 例如, [id "340003"]

  4. 使用子字符串 [id "3 在事件中查找安全规则 ID。当您禁用规则时可能会使用该 ID。

若要禁用规则:

  1. 请进入  工具与设置 > Web 应用程序防火墙 (ModSecurity) 进行操作。
  2. 禁用安全规则 部分,按 ID(例如, 340003 )、标签(例如, CVE-2011-4898 )或按常规表达(例如, XSS )选择安全规则并点击 确定

Nginx 和 ModSecurity 说明 (Linux)

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