使用 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
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
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-protectionService & Deployment
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
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 方法限制为仅GET和POST请求。这可以防止可能修改 server 资源或泄露系统信息的潜在危险方法,如PUT、DELETE、PATCH或OPTIONS。 - METHOD-ENFORCEMENT 规则集:
REQUEST-911-METHOD-ENFORCEMENT.conf文件强制执行上面定义的允许 HTTP 方法策略。它根据允许的方法检查传入请求,并为不允许的方法对异常评分做出贡献。 - BLOCKING-EVALUATION 规则集:
REQUEST-949-BLOCKING-EVALUATION.conf文件根据配置的阈值评估累积的异常评分。如果总评分超过阈值,它会触发阻止操作,防止请求到达你的应用程序。
IngressRoute
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 网关功能既快速又无缝。无需进行替换,所有配置都保持不变。可以通过这个短视频查看实际效果。