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

ModSecurity is supported in both Plesk for Linux and for Windows. It works as a web server (Apache, Nginx, or IIS) module.

启用 ModSecurity

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

  1. Go to Tools & Settings > Web Application Firewall (ModSecurity) (under “Security”).

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

    image 78702

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

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

  3. (Linux) Go to the “Settings” tab, and then in the Run rules on drop-down menu, select the desired combination of the web server and ModSecurity version:

    • Apache (ModSecurity 2.9) (recommended).

    • Nginx (ModSecurity 3.0).

      注解: Switching to Nginx (ModSecurity 3.0) may affect your existing applications. We recommend trying ModSecurity 3.0 out on a test server before switching your production environment to that version.

    If your Plesk server is running on a Microsoft Windows operating system, you will be able to select only the IIS (ModSecurity 2.9) combination and all the related settings will be present on one tab.

  4. Select an available set of rules that will be checked by the web application firewall engine for each incoming HTTP request, or upload a custom rule set. You can select the following rule sets:

    image 78703

    • Atomic Standard (free, can be upgraded to Atomic Advanced). A free starter version of the Atomic ModSecurity rules, bundled with Plesk. It contains important security features and bug fixes released on a monthly basis. For rules included in this rule set, see Atomic ModSecurity Rule Sets.

    • OWASP (free). The OWASP ModSecurity Core Rule Set (CRS) provides generic protection from unknown vulnerabilities often found in web applications. This rule set is shipped for free. It is known as a very restrictive rule set; it requires additional tuning for production use. When this rule set is selected, WordPress partly does not work, webmail and file sharing do not work either. You can use Atomic or Comodo rule sets instead.

    • (Plesk for Linux) Comodo (free). A free, simple-to-use, customizable, rules-based traffic control system that protects your web-based applications and prevents newly emerging hacking techniques with the use of a frequently updated rules database. Unlike the “Comodo (free subscription)” rule set, you do not need a subscription on the Comodo website to select “Comodo (free)”.

    • Atomic Advanced. The latest version of the rules, with all the performance enhancements, new security features and bug fixes released by Atomicorp GotRoot on a daily basis. This is a commercial rule set that is fully supported and recommended for production use. Plesk provides the Security Core Complete by Atomicorp extra feature that allows you to enable this rule set in Plesk. You can get this extra feature by the following ways:

      • 可直接在 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 网站上已经有帐户,您可以提供您的用户名和密码以启用该规则集。

      注解: If you get this extra feature, the Plesk interface will display Atomic Advanced instead of Atomic Standard (free, can be upgraded to Atomic Advanced), and this actually means the complete Atomic Advanced ModSecurity rule set.

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

      警告: (Plesk for Linux) If you select the Atomic ruleset, perform the following procedure to ensure that ModSecurity works fine. Run the aum -u command on the server. The Plesk modsecurity package will be replaced by that from the Atomic repository. Then run the following commands:

      • plesk sbin modsecurity_ctl --disable
      • plesk sbin modsecurity_ctl --enable
      • service httpd restart
    • (Plesk for Linux) Comodo (free subscription). This is a simple-to-use, customizable rules-based traffic control system that protects your web-based applications and prevents newly emerging hacking techniques with the use of a frequently updated rules database. This rule set is shipped for free. To enable this rule set in Plesk, register on the Comodo site and provide your username and password from this site.

      注解: By default, Plesk does not show the “Comodo (free subscription)” rule set. To make the rule set visible in the Plesk interface, add the following lines to the panel.ini file:

      [modSecurity]
      ruleSet.comodo = 1
      
    • Custom rule set. You can upload a custom web application firewall rule set, for example, a trial package from Atomic or a free package from Comodo. Supported formats: zip, tar.gz, tgz, tar.bz2, conf.

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

  6. 选择预设的参数集或指定自定义的 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)

On Windows, ModSecurity audit logs are domain-specific and located in %plesk_dir%ModSecurity\vhosts\<domain's GUID>\logs (where %plesk_dir% is the default installation directory for 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 将不会对其检查。