
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 能防御哪些威胁?
- SQL 注入(SQLi)——攻击者在表单输入或 URL 中嵌入 SQL 命令,以操控数据库
- 跨站脚本攻击(XSS)——向网页注入恶意脚本,用于窃取会话 Cookie 或重定向用户
- 跨站请求伪造(CSRF)——诱骗已登录用户在网站上执行非预期操作
- 路径遍历——利用
../序列尝试访问 Web 根目录以外的文件 - 远程文件包含(RFI)——从外部服务器加载恶意脚本
- 命令注入——通过存在漏洞的输入字段注入操作系统命令
- 机器人与扫描器流量——自动化漏洞扫描器探测系统弱点
在 DirectAdmin 中启用 WAF(ModSecurity)
ModSecurity 需要由主机管理员在服务器层面启用。如果您的 AsiaGB 主机方案包含 WAF 支持,可通过 DirectAdmin 进行管理:
- 登录 DirectAdmin,在"高级功能"或"安全"菜单下找到 ModSecurity 或 Web应用防火墙。
- 若已启用,您将看到 ModSecurity 状态及审计日志条目。
- 为您的域名开启 ModSecurity(切换至 启用)。
- 选择规则集——大多数配置使用 OWASP 核心规则集(CRS)。
- 选择运行模式:检测模式(仅记录日志)或防护模式(主动拦截攻击)。
- 点击保存以应用设置。
OWASP 核心规则集
OWASP 核心规则集(CRS)是全球部署最广泛的 WAF 规则集,由开放 Web 应用安全项目(OWASP)维护。它可防御 OWASP Top 10 Web 应用漏洞,并定期更新以应对新型攻击模式。启用 ModSecurity 并配合 OWASP CRS,只需极少的配置即可获得针对最常见、最危险 Web 攻击的全面防护。
查看 WAF 日志与拦截记录
ModSecurity 会在审计日志中记录每一次检测到的攻击尝试。在 DirectAdmin 中(已启用的情况下),您可以查看被拦截请求的摘要,包括来源 IP、触发的规则以及请求详情。定期查阅这些日志有助于了解网站所受的攻击流量,并验证合法流量是否被误拦截。日志条目通常包含以下信息:
- 事件发生时间戳
- 攻击者的来源 IP 地址
- 匹配到的规则 ID
- 触发规则的 URI 和参数
- 请求是否被拦截或放行
处理误报(False Positive)
当 WAF 因合法请求匹配到安全规则而将其拦截时,即发生误报。这通常出现在复杂的表单提交、内容中包含特殊字符或某些 API 数据负载的场景下。遇到误报时,建议按以下步骤处理:
- 查阅 ModSecurity 审计日志,确定触发拦截的规则(规则 ID)。
- 评估该规则对您的应用程序而言是否过于严格。
- 联系主机服务商,将特定规则针对您的域名加入白名单,或为特定 URL 和参数创建例外。
切勿为了解决单个误报而禁用整个规则集——有针对性的例外配置始终是更优的选择。
在 ModSecurity 中将 IP 和 URL 加入白名单
当 WAF 拦截了合法流量时,目标是创建尽可能小的例外——在修复误报的同时,不降低其他请求的安全防护等级。主要有两种方式:IP 白名单和针对特定 URL 的规则例外。
IP 地址白名单
如果您的办公室 IP、开发者工作站或监控服务被拦截,最简洁的解决方案是将该 IP 地址加入白名单。ModSecurity 支持使用 SecRule 指令设置基于 IP 的例外:
- 单个 IP:
SecRule REMOTE_ADDR "@ipMatch 203.0.113.10" "id:1001,phase:1,allow,nolog" - IP 段:
SecRule REMOTE_ADDR "@ipMatch 203.0.113.0/24" "id:1002,phase:1,allow,nolog"
在共享主机环境下,若无法直接编辑服务器配置文件,请联系主机服务商的技术支持申请 IP 例外。使用 AsiaGB 主机服务时,可通过工单系统提交此类请求。
URL 与规则的精准例外
对于由特定功能引发的误报——例如后台管理面板中的 HTML 编辑器、文件上传接口,或接受复杂 JSON 的 API——应创建仅针对受影响 URL 和规则的精准例外。这样既能修复具体问题,又能保持其他请求的安全防护不受影响。例如,可以仅对 /admin/editor.php 这一 URL 豁免规则 941100(XSS 检测),因为该页面的用户会通过富文本编辑器合法地提交 HTML 内容。
如何判断拦截是误报而非真实攻击
- 错误是在部署使用了富文本编辑器或 HTML 输入的新功能后立即出现的
- 只有已登录用户受影响——匿名访客正常使用
- WAF 日志显示 XSS 规则被触发,但内容实际上是管理员在 CMS 编辑器中输入的正常 HTML
- 被拦截的 URL 是内部管理端点,而非面向公众的页面
- 被拦截的请求来自您自己服务器的监控或健康检查系统
通过 WAF 日志诊断问题
启用 WAF 后,如果网站出现异常——用户遭遇 403 错误、表单无法提交或某些功能失效——ModSecurity 审计日志是首要排查对象。它记录了所有触发规则的请求,提供精确信息以帮助您判断 WAF 是否为根本原因,以及具体是哪条规则导致了问题。
每条日志记录包含哪些内容
ModSecurity 审计日志条目包含以下字段:
- 时间戳——事件发生的精确日期和时间(与用户反馈问题的时间进行比对)
- 客户端 IP 地址——发出请求的来源(有助于区分真实用户与自动化扫描器)
- 规则 ID——匹配到的具体规则(例如:941100 = XSS 检测,942100 = SQL 注入)
- 请求 URI 和参数——触发规则的 URL 与表单数据
- 执行动作——请求是被拦截还是仅被记录
- 严重级别——CRITICAL(严重)、ERROR(错误)、WARNING(警告)或 NOTICE(提示)
如何在 DirectAdmin 中访问 WAF 日志
- 登录 DirectAdmin,进入高级功能或安全。
- 找到 ModSecurity、WAF 或审计日志选项。
- 按问题发生的时间范围筛选日志条目。
- 搜索包含
Access denied或特定规则 ID 的行。 - 记录每条您想排查的被拦截请求的规则 ID 和 URI。
- 判断每条被拦截请求是真实攻击(保留规则)还是误报(创建例外)。
日志分析决策框架
对日志中每条被拦截请求,提问:这条请求是否由合法用户在正常使用网站时发出?若是,则为误报——为该规则和 URL 创建精准例外。若否,则 WAF 正确拦截了一次攻击。核心原则是:永远不要为解决单个误报而全局禁用 WAF 或移除整个规则集。始终创建恢复特定功能所需的最小例外范围。
WAF 模式:检测模式与防护模式
检测模式(又称被动模式或监控模式)记录所有规则匹配事件,但不拦截任何请求。该模式非常适合初始部署阶段——在正式切换到防护模式之前,可在生产站点上运行一周,以识别潜在的误报。
防护模式(主动拦截)会主动拦截匹配安全规则的请求,并向攻击者返回 403 Forbidden 响应。在确认对合法用户没有误报影响之后,生产环境应切换至此模式。
建议先在预发布环境(Staging)测试 WAF:在生产站点启用 ModSecurity 防护模式之前,务必先在预发布副本上进行测试。某些 Web 应用——尤其是较老的 CMS 平台、电商结账流程或复杂的表单提交——可能触发误报并导致功能异常。建议先在预发布环境运行检测模式,仔细查阅日志,将误报加入白名单,然后再在生产环境启用防护模式。
内置 WAF 与 ModSecurity 的主机方案
AsiaGB 主机方案已集成 ModSecurity 与 OWASP 核心规则集,全面保护您的网站免受 SQL 注入、XSS 及自动化攻击流量的威胁。
查看主机方案