Skip to content

使用 WAF 安全 API 访问

使用 WAF 安全 API 访问

Traefik Hub 功能

此中间件仅在 Traefik Hub 中可用。了解有关 Traefik Hub 高级功能 的更多信息。

Traefik Hub API Gateway 中的 Coraza Web Application Firewall 中间件提供针对常见 Web 应用程序攻击的全面保护。该中间件支持 Coraza 规则语法,并与 OWASP Core Rule Set (CRS) 兼容,允许你利用由安全社区维护的成熟安全规则。

基本 WAF 保护

要使用自定义安全规则保护你的应用程序,请应用以下配置:

Middleware WAF

yaml
apiVersion: traefik.io/v1alpha1
kind: Middleware
metadata:
  name: waf-protection
  namespace: apps
spec:
  plugin:
    coraza:
      directives:
        - SecRuleEngine On
        - SecRule REQUEST_URI "@streq /admin" "id:101,phase:1,t:lowercase,log,deny"
        - SecRule ARGS "@detectSQLi" "id:102,phase:2,block,msg:'SQL Injection Attack Detected',logdata:'Matched Data: %{MATCHED_VAR} found within %{MATCHED_VAR_NAME}'"

此配置实现三个协同工作的安全指令以保护应用程序:

  • SecRuleEngine On:激活 WAF 引擎以开始处理传入请求。没有此指令,所有其它规则无论其配置如何都将保持非活动状态。
  • 管理路径保护:第二个规则通过检查请求 URI 阻止对 /admin 路径的所有访问。这完全防止对管理界面的访问,这些界面通常包含敏感功能,如用户管理、系统配置或数据库管理工具。该规则在阶段 1(请求 headers 处理)期间触发,并应用小写转换以捕获 /Admin/ADMIN 等变体。
  • SQL 注入检测:第三个规则使用 Coraza 的内置检测引擎扫描请求参数(查询字符串和表单数据)中的 SQL 注入模式。ARGS 变量涵盖 ?id=1 等查询字符串参数和来自 POST 请求的表单数据,如 username=admin&password=123,但不包括 cookies。SQL 注入攻击试图通过用户输入注入恶意 SQL 代码来操纵数据库查询。检测到时,该规则会阻止请求并记录有关尝试攻击的详细信息,包括哪个参数包含恶意负载。

IngressRoute

yaml
apiVersion: traefik.io/v1alpha1
kind: IngressRoute
metadata:
  name: protected-app
  namespace: apps
spec:
  entryPoints:
    - websecure
  routes:
  - match: Path(`/my-app`)
    kind: Rule
    services:
    - name: whoami
      port: 80
    middlewares:
    - name: waf-protection

Service & Deployment

yaml
kind: Deployment
apiVersion: apps/v1
metadata:
  name: whoami
  namespace: apps
spec:
  replicas: 3
  selector:
    matchLabels:
      app: whoami
  template:
    metadata:
      labels:
        app: whoami
    spec:
      containers:
      - name: whoami
        image: traefik/whoami

---
apiVersion: v1
kind: Service
metadata:
  name: whoami
  namespace: apps
spec:
  ports:
  - port: 80
    name: whoami
  selector:
    app: whoami

使用 OWASP Core Rule Set 的高级保护

要使用 OWASP Core Rule Set(提供针对常见攻击模式的久经考验的规则)实施全面保护,请应用以下配置:

Middleware WAF with CRS

yaml
apiVersion: traefik.io/v1alpha1
kind: Middleware
metadata:
  name: waf-crs-protection
  namespace: apps
spec:
  plugin:
    coraza:
      crsEnabled: true
      directives:
        - SecRuleEngine On
        - SecDefaultAction "phase:1,log,auditlog,deny,status:403"
        - SecDefaultAction "phase:2,log,auditlog,deny,status:403"
        - SecAction "id:900110, phase:1, pass, t:none, nolog, setvar:tx.inbound_anomaly_score_threshold=5, setvar:tx.outbound_anomaly_score_threshold=4"
        - SecAction "id:900200, phase:1, pass, t:none, nolog, setvar:'tx.allowed_methods=GET POST'"
        - Include @owasp_crs/REQUEST-911-METHOD-ENFORCEMENT.conf
        - Include @owasp_crs/REQUEST-949-BLOCKING-EVALUATION.conf

此高级配置实现具有异常评分的 OWASP Core Rule Set (CRS) 保护:

  • Phase 1 和 2 的 SecDefaultAction:设置请求处理阶段的默认行为。Phase 1 处理请求 headers,而 Phase 2 处理请求 body。当规则匹配时,它们将事件记录到标准日志和审计日志,然后以 403 状态码拒绝请求。
  • 异常评分配置:第一个 SecAction 设置异常评分阈值,其中 inbound_anomaly_score_threshold=5 意味着评分达到 5 或更高的请求被阻止,outbound_anomaly_score_threshold=4 对响应应用相同的逻辑。这种评分系统允许多个可疑模式累积分数,而不是在首次检测时阻止,从而减少误报同时保持安全性。
  • 允许的方法配置:第二个 SecAction 将 HTTP 方法限制为仅 GETPOST 请求。这可以防止可能修改 server 资源或泄露系统信息的潜在危险方法,如 PUTDELETEPATCHOPTIONS
  • METHOD-ENFORCEMENT 规则集REQUEST-911-METHOD-ENFORCEMENT.conf 文件强制执行上面定义的允许 HTTP 方法策略。它根据允许的方法检查传入请求,并为不允许的方法对异常评分做出贡献。
  • BLOCKING-EVALUATION 规则集REQUEST-949-BLOCKING-EVALUATION.conf 文件根据配置的阈值评估累积的异常评分。如果总评分超过阈值,它会触发阻止操作,防止请求到达你的应用程序。

IngressRoute

yaml
apiVersion: traefik.io/v1alpha1
kind: IngressRoute
metadata:
  name: crs-protected-app
  namespace: apps
spec:
  entryPoints:
    - websecure
  routes:
  - match: Path(`/my-app`)
    kind: Rule
    services:
    - name: whoami
      port: 80
    middlewares:
    - name: waf-crs-protection

警告

从 Traefik Hub v3.11.0 开始,Coraza 需要对 /tmp 的读/写权限。此要求源于 Coraza 引擎的上游更改。

高级选项和详细规则配置在 参考页面 中描述。

WAF 中间件通过 Coraza 指令支持广泛的定制。你可以创建自定义规则、调整检测阈值、配置日志记录级别,并集成外部威胁情报源。有关全面的规则编写指南,请参阅 Coraza 文档OWASP CRS 文档


在生产环境使用 Traefik OSS?

如果你在工作中使用 Traefik,可以考虑为其添加企业级 API 网关能力或获取 Traefik OSS 的商业支持。

向 Traefik OSS 添加 API 网关功能既快速又无缝。无需进行替换,所有配置都保持不变。可以通过这个短视频查看实际效果。

基于 MIT 协议发布