1.
首先要建立正常流量基线,使用Prometheus+Grafana或Zabbix收集网口流量(ifconfig/ethtool)、连接数(netstat/ss)、HTTP QPS、CPU与内存。配置阈值告警(例如入方向超过5Gbps/10s触发初级告警,>20Gbps触发二级告警)。
其次配置实时告警通道:钉钉/Slack/邮件+短信,确保运维班值班能立刻接到。用Alertmanager结合Prometheus实现自动抑制与重复通知策略。
2.
一旦告警,第一时间抓包与统计。使用tcpdump对公网接口抓取样本:sudo tcpdump -n -s 0 -c 10000 -w /tmp/attack.pcap host X.X.X.X。
并结合tshark或Bro/Zeek提取五元组、SYN比、重复源IP、请求URI分布。命令示例:tshark -r attack.pcap -T fields -e ip.src -e tcp.flags -Eseparator=, | sort | uniq -c | sort -nr | head。
3.
如果攻击来源较为集中,优先在内核层丢弃。示例流程:创建ipset并加入黑名单:sudo ipset create blacklist hash:ip timeout 86400; sudo ipset add blacklist 1.2.3.4。
然后在iptables放到INPUT/PREROUTING前端丢弃:sudo iptables -I INPUT -m set --match-set blacklist src -j DROP。对于高并发使用nftables或tc才能更高效。
4.
启用SYN Cookie防止SYN泛滥:sudo sysctl -w net.ipv4.tcp_syncookies=1。查看并调高conntrack表:sudo sysctl -w net.netfilter.nf_conntrack_max=5242880。
当conntrack表满会导致正常连接失败,可观察/proc/net/nf_conntrack。调整超时:sudo sysctl -w net.netfilter.nf_conntrack_tcp_timeout_established=86400。
5.
对非必要协议或单IP连接数做速率限制。举例用tc限制流量:sudo tc qdisc add dev eth0 root handle 1: htb default 10; sudo tc class add dev eth0 parent 1: classid 1:10 htb rate 40mbit。
在应用层使用nginx限制连接数与QPS:limit_conn_zone $binary_remote_addr zone=addr:10m; limit_conn addr 10; limit_req_zone $binary_remote_addr zone=req:10m rate=20r/s。
6.
当本地无法承受时,立即联系香港机房或上游ISP请求BGP黑洞或流量导向清洗(scrubbing)。准备好以下信息:攻击目标IP、开始时间、峰值流量、协议/端口。
如果使用云清洗或CDN,提交流量样本与ACL规则,要求对方下发黑名单或开启自动清洗。记录工单ID与联系人电话。
7.
对可做反代的网站,优先开启CDN并设置WAF策略(阻断高频访问URI,JS挑战/验证码)。对于非HTTP协议,使用专用DDoS清洗服务或公网转发到清洗中心。
示例:将域名CNAME指向CDN并在WAF配置“速率限制/Geo block/URL白名单”,对API接口采用签名+速率限制。
8.
攻击期间保留所有网络与应用日志(syslog/nginx/access.log/tcpdump),并做md5校验避免篡改。对抓包进行长期保存(S3或外部存储),便于和ISP/清洗方共享。
分析要点:来源ASN、源IP分布、payload特征、是否为放大类型(NTP/DNS)、是否针对单一URL或多目标。
9.
流量下降到基线附近后,按步骤逐步回滚:先降低WAF严格度,再移除ipset条目,最后恢复原始路由。每一步间隔5-10分钟并观察指标。
保留攻击期间的快照与配置(iptables-save、ipset save),遇到复发可快速重放策略。
10.
把上述流程写成SOP并自动化常用命令。示例脚本片段(伪码): sudo ipset create blacklist hash:ip; sudo iptables -I INPUT -m set --match-set blacklist src -j DROP; curl -X POST notify_team
定期做桌面演练(每季度)并与上游和清洗厂商互演,确保联动流程顺畅。
问:如何快速判断我的香港50g高防服务器是否正在遭受50G级别DDoS攻击?
答:先看网口峰值流量(ifconfig/ethtool或监控面板),如果短时间内入流量接近或超过50Gbps且同时连接数/半开连接异常飙升,伴随大量重复源IP或单一URI暴增,基本可以判断为大流量攻击。采样抓包并与基线对比确认协议特征。
问:紧急情况下常用的几条命令有哪些,能快速临时缓解?
答:常用命令示例:1) 抓包 tcpdump -n -s0 -c10000 -w /tmp/a.pcap host X.X.X.X;2) 建黑名单 ipset create blacklist hash:ip timeout 86400; ipset add blacklist 1.2.3.4;3) 丢弃规则 iptables -I INPUT -m set --match-set blacklist src -j DROP;4) 启用SYN cookie sysctl -w net.ipv4.tcp_syncookies=1;5) 调整conntrack sysctl -w net.netfilter.nf_conntrack_max=5242880。
问:在香港机房遇到无法承受的流量时,如何与机房/ISP高效沟通?
答:准备标准化工单内容:攻击目标IP/端口、开始时间、当前峰值流量、协议类型、样本抓包、需要的操作(BGP黑洞/流量导向清洗/ACL下发)。附上联系方式并要求SLA级别响应,必要时电话直联并持续更新攻防状态与回滚条件。