1.
准备与前置检查
- 检查服务商提供的清洗能力(是否有带宽清洗、BGP/On-prem scrubbers)。
- 在服务器上确认系统与网络工具:apt/yum更新,安装ipset、iptables/nftables、tcpdump、iftop、ngrep、fail2ban。示例:apt-get update && apt-get install ipset iptables-persistent tcpdump -y。
- 建立日志采集路径:/var/log/cleaning/,设置rsyslog或Filebeat统一上报。
2.
流量基线与攻击识别
- 通过tcpdump + tshark抓包一段正常时段,获取baseline(包率、连接数、常见源IP段、协议端口)。示例命令:tcpdump -n -i eth0 -s 0 -w /tmp/normal.pcap 'port 80 or port 443'。
- 建立流量阈值:例如每秒新连接数(SYN/s)、单位时间内单IP连接数、总带宽阈值。用sar/iftop监控并记录峰值作为参考。
3.
设计清洗链路(本地与上游)
- 本地:先用iptables/ipset在内核层面做速率限制与大流量拦截;再用应用层限流(nginx limit_conn/limit_req)。
- 上游:与带宽/清洗服务协商清洗策略(BGP通告、流量阈值、清洗时间窗)。确认转发条件:如达到某个pps或带宽就啟动清洗。
4.
实现黑名单(高效存储与匹配)
- 使用ipset存储大量IP网段:ipset create blacklist hash:net family inet hashsize 4096 maxelem 2000000。
- 将ipset挂到iptables:iptables -I INPUT -m set --match-set blacklist src -j DROP。
- 批量导入:ipset restore <
5.
实现白名单(优先级与安全)
- 为重要客户/管理IP建立白名单ipset:ipset create whitelist hash:net。
- 在iptables规则链中把白名单放在黑名单判断之前:iptables -I INPUT 1 -m set --match-set whitelist src -j ACCEPT。
- 白名单管理:采用双重验证(运维账号+2FA),把白名单更改操作记录到审计日志中。
6.
动态黑名单自动化策略
- 日志分析:用fail2ban或自定义脚本解析/var/log/nginx/access.log,识别异常请求模式(短时间内大量404、短连接率高)。
- 自动拉黑示例:当一IP在1分钟内发起 >1000 次连接,脚本调用ipset add blacklist 并写入持久化文件,同时通知运维。示例脚本(伪):if conn_count(ip)>1000 then ipset add blacklist ip && logger。
- 定期清理:设置cron每天清除临时黑名单项超过N天:ipset -L -o save | awk ... | xargs ipset del。
7.
阈值与策略示例(SYN/UDP/TCP)
- SYN洪水:启用SYN cookies sysctl -w net.ipv4.tcp_syncookies=1,并用iptables限制新连接速率:iptables -A INPUT -p tcp --syn -m limit --limit 50/s --limit-burst 200 -j ACCEPT ; 其余DROP。
- UDP放大/反射:对非常见UDP端口直接DROP或限速;iptables -A INPUT -p udp --dport 53 -m conntrack --ctstate NEW -m limit --limit 500/s -j ACCEPT。
- 应用层限流:nginx limit_req_zone $binary_remote_addr zone=req:10m rate=10r/s。
8.
测试与演练
- 在非生产时段,用hping3模拟攻击流量测试规则:hping3 -S -p 80 --flood <目标IP>。观察内核负载、连接表和清洗反应。
- 逐步放大攻击规模,记录触发阈值,调整规则避免误伤。
9.
维护、监控与报警
- 监控指标:pps、bps、新连接/s、连接数TOP N IP、iptables drop计数、ipset大小。使用Prometheus+Grafana采集并设置阈值报警。
- 操作流程:一旦触发报警,先确认白名单误判,触发上游清洗(如BGP转发),并在清洗期间持续收集证据(pcap、日志)。
10.
合规与日志保留
- 保存被拉黑IP的时间、证据、告警记录以便审计(至少保留30天)。
- 对外提供被误伤申诉通道,快速排查并恢复白名单。
11.
问:如何避免白名单被滥用从而造成风险?
答:白名单变更要走审批流程和双人签署,变更记录写入审计日志;只放可信的小网段而非全网段;对白名单流量仍做速率/行为监测,发现异常则临时降权或移除。
12.
问:ipset与nftables哪个更适合高防场景?
答:ipset配合iptables在很多老系统上稳定且生态成熟,适合大量条目的快速匹配;nftables在新内核上性能更好且规则更灵活,推荐新部署优先考虑nft+sets。
13.
问:当遭遇大流量攻击时先本地清洗还是请求上游清洗?
答:先本地限速和阻断已知恶意IP,快速保护关键服务;若带宽接近承载上限或攻击持续扩大,立即触发与带宽/清洗商的上游清洗(BGP或流量转发),以免链路饱和影响到整机房。
来源:如何为香港高防独立服务器配置高效的清洗策略与黑白名单