1.
概述:目标与威胁模型
针对多IP
香港站群(多个公网IP托管在香港机房或云上)进行防护。
威胁包括大流量DDoS、扫描刷流量、应用层攻击(HTTP/HTTPS慢速、重复请求)、以及盗链与爬虫。
2.
架构与前置组件清单
建议架构:公网负载均衡(HAProxy/Nginx)→ 多台后端Web节点 → 日志/监控与流量检测节点(Suricata/Zeek)。
准备清单:BGP/流量清洗服务(如提供商)、IP白名单管理、集中日志(ELK)、Prometheus+Grafana。
3.
主机与网络基础硬化步骤
关闭不必要端口:ufw/iptables仅放行80/443/22(或通过跳板)。
SSH安全:禁用root、使用公钥、改非22端口,sshd_config示例:PermitRootLogin no, PasswordAuthentication no。
内核优化:/etc/sysctl.conf增加 net.netfilter.nf_conntrack_max、tcp_syncookies=1、net.ipv4.tcp_max_syn_backlog=4096 并sysctl -p。
4.
网络层阻断:ipset + nftables/iptables 实战
安装ipset并创建表:ipset create blacklist hash:net timeout 3600。
将黑名单写入iptables:iptables -I INPUT -m set --match-set blacklist src -j DROP。
批量加入IP示例:ipset add blacklist 1.2.3.4; ipset save > /etc/ipset.rules,启动脚本在开机加载。
5.
应用层限流与WAF配置(Nginx/HAProxy)
Nginx限流示例:http块中limit_req_zone $binary_remote_addr zone=one:10m rate=10r/s;server中limit_req zone=one burst=20 nodelay。
结合ModSecurity或云WAF:启用常见规则集,阻断高频重复URI与异常User-Agent。
6.
部署Suricata/Zeek进行流量检测
选择一台或多台监测节点,通过镜像端口或SPAN口接收流量。
安装Suricata:apt install suricata;在suricata.yaml设置 af-packet 或 pcap 输入,启用 eve.json 输出到Filebeat。
使用Zeek做会话提取:zeek -i eth0 local.zeek,输出conn.log/http.log供分析。
7.
日志收集与SIEM流水线(ELK/Opensearch)
Filebeat采集Suricata/Zeek日志并发送到Logstash→Elasticsearch→Kibana。
关键字段:源IP、目的IP、URI、user_agent、每分钟请求数。创建Kibana仪表盘用于异常检测。
8.
异常流量识别与阈值设定
定义指标:单IP每分钟请求>1000视为可疑;单位IP并发连接>200;整体流量突增>2x历史90分位。
用Prometheus抓取nginx_exporter与node_exporter指标,设置Alertmanager规则,如 nginx_requests_per_ip >1000 for 1m。
9.
自动化响应与阻断流程
小工具:编写检测脚本,从Elastic/Prometheus拉可疑IP并调用ipset,示例脚本用curl获取API并执行 ipset add blacklist $IP。
Fail2ban集成:配置filter检测nginx日志的异常请求,action调用 ipset 或执行自定义脚本,示例:action = iptables-ipset-proto6[name=HTTP, port=http, protocol=tcp]
10.
BGP FlowSpec 与上游联动(可选)
当攻击流量超出机房能力时,与ISP沟通使用BGP FlowSpec或DDoS清洗。
准备清单:攻击摘要(五元组/黑名单)、PCAP样本、流量时间线,向上游申请黑洞或转发到清洗中心。
11.
取证与备份:pcap采集与日志保留
使用tcpdump按触发条件采集:timeout 300 tcpdump -i eth0 host 1.2.3.4 -w /var/pcap/attack_$(date +%s).pcap -C 100。
保存策略:高风险事件保留30天,常规日志压缩保存90天并上转对象存储。
12.
演练与回滚步骤
定期演练:每季度做一次流量突发演练,验证自动化拉黑、上游联动和回滚。
回滚脚本:提供撤销ipset、恢复iptables规则以及解除上游黑洞的脚本与流程文档。
13.
运维与白名单管理
维护白名单数据库(如内部爬虫、合作方IP),通过自动同步脚本更新ipset白名单。
变更审批:所有拉黑/放行操作需记录工单与SLA,避免误封。
14.
性能与容量预估
监测连通性表(conntrack)与CPU/网卡负载,conntrack_max建议设置为期望并发的2-4倍并随流量增长扩容。
对高并发场景预配速率限制在LB层,避免后端崩溃。
15.
常用命令速查表
ipset list;ipset save > /etc/ipset.rules;iptables -nL -v;suricata -c /etc/suricata/suricata.yaml -i eth0;tcpdump -i eth0 -w file.pcap。
将这些命令写入运维手册并配合监控脚本自动执行。
16.
问:香港多IP站群最常见的攻击类型和优先防护点是什么?
答:首要是大流量DDoS(SYN/UDP/HTTP GET Flood),其次是应用层慢速攻击与大规模爬虫。优先防护点:网络边界限流(ipset+iptables或上游清洗)、LB层限流(nginx/HAProxy)、应用WAF规则与实时流量检测(Suricata/Zeek)。
17.
问:如何快速将检测到的可疑IP自动封禁并确保不会误伤?
答:通过分级策略:先加入短期黑名单(ipset timeout 300s),同时记录与人工复核;在被复核确认后扩大封禁时长并同步到上游或长期黑名单。结合白名单与阈值(例如同IP累计请求量与异常UA并发)可降低误封率。
18.
问:没有高级上游支持时,如何在本地尽量减轻攻击影响?
答:在本地可采取多层防护:1)在LB层严格限流与连接池控制;2)使用ipset快速拉黑热点IP并动态扩大;3)启用缓存/CDN降低回源压力;4)用Suricata/Zeek快速识别模式并触发Fail2ban动作;5)必要时启用iptables SYN cookies、调整conntrack并关闭不必要服务。
来源:安全角度看多ip香港站群服务器 防护策略与异常流量检测实施方案