1.
准备与监控 - 先决条件与工具部署
- 部署实时流量监控:安装netdata或Prometheus+Grafana用于带宽/连接数告警。
- 命令示例:apt install netdata;或使用node_exporter + prometheus。
- 日志与抓包工具:tcpdump、iftop、vnstat,保存pcap便于追踪攻击特征(tcpdump -w /tmp/attack.pcap port 80)。
2.
设定告警阈值与自动化响应
- 定义阈值:例如带宽>70%或每秒连接数(SYN/s)>1000触发告警。
- 在监控系统设置Webhook,当阈值被触发调用脚本自动启用防护策略(如切换到清洗)。
- 示例:Prometheus alertmanager发送POST到脚本,脚本启动ipset/iptables规则或通知上游提供商。
3.
本地速率限制与连接数控制(nginx + kernel层)
- Nginx限速示例:在server段使用 limit_req_zone $binary_remote_addr zone=one:10m rate=10r/s; limit_req zone=one burst=20 nodelay; limit_conn_zone $binary_remote_addr zone=addr:10m; limit_conn addr 10。
- Kernel调优:sysctl -w net.ipv4.tcp_syncookies=1; sysctl -w net.netfilter.nf_conntrack_max=262144。将设置写入/etc/sysctl.conf并sysctl -p。
4.
使用ipset + iptables快速拉黑大规模源IP
- 创建ipset并在iptables中应用:ipset create blacklist hash:net family inet hashsize 1024 maxelem 200000。
- 将可疑IP批量加入:ipset add blacklist 1.2.3.0/24。
- iptables规则:iptables -I INPUT -m set --match-set blacklist src -j DROP,并保存iptables规则。
5.
流量整形(tc)做带宽清洗与优先级分配
- 常见策略:把合法业务端口(80/443/22)放在高优先级class,其它流量限流。
- 示例命令:tc qdisc add dev eth0 root handle 1: htb default 30; tc class add dev eth0 parent 1: classid 1:10 htb rate 800mbit ceil 800mbit; tc class add dev eth0 parent 1: classid 1:30 htb rate 100mbit ceil 200mbit。
- 用tc filter基于iprange或端口将攻击流量打入低优先级或丢弃队列。
6.
BGP黑洞与Flowspec向上游下发规则
- 联系IDC或上游运营商:请求BGP黑洞(community或特定AS路径)用于瞬时丢弃到受影响IP的流量。
- Flowspec示例:向上游提交匹配源IP/端口并DROP,适合在ISP端就处理大流量攻击。需提供来源IP、目的IP、协议、端口等。
7.
清洗隧道(GRE/VXLAN)与第三方清洗服务接入
- 与清洗厂商协商:准备好可用于路由的子网(/24),对方会要求把目标IP的流量引导到清洗中心。
- 本地配置示例(GRE):ip tunnel add scrub mode gre remote
local ttl 255; ip link set scrub up; ip route replace /32 dev scrub。
- 清洗后对方会返回“干净流量”到你的出口IP或通过专线返回。
8.
应用层策略:验证码、挑战页、WAF
- 部署WAF(ModSecurity或云WAF),设置针对常见攻击规则集(SQLi、XSS、慢速POST)。
- 遇到突发流量,可用NGINX返回挑战页或JavaScript挑战以区分真实浏览器与爬虫/僵尸网络。
- 在WAF中将频繁触发规则的IP加入临时封禁列表。
9.
SSH/管理口保护与自动封禁
- 改用非标准端口并结合fail2ban:配置/etc/fail2ban/jail.local,定义ssh maxretry=3, bantime=3600 并对超频IP加入ipset。
- 限制管理访问:仅允许管理IP访问,或启用基于VPN的跳板机。
10.
突发流量应急操作步骤(清单式)
- 步骤1:立即开启监控告警并抓包(tcpdump)。
- 步骤2:启用本地速率限制与Nginx限流、开启syncookies。
- 步骤3:把可疑IP加入ipset并丢弃。
- 步骤4:通知上游申请BGP黑洞或Flowspec;同时联系清洗服务建立隧道。
- 步骤5:攻击结束后保留日志与pcap用于事后溯源,并逐步解除临时规则。
11.
事后分析与长期策略优化
- 分析pcap与日志,提取攻击特征(来源网络段、包类型、速率)。
- 更新WAF规则与ipset黑名单,调整告警阈值与自动化脚本。定期演练应急流程并做SOP文档。
12.
问:台湾VPS遇到大流量攻击第一时间该做什么?
答:第一时间启动监控抓包、开启kernel级防护(tcp_syncookies, nf_conntrack扩容)、启用本地限流(nginx limit_req)并把可疑源临时加入ipset,然后立即联系上游/IDC申请BGP黑洞或请求清洗服务。
13.
问:如果上游无法快速响应,如何在本机承受更大压力?
答:可在本机侧通过tc做更严格的htb限速、降低非必要服务带宽、把静态内容迁移到CDN、开启缓存与压缩,同时使用GRE隧道转发到商业清洗点或多点Anycast回源以分散流量。
14.
问:如何评估何时把流量交给第三方清洗?
答:当攻击带宽已超出你与上游可承受阈值(例如链路饱和或业务严重不可用),且本地限流无法恢复业务时,应立即切换到第三方清洗;评估依据包括带宽占用、成功连接率、响应时间和SLA对比。
来源:台湾vps原生ip 高防云主机带宽清洗策略与流量突发处理方案