1.
概览与原则
1) 目标:实时发现异常流量、保存可查证日志、自动化清洗恶意请求并保留取证数据。2) 原则:监控+告警+自动化响应+可追溯日志链。3) 前提:服务器位于香港高防环境,网络入口可能由厂商做流量清洗,运维侧侧重主机、应用和日志清洗。
2.
监控架构建议(核心指标)
1) 必监指标:流量(pps/bps)、tcp/udp连接数、conntrack、CPU、内存、磁盘IO、nginx upstream latency、http 5xx/4xx。2) 拓扑:Node Exporter -> Prometheus -> Alertmanager -> Pager/DingTalk/Webhook。
3.
Prometheus+Node Exporter快速部署
1) 安装节点导出:apt/yum 安装 node_exporter,systemd 启动。命令示例:wget && tar && useradd && systemctl。2) Prometheus 配置示例:在prometheus.yml中加入targets: ["server-ip:9100"]。3) 建议:为nginx安装nginx-vts或stub_status并用textfile exporter导出自定义指标。
4.
告警规则与Alertmanager集成
1) 告警示例:高流量阈值、短时5xx突增、conntrack接近上限。2) prometheus recording rule 示例:用rate()计算请求速率。3) Alertmanager配置:routes -> webhook,webhook触发自动化脚本(见后文)。
5.
网络层流量采集(NetFlow/sFlow/tooling)
1) 部署softflowd/pmacct收集五元组并导出到nfdump或Elasticsearch。2) 命令示例:apt install softflowd; softflowd -i eth0 -n collector:2055。3) 作用:在DDoS事件中快速定位黑流源AS或IP段。
6.
主机层防护与系统调优
1) sysctl 推荐项:net.netfilter.ip_conntrack_max、net.core.somaxconn、tcp_max_syn_backlog。示例:echo "net.netfilter.nf_conntrack_max=2000000" >> /etc/sysctl.conf && sysctl -p。2) conntrack 参数:监控 /proc/sys/net/netfilter/nf_conntrack_count。
7.
日志采集:Filebeat + Logstash/Elasticsearch(简要配置)
1) Filebeat prospector 示例(filebeat.yml): filebeat.inputs: - type: log paths: ["/var/log/nginx/*.log"]。2) Logstash 过滤:grok解析nginx access,mutate移除敏感字段。3) Elasticsearch 保存:配置索引模板和ILM。
8.
日志轮转与持久化策略
1) logrotate 示例:/etc/logrotate.d/nginx 设置 daily/rotate 14,compress,postrotate 重启 nginx。2) 离站备份:将轮转日志同步到对象存储(S3或兼容),命令示例:aws s3 cp /var/log/archive s3://bucket/ --recursive。
9.
日志清洗与脱敏实操步骤
1) 使用Logstash或Filebeat processors做实时脱敏:mutate->gsub 替换邮箱、身份证号正则。2) 批量脚本清洗:awk/sed 示例:sed -E 's/[0-9]{15,18}/[REDACTED_ID]/g' access.log > clean.log。3) 保留原始日志至只读存档以便取证。
10.
自动化封禁与黑名单同步
1) 使用fail2ban结合自定义filter检测高频请求并执行iptables封禁。2) 当Prometheus告警触发时,Alertmanager webhook调用封禁脚本;脚本可调用高防厂商API下发黑名单或直接在主机上iptables -I INPUT命令封锁IP。3) 示例封禁脚本:curl -X POST https://api.provider/ban -d '{"ip":"1.2.3.4"}'。
11.
DDoS到清洗厂商协同操作要点
1) 预置厂商白名单/控制台脚本,掌握API(ip add/remove, traffic redirect)。2) 事件流程:识别->通知厂商->下发清洗->回溯验证。3) 保留清洗期间的流量快照和厂商下发的动作日志。
12.
取证与流量抓取实操命令
1) tcpdump 循环抓包:tcpdump -i eth0 -w /var/pcap/$(date +%s).pcap -C 100 -W 10 'port 80 or port 443'。2) 使用tshark或zeek分析:zeek -r file.pcap。3) 存档:将重要pcap上传至对象存储并生成校验(sha256sum)。
13.
索引生命周期与清理(Elasticsearch ILM)
1) 创建ILM策略示例:hot to warm to delete,hot保持7天,warm 30天,delete 90天。2) curl 创建策略:curl -X PUT "localhost:9200/_ilm/policy/my_policy" -H 'Content-Type: application/json' -d'{...}'。3) 定期使用curator或ILM确保索引按策略回收。
14.
应急演练与自动化恢复脚本
1) 建议每季度进行模拟攻击演练,验证监控阈值与自动化封禁流程。2) 自动化脚本要有回滚:封禁后15分钟如误封自动解封。3) 记录每次演练日志与改进点。
15.
备份与合规注意事项
1) 保证备份日志的加密与访问控制,S3加密与Bucket策略。2) 合规:对用户敏感信息脱敏,并保留最小必要取证数据。3) 定期审计谁能查看原始日志。
16.
问:如何快速判断是不是DDoS而不是业务增长?
答:看5个要点:1) 请求分布是否来自大量不同IP或单一IP;2) 请求模式是否重复(同一User-Agent/URI);3) 请求速率(pps)是否突增;4) 后端响应时间/连接池耗尽;5) NetFlow显示大量短连接或SYN洪峰。结合softflowd和nginx access sample能快速判定。
17.
问:清洗后如何保证日志能用于司法取证?
答:1) 保留原始只读副本并做时间戳与校验(sha256)。2) 记录清洗动作(谁在何时用何规则删除或脱敏)。3) 使用不可篡改的对象存储并保存访问审计记录。
18.
问:自动化封禁误判怎么办?
答:1) 设计二步封禁:先软封(限速、challenge),再硬封(iptables/API)。2) 自动解封策略:封禁带TTL,15-60分钟后自动回滚并记录。3) 在告警中保留人工确认路径,必要时人工撤销并调整规则。
来源:运维要点香港高防不限内容服务器的监控、日志与清洗策略建议