步骤概览:先量化正常流量/峰值流量、识别关键业务端点(API、登录、支付页面)、并收集基础监控指标(CPU、网络带宽、连接数)。
实际操作:1) 在低峰期导出最近30天的nginx/Apache access.log和error.log;2) 使用命令统计并行连接与每秒请求数,例如:
awk '{print $4}' access.log | cut -d: -f2 | sort | uniq -c | sort -nr(按分钟统计请求量)。
步骤1:启用高防产品/线路。选择具备日本POP、BGP Anycast与清洗能力(scrubbing center)的供应商,确认清洗阈值与切换时延。
步骤2:在操作系统层面调优TCP栈,示例sysctl配置:
sysctl -w net.core.somaxconn=10240
sysctl -w net.ipv4.tcp_tw_reuse=1
sysctl -w net.ipv4.tcp_max_syn_backlog=4096
步骤3:在边缘使用SYN cookies、硬件或云WAF,必要时开启速率限制与黑名单。推荐配置Nginx限制示例:
limit_conn_zone $binary_remote_addr zone=addr:10m;
limit_conn addr 20;
limit_req_zone $binary_remote_addr zone=req:10m rate=20r/s;
limit_req zone=req burst=40 nodelay;
步骤1:将静态资源交由CDN,日本节点优先,缓存策略利用Cache-Control与ETag,降低回源。
步骤2:对接口分级保护:对静态/公有接口缓存;对认证/支付接口启用严格验证与短缓存,同时加速失败策略(circuit breaker)。
步骤3:在应用层实现验证码、行为分析、登录风控。短期流量激增时,开启后端限流并返回退避提示。
步骤1(检测与切换):监控触发后立即开启高防清洗或将流量引入Anycast清洗;同时在CDN层打开“我在遭受攻击”模式。
步骤2(隔离与降级):临时关闭非关键功能(如批量导出、长轮询),对部分高耗接口返回维护页或限流。
步骤3(溯源与封锁):使用实时连接列表(ss, netstat)或nginx stub_status,快速dump长连接并按IP/ASN进行临时封锁,示例iptables:
iptables -I INPUT -s 1.2.3.4 -j DROP(注意保存规则并记录封锁理由)。
步骤A(采集):部署Filebeat或Fluentd采集access.log、error.log并发送到Logstash/Elastic或直接送到S3备用。示例Filebeat配置片段:
filebeat.inputs:
- type: log
paths: ['/var/log/nginx/access.log']
步骤B(解析):在Logstash使用grok解析nginx日志,添加geoip和user_agent解析:
filter {
grok { match => { "message" => "%{COMMONAPACHELOG}" } }
geoip { source => "clientip" }
useragent { source => "agent" }
}
步骤C(清洗):按规则清理噪音数据——去除内网IP(10./172./192.168.)、去掉健康检查与CDN爬取、合并相同请求并统计频次。
示例命令(快速清洗):
grep -vE '10\.|192\.168\.|172\.' access.log | awk '{print $1,$7,$9,$12}' | sort | uniq -c | sort -nr > cleaned_counts.txt
建立IP信誉库:定期下载公共黑名单(如DShield、AbuseIPDB),与自有封禁记录合并,生成IP黑名单并定时下发到防火墙或WAF。
自动化清洗管线:使用Logstash/Fluentd做实时过滤,Elasticsearch做索引,Kibana/Grafana做告警与仪表盘。必要时用Kafka缓冲高峰日志。
示例Logstash filter增加清洗字段:
if [request] =~ "/health" or [user_agent] =~ "monitor" { drop {} }
比对维度:清洗带宽与切换时延、Anycast覆盖、日本POP数量、价格模型(按峰值计费或按流量计费)、技术支持时区与响应SLA。
实操建议:先做小流量的演练(模拟攻击或压力测试),验证清洗后端到源站的误判率与正常用户的影响,再签署正式SLA。
答:立即启用CDN/高防厂商的“清洗”或“护盾”模式,将流量导向清洗中心;在源站启用Nginx限流(limit_req/limit_conn)、关闭非关键服务并临时用iptables封锁明显攻击IP。同时通知运维与高防支持团队。
答:采用分层规则:先基于明显特征(内网、健康检查、已知爬虫)做硬过滤,再用阈值+行为模型判定可疑流量;对被标记的IP先用“软封”(如返回429)观察一段时间,再决定永久封禁。上线前在灰度环境做A/B验证。
答:评估时看三点:1) 实时日志可见性(是否提供原始流量日志与样本),2) 自动化清洗策略(规则可配置性、回滚能力、误报率统计),3) 集成能力(是否支持将清洗后的日志/告警推送到你的ELK或SIEM)。用统一的攻击回放测试各家响应与对正常流量的影响来做最终选择。