GH GambleHub

Web Application Firewall和攻击保护

简短摘要

WAF/WAAP在应用程序级别过滤和监视HTTP(S )/WebSocket流量:阻止漏洞利用(OWASP Top 10),遍历身份验证尝试,扫描,自动机器人流量和L7 DDoS。现代堆栈由反机器人引擎,API保护,限制等级,虚拟补丁程序以及与CI/CD的紧密集成来补充,以使规则像代码一样安全地推出。

体系结构中的角色和位置

Edge/CDN WAF(云):低潜伏度,全球声誉/管理规则,L7 DDoS。
自主主机WAF (on-prem/K8s):深入集成内部网络,微调。
WAAP方法:WAF+API-网关功能(计划验证,authZ),反机器人,L7 DoS,mTLS。

启用方案: 在应用程序之前反向扩展;K8s中的Ingress控制器;Service Mesh过滤器;sidecar.

保护模型

Negative security (签名/CRS):快速覆盖已知技术(SQLi/XSS/SSRF/RCE)。
正面安全(allow-list):我们只允许"有效"请求(方法/路径/模式/内容类型)。
Virtual Patching:在线锁定代码虚拟化。
上下文:静态内容、API、adminok、下载、webhook的不同策略。

典型威胁和措施

OWASP Top 10:SQLi,XSS,IDOR/BOLA,SSRF,模板化剂注射,脱序列化,misconphigs。
L7 DDoS:缓慢的查询/标题,热点终端爆发→保护:限制限制,挑战,自动单元。
机器人/scrapers:行为,频率,"非人类"模式,设备fingerprinting,动态令牌。
Credential Stuffing/ATO:拦截/过度登录→ IP/ASN异常,velocity规则,附加因素。
下载:防病毒类型/大小/多扫描,媒体领域中的"仅图像"。
API/GraphQL:计划验证,"maxDepth"/"maxCost",禁止不可转换的通配符,控制方法和标题。

策略和规则构造函数

任何应用程序的基本的"骨架":

1.运输:TLS 1.2+/1.3、HSTS、mTLS在敏感后端。

2.方法:allow-list("GET、POST、PUT、DELETE、PATCH、OPTIONS")是唯一的资源。

3.路径:严格的口罩/口罩;adminka/billing-单独的前缀/域。

4.标题:白名单,禁止危险("X-Original-URL",非标准),无需。

5.尸体:沿途仅为JSON-only/Multipart;"Content-Length"限制,"登录"/搜索"上的二进制块。

6.费率限制:per-IP/ASN/密钥/组织;单独限制"昂贵"查询。

7.反机器人:行为得分,"不刺激"挑战赛,身份滑落(cookie令牌,JA3/TLS FP)。

8.CRS/托管规则:启用,调制为FP。

9.静止补丁:快速锁定已知攻击参数/模式。

10.逻辑/度量标准:单一格式,与"trace_id"相关,FP/TP报告。

调整实践: 如何降低误报

在仅侦测/计数模式(阴影)中运行具有流量样本的新规则。
根据上下文创建例外("path =/search","param=q"允许特殊字符)。
划分区域:"公共页面"与"敏感操作"(攻击性阈值不同)。
流水线:规则→站立→金丝雀(1-5%)→散布;根据FP度量进行回滚。
维护回归测试的"虚假"付费目录。

集成到DevSecOps中

CI:Git中的静态规则;测试:从攻击目录中提取真实查询+合成。
CD:金丝雀布局,仙女旗;"政治"监视(更改规则=更改)。
RASP和SAST/DAST:WAF补充但不替代代码修复。

可观察性和SLO

度量标准:
  • p95/99通过WAF潜伏期;被阻止/遗漏的比例;share Managed Rules vs custom;«attack rate».
  • 反机器人:挑战/投降份额,FP/TP。
  • L7 DDoS: burst-rate, auto-mitigation events.
SLO示例:
  • "不超过0。5%的FP用于授权操作/日。"
  • «p95 overhead WAF ≤ 10 мс».
  • "虚拟补丁的TTR ≤ 30分钟。"
  • 警报:规则发布后的4xx/5xx激增;FP的增长;通过帽子的下降;JWKS/mTLS验证的降解。

配置示例

ModSecurity + OWASP CRS (Nginx)

nginx
Enabling ModSecurity modsecurity on;
modsecurity_rules_file /etc/nginx/modsec/main. conf;

`/etc/nginx/modsec/main.conf`:

apache
SecRuleEngine On
Include /usr/local/owasp-modsecurity-crs/crs-setup. conf
Include /usr/local/owasp-modsecurity-crs/rules/.conf

Example of an exception for a search parameter
SecRule REQUEST_URI "@beginsWith /search" "id:900100,phase:1,pass,nolog,ctl:ruleRemoveByTag=attack-xss"
SecRule REQUEST_URI "@beginsWith /search" "id:900101,phase:2,pass,ctl:ruleRemoveTargetById=942100; ARGS:q"

AWS WAF (JSON, rate limit+国家列表块)

json
{
"Name": "prod-web-acl",
"Scope": "CLOUDFRONT",
"DefaultAction": { "Allow": {} },
"Rules": [
{
"Name": "BurstLogin",
"Priority": 1,
"Statement": {
"RateBasedStatement": {
"Limit": 100,
"AggregateKeyType": "IP",
"ScopeDownStatement": { "ByteMatchStatement": {
"SearchString": "/login",
"FieldToMatch": { "UriPath": {} },
"TextTransformations": [{ "Priority": 0, "Type": "NONE" }],
"PositionalConstraint": "CONTAINS"
}}
}
},
"Action": { "Block": {} },
"VisibilityConfig": { "MetricName": "BurstLogin", "SampledRequestsEnabled": true, "CloudWatchMetricsEnabled": true }
}
]
}

Cloudflare (Expression Rules)


(http. request. uri. path contains "/admin" and ip. geoip. country ne "UA")
or (http. request. uri. path eq "/login" and cf. threat_score > 10)
or (http. request. uri. path contains "/api" and not http. request. headers["authorization"][0] contains "Bearer ")

NGINX: 方法/物体的简单规则

nginx location /api/withdraw {
limit_except POST { deny all; }
if ($request_method = POST) {
set $cl $http_content_length;
if ($ cl = "") {return 411;} # length is required if ($ cl> 1048576) {return 413;} # ≤ 1MB add_header X-Idempotency-Required "true";
}
}

GraphQL: 限制器

'maxDepth=6','maxCost=1000',禁止销售'__ schema',allow-list操作,标题验证('Content-Type:application/json')。

反机器人与人友检查

隐形挑战赛(JS挑战赛没有kapchi),"昂贵"途径上的工作证明,行为分析(运动/计时)。
TLS/JA3-fingerprinting, IP/ASN声誉,代理列表/VPN(合理范围内)。
形状上的陷阱(honeypot字段),动态形状/会话令牌。
隐私保护:尽量减少跟踪、透明策略、选择退出。

API焦点

Schema-first:用于验证的OpenAPI/JSON Schema;禁止多余的领域。

Auth: 必然Bearer JWT或mTLS;reject без `Authorization`.

Rate/Quota: per-key/per-org;超出-"软块"/慢速。
Webhooks:HMAC签名,"timestamp+nonce",短接收窗口。
GraphQL:请参阅上面的限制器;编写操作名称/标签。

下载和媒体

大小限制,whitelists MIME/扩展名,文件重命名;

AV扫描(多引擎),ImageMagick策略(无危险解码器);

一个单独的域上的Thumb服务,仅服务-图像。

海军上将和关键地区的安全

单独的域/路径,mTLS/禁止共享的 ASN/国家/地区,严格的限制,JIT访问,IP allow-list。
其他信号(device posture, risk score) →需要第二次检查。

操作、事件和虚拟补丁

运行手册:快速发布块规则,TTL限制,命令通知。
回滚标准:身高4 x/5x>阈值,FP>阈值,p95 latency↑。
后遗症:将测试添加到回归规则集中,将SIGMA同位素固定在SIEM中。

合规性和隐私

编译最小值:路径/方法/代码/块原因/标识符;不要保存PII/身体的秘密。
保留策略日志的时间表;按角色访问;磁盘加密。

iGaming/fintech的功能

付款/付款/钱包:per org配额,mTLS到PSP,严格的路径allow单,HMAC到PSP webhooks。
ATO/奖金缺口:对登录规则/注册/促销代码,行为限制和反机器人。
内容提供商/工作室:单独的域/策略,IP/ASN allow-list,时间到钱包/转换监视对WAF的影响。
区域要求:地理政策(国家/地区),GDPR处理的透明度。

实施路线图

1.区域清单(公共,API,管理,下载)。
2.基本配置文件:TLS,allow-list方法/路径,管理规则/CRS。
3.Rate limits+在敏感路径上的反机器人。
4.虚拟补丁和紧急规则过程(SLA ≤ 30分钟)。
5.CI/CD用于规则,站立/金丝雀/影子模式。
6.遥测,SLO,回归规则测试。
7.定期审查异常和"清除"旁路。

典型的错误

"将所有CRS纳入最大值"→ FP雪崩和团队倦怠。
没有金丝雀和阴影模式的规则。
缺乏细分:一个政策适合一切。
忽略API/GraphQL特征(schema/limits)。
没有相关性("trace_id")且没有质量指标的逻辑。

FAQ

WAF是否取代安全代码?

没有。这是缓解层和"虚拟补丁",但是代码中的技术债务必须消除。

如何理解是时候打开硬块了?
当阴影模式报告显示低FP并且存在回归规则测试时。

API需要单独的WAF吗?

更好的WAAP/与 API网关的集成:电路,限制,身份验证,webhook签名。

底线

有效的WAF/WAAP是基础CRS/托管规则,正模型,反机器人,限制和虚拟补丁的组合,并得到DevSecOps过程,遥测和清晰SLO的支持。这种方法可以快速应对漏洞、抵御自动攻击以及可预测的UX和性能影响。

Contact

联系我们

如需任何咨询或支持,请随时联系我们。我们随时准备提供帮助!

开始集成

Email — 必填。Telegram 或 WhatsApp — 可选

您的姓名 可选
Email 可选
主题 可选
消息内容 可选
Telegram 可选
@
如果填写 Telegram,我们也会在 Telegram 回复您。
WhatsApp 可选
格式:+国家代码 + 号码(例如:+86XXXXXXXXX)。

点击按钮即表示您同意数据处理。