technine.io
夜色中一排不锈钢自动闸机,每台闸机都亮着红色叉号指示灯,后方是玻璃挡板和昏暗的站厅。

指南

什么是 Web 应用防火墙(WAF)?它如何过滤网站流量

Web 应用防火墙(WAF)部署在网站或 Web 应用前面,检查每一个进入的请求,在攻击到达程序之前进行拦截。本文介绍 WAF 的作用、与网络防火墙的区别、它的局限,以及如何稳妥地配置。

更新于

Web 应用防火墙(Web Application Firewall,简称 WAF)是部署在网站或 Web 应用前面的一道过滤层,会逐个检查进入的网络请求,在可疑请求到达应用之前进行拦截或标记。对于运营网店、预约系统或客户门户的企业,WAF 能多加一层防护,抵御常见的网站攻击;不过它应该和规范的代码、定期更新、日常监测配合使用,而不是替代它们。

WAF 做什么

用户每次打开网页、提交表单或调用 API,浏览器或应用都会发出一个 HTTP 请求。WAF 读取这些请求的内容,包括网址、请求头、Cookie 和表单字段,再和一套规则进行比对。对每个请求,WAF 可以:

  • 放行,让请求正常到达网站
  • 拦截,并返回错误页面
  • 质询,例如验证访问者是不是真实的浏览器
  • 记录,留作日后查看而不拦截

规则一般有两个来源:WAF 服务商维护的托管规则,针对广为人知的攻击类型;以及团队为自己网站添加的自定义规则,比如限制同一个地址尝试登录的频率。

WAF 和网络防火墙的区别

传统的网络防火墙根据 IP 地址、端口等条件,决定哪些连接可以进入。它通常不会查看网络请求的具体内容,也不会判断某次表单提交是不是攻击。

WAF 工作在应用层。它默认网站流量本身是允许进入的,再检查每个请求想做什么。大多数企业两者都需要:网络防火墙限制哪些服务能从外部访问,WAF 则负责检查那些必须对外开放的服务收到的流量。

WAF 能帮上什么忙

  • 常见的注入攻击,例如藏在表单字段或网址里的 SQL 注入和跨站脚本(XSS)。
  • 已知漏洞:广泛使用的软件一旦公开漏洞,WAF 服务商往往会添加规则,拦截已知的利用方式,这种做法有时叫“虚拟补丁”。它可以在完成更新前降低风险,但不能代替更新。我们的 PHP2Shell 文章就是最近的一个例子:服务商加了防护规则,同时仍然建议客户尽快打补丁。
  • 自动化滥用,例如机器人反复尝试密码、批量抓取页面或提交垃圾表单,可以通过限流和人机验证来应对。

WAF 做不到的事

  • 修复你自己代码里的漏洞。如果已登录的客户只要改一下网址里的编号,就能看到别人的订单,这个请求看起来完全正常,WAF 通常会放行。
  • 阻止用被盗密码完成的登录。这类登录和正常登录没有区别,多重身份验证才是更合适的措施。
  • 保护能被直接访问的服务器。如果攻击者找到源服务器的地址并绕过 WAF,规则就不起作用。
  • 不经调整就完美运行。规则太严会误拦真实客户(误报),太松又会让攻击通过。

WAF 的部署方式

  • 云端或边缘 WAF:流量先经过服务商的网络,再到达你的服务器。这类服务常和内容分发网络(CDN)一起提供,一般需要修改 DNS 配置。
  • 云平台 WAF:挂在云主机的负载均衡器或网关上。
  • 服务器或应用层面:Web 服务器上的模块,或 CMS 里的安全插件。这类方案容易加装,但和被保护的网站运行在同一台服务器上。

选哪一种,取决于你的主机方案、预算和由谁来管理。主机服务商或开发方可以说明现有方案已经包含哪些功能。

稳妥配置的要点

  • 先用记录或监测模式,查看哪些请求会被拦截,再把规则切换为拦截。
  • 启用规则后测试结账、登录、表单和 API 调用,最好先在预发布环境里测试。
  • 在配置允许的情况下,限制源服务器只接受来自 WAF 的流量。
  • 继续更新软件和插件。WAF 只是争取时间,并没有消除漏洞。
  • 把重要的 WAF 告警纳入网站监测流程,并明确由谁跟进。
  • 把 WAF 纳入渗透测试范围,弄清楚它能拦住什么、拦不住什么。

可以向开发方或主机服务商提的问题

  • 我们的网站前面有没有 WAF?它是在拦截,还是只做记录?
  • 启用了哪些规则?由谁负责更新?
  • 如果客户被误拦,由谁处理?
  • 源服务器能不能绕过 WAF 被直接访问?
  • WAF 的日常检查是否包含在我们的支持服务里?

如需把 WAF、主机和访问权限配置放在一起检查,可以查看 technine.io 的网络安全与合规服务。

常见问题

小企业网站需要 WAF 吗?

只要是带登录、支付或表单的公开网站,不管规模大小,都可能成为自动化攻击的目标。不少主机和 CDN 套餐已经包含基础的 WAF 功能,购买新服务前可以先看看现有套餐。

WAF 会让网站变慢吗?

检查请求需要额外处理,但配置得当的 WAF 一般影响不大。与其凭感觉判断,不如在启用前后实际测一下页面速度。

有了 WAF,还需要更新和测试吗?

需要。WAF 降低的是已知攻击方式带来的风险;更新修复的是漏洞本身,测试则能发现通用规则识别不了的问题。

咨询WhatsApp