1.
目标与总体架构说明
目的:把WAF(云防火墙或本地WAF)与网络IDS联动,以提升检测精度并实现自动化处置。
架构要点:WAF产生HTTP级日志,IDS(Suricata)产生网络/协议级EVE日志,日志统一入Elasticsearch或SIEM,使用关联引擎(ElastAlert/Graylog/SIEM correlation)做规则匹配并下发阻断到WAF或网络黑名单。
2.
准备环境与工具清单
必需组件:WAF(例如
云WAF或Nginx+ModSecurity)、IDS(Suricata)、日志采集(Filebeat/Fluentd)、Elasticsearch+Kibana或其他SIEM、告警引擎(ElastAlert或SIEM自带)。
操作前:确认时间同步(NTP)、网络可达性、API凭证(WAF管理API/云控制台API)和权限。
3.
配置WAF以产生日志
步骤1:在WAF上开启详细审计日志(ModSecurity例:SecAuditEngine RelevantOnly/On,audit log路径)。
步骤2:设置输出为JSON或可解析格式,便于文件或syslog转发到Logstash/Filebeat(示例:ModSecurity CRS + SecAuditLogType Serial,使用ModSecurity 3.0的JSON输出)。
4.
部署并配置Suricata IDS
安装:Debian/Ubuntu示例 apt-get install suricata;把接口设置在promiscuous模式并启用NFQ或镜像端口。
日志设置:在suricata.yaml启用eve.json输出(types: http, dns, tls, alert),并放置到/var/log/suricata/eve.json。
5.
日志收集与统一入库
使用Filebeat:配置filebeat.inputs指向WAF日志与suricata eve.json,将输出到Elasticsearch或Logstash。
示例filebeat.yml片段:filebeat.inputs: - type: log paths: ["/var/log/modsec-audit.log","/var/log/suricata/eve.json"] processors: - decode_json_fields: fields: ["message"] target: "json"
6.
在SIEM/ES中建立索引与字段映射
建议:为WAF与IDS创建独立索引模板(waf-*, suricata-*),确保时间戳、src_ip、uri、signature字段存在并可查询。
校验:在Kibana中检查示例文档,确认IP/URI/规则ID等字段正常解析。
7.
编写关联规则提升精度(实操示例)
原理:当WAF触发高风险HTTP告警且同一源IP在短时间内由IDS触发网络威胁(如SQLi pattern或exploit),则判断为真实攻击。
ElastAlert示例:type: frequency index: ["waf-*","suricata-*"] filter: - query: "src_ip: 1.2.3.4 AND (waf_rule_id:* OR suricata.alert.signature:*)" timeframe: 5m num_events: 2。即5分钟内两类告警同时出现触发告警。
8.
自动化阻断与下发策略
方式A(WAF API):告警触发后通过Webhook/脚本调用WAF管理API,添加IP到黑名单或创建临时阻断规则。
Curl示例:curl -X POST "https://waf.example/api/block" -H "Authorization: Bearer TOKEN" -d '{"ip":"1.2.3.4","ttl":3600,"reason":"IDS+WAF correlated"}'
9.
误报控制与白名单管理(调优步骤)
步骤1:初期只做告警不阻断,观察7-14天,统计误报率与规则命中频次。
步骤2:对频繁误报的URI/客户端指纹加入白名单或设置宽松规则,对命中规则调整阈值或增加更严格签名匹配。
10.
测试验证流程(实操用例)
用例A:模拟SQL注入curl -H "User-Agent: test" "http://app.example/?id=1' OR '1'='1";确认WAF拦截日志和Suricata在同时间窗内产生相关alert。
验证:在Elasticsearch中按src_ip与时间范围查询,确认两端日志并检查自动化脚本是否下发阻断。
11.
监控与性能注意事项
监控点:日志量、ES节点负载、告警频率、WAF阻断规则数和性能影响。
建议:对高频IP做速率限制而非完全阻断,定期清理临时黑名单以防误封。
12.
运维流程与合规性
建议建立SOP:告警分级、人工复核流程、阻断回滚机制及变更记录(谁在何时以何理由下发阻断)。
合规:保存审计日志,告警/阻断动作需记录operator和理由,满足法律和隐私要求。
13.
问:如何判断是否需启用自动阻断而非仅告警?
回答:先基于历史数据评估误报率与攻击严重度;若关联规则经过一段观测(建议2周)误报率低于可接受阈值(例如≤5%),且攻击会造成明显风险,可逐步从通知→临时阻断→自动阻断过渡,并保留人工复核链路。
14.
问:WAF与IDS在时间同步或日志不一致时如何处理关联?
回答:确保NTP同步并在关联规则中加入时间窗容错(如±2分钟)。同时使用请求ID或tcp_flow_id等可关联字段增强匹配可靠性;若缺失则通过src_ip+uri+user_agent组合做模糊关联。
15.
问:哪些常见问题会导致误判,如何避免?
回答:常见误判来源有:托管爬虫、CDN回源行为、代理共享IP。避免方法包括接入反向代理/CDN的真实客户端IP解析(X-Forwarded-For解析)、建立已知爬虫白名单、对共享IP使用基于签名和行为的多维度判断而非仅IP阻断。