如何在 DirectAdmin 中使用 Web应用防火墙

Web应用防火墙(WAF)是保护网站免受自动化攻击、漏洞利用和恶意流量侵害最有效的工具之一。与根据 IP 地址和端口拦截流量的网络防火墙不同,WAF 会检查 HTTP 请求的实际内容,并在应用层阻断攻击。DirectAdmin 通过 ModSecurity 提供 WAF 功能——这是业界标准的开源 WAF 模块,适用于 Apache 服务器。

什么是 Web应用防火墙?

WAF 位于您的网站与外部访问流量之间。它检查每一条 HTTP 请求——包括 URL、请求头、表单数据和 Cookie——并将其与一套安全规则进行比对。如果请求与已知攻击模式匹配,WAF 会在请求到达您的 Web 应用程序之前将其拦截。WAF 的运作对用户完全透明:正常访客的体验不受影响,而恶意请求则会被立即阻断。

WAF 与网络防火墙的区别

网络防火墙(如 iptables 或 CSF)工作在 IP 和端口层面——可以封锁整个 IP 段、关闭未使用的端口并限制连接速率。WAF 则工作在 HTTP 应用层,能够理解 Web 请求的结构与内容。两者相辅相成:网络防火墙防止未经授权的服务器连接,WAF 则阻止已建立连接中的恶意载荷执行。完整的服务器安全防护需要两者同时部署。

WAF 能防御哪些威胁?

在 DirectAdmin 中启用 WAF(ModSecurity)

ModSecurity 需要由主机管理员在服务器层面启用。如果您的 AsiaGB 主机方案包含 WAF 支持,可通过 DirectAdmin 进行管理:

  1. 登录 DirectAdmin,在"高级功能"或"安全"菜单下找到 ModSecurity 或 Web应用防火墙。
  2. 若已启用,您将看到 ModSecurity 状态及审计日志条目。
  3. 为您的域名开启 ModSecurity(切换至 启用)。
  4. 选择规则集——大多数配置使用 OWASP 核心规则集(CRS)。
  5. 选择运行模式:检测模式(仅记录日志)或防护模式(主动拦截攻击)。
  6. 点击保存以应用设置。

OWASP 核心规则集

OWASP 核心规则集(CRS)是全球部署最广泛的 WAF 规则集,由开放 Web 应用安全项目(OWASP)维护。它可防御 OWASP Top 10 Web 应用漏洞,并定期更新以应对新型攻击模式。启用 ModSecurity 并配合 OWASP CRS,只需极少的配置即可获得针对最常见、最危险 Web 攻击的全面防护。

查看 WAF 日志与拦截记录

ModSecurity 会在审计日志中记录每一次检测到的攻击尝试。在 DirectAdmin 中(已启用的情况下),您可以查看被拦截请求的摘要,包括来源 IP、触发的规则以及请求详情。定期查阅这些日志有助于了解网站所受的攻击流量,并验证合法流量是否被误拦截。日志条目通常包含以下信息:

处理误报(False Positive)

当 WAF 因合法请求匹配到安全规则而将其拦截时,即发生误报。这通常出现在复杂的表单提交、内容中包含特殊字符或某些 API 数据负载的场景下。遇到误报时,建议按以下步骤处理:

  1. 查阅 ModSecurity 审计日志,确定触发拦截的规则(规则 ID)。
  2. 评估该规则对您的应用程序而言是否过于严格。
  3. 联系主机服务商,将特定规则针对您的域名加入白名单,或为特定 URL 和参数创建例外。
DirectAdmin 中的 Web应用防火墙(WAF)页面
DirectAdmin 中的 Web应用防火墙(WAF)页面
点击
点击"启用"(已圈出)以激活 Web应用防火墙

切勿为了解决单个误报而禁用整个规则集——有针对性的例外配置始终是更优的选择。

在 ModSecurity 中将 IP 和 URL 加入白名单

当 WAF 拦截了合法流量时,目标是创建尽可能小的例外——在修复误报的同时,不降低其他请求的安全防护等级。主要有两种方式:IP 白名单和针对特定 URL 的规则例外。

IP 地址白名单

如果您的办公室 IP、开发者工作站或监控服务被拦截,最简洁的解决方案是将该 IP 地址加入白名单。ModSecurity 支持使用 SecRule 指令设置基于 IP 的例外:

在共享主机环境下,若无法直接编辑服务器配置文件,请联系主机服务商的技术支持申请 IP 例外。使用 AsiaGB 主机服务时,可通过工单系统提交此类请求。

URL 与规则的精准例外

对于由特定功能引发的误报——例如后台管理面板中的 HTML 编辑器、文件上传接口,或接受复杂 JSON 的 API——应创建仅针对受影响 URL 和规则的精准例外。这样既能修复具体问题,又能保持其他请求的安全防护不受影响。例如,可以仅对 /admin/editor.php 这一 URL 豁免规则 941100(XSS 检测),因为该页面的用户会通过富文本编辑器合法地提交 HTML 内容。

如何判断拦截是误报而非真实攻击

通过 WAF 日志诊断问题

启用 WAF 后,如果网站出现异常——用户遭遇 403 错误、表单无法提交或某些功能失效——ModSecurity 审计日志是首要排查对象。它记录了所有触发规则的请求,提供精确信息以帮助您判断 WAF 是否为根本原因,以及具体是哪条规则导致了问题。

每条日志记录包含哪些内容

ModSecurity 审计日志条目包含以下字段:

如何在 DirectAdmin 中访问 WAF 日志

  1. 登录 DirectAdmin,进入高级功能或安全。
  2. 找到 ModSecurity、WAF 或审计日志选项。
  3. 按问题发生的时间范围筛选日志条目。
  4. 搜索包含 Access denied 或特定规则 ID 的行。
  5. 记录每条您想排查的被拦截请求的规则 ID 和 URI。
  6. 判断每条被拦截请求是真实攻击(保留规则)还是误报(创建例外)。

日志分析决策框架

对日志中每条被拦截请求,提问:这条请求是否由合法用户在正常使用网站时发出?若是,则为误报——为该规则和 URL 创建精准例外。若否,则 WAF 正确拦截了一次攻击。核心原则是:永远不要为解决单个误报而全局禁用 WAF 或移除整个规则集。始终创建恢复特定功能所需的最小例外范围。

WAF 模式:检测模式与防护模式

检测模式(又称被动模式或监控模式)记录所有规则匹配事件,但不拦截任何请求。该模式非常适合初始部署阶段——在正式切换到防护模式之前,可在生产站点上运行一周,以识别潜在的误报。

防护模式(主动拦截)会主动拦截匹配安全规则的请求,并向攻击者返回 403 Forbidden 响应。在确认对合法用户没有误报影响之后,生产环境应切换至此模式。

建议先在预发布环境(Staging)测试 WAF:在生产站点启用 ModSecurity 防护模式之前,务必先在预发布副本上进行测试。某些 Web 应用——尤其是较老的 CMS 平台、电商结账流程或复杂的表单提交——可能触发误报并导致功能异常。建议先在预发布环境运行检测模式,仔细查阅日志,将误报加入白名单,然后再在生产环境启用防护模式。

内置 WAF 与 ModSecurity 的主机方案

AsiaGB 主机方案已集成 ModSecurity 与 OWASP 核心规则集,全面保护您的网站免受 SQL 注入、XSS 及自动化攻击流量的威胁。

查看主机方案