通过分析日志中IP请求频率、时间分布、请求模式及IP特征可初步判断DDoS攻击:单IP每分钟超50~100次请求、前10名IP占总请求60%以上、脉冲式时间分布、高频404、非常规UA、异常HTTP方法、C段集中或私有地址直连等均为关键指标。

直接看日志里几个关键特征就能初步判断是否遭遇 DDoS 攻击,不需要等服务器彻底卡死。重点不是“有没有大量请求”,而是“这些请求是否违背正常访问逻辑”。
单 IP 请求频率异常高
真实用户极少在 1 分钟内发起上百次请求。攻击者常靠脚本或僵尸机集中打一个目标。
- 用命令快速筛查:
awk '{print $1}' /var/log/nginx/access.log | sort | uniq -c | sort -nr | head -20 - 重点关注每分钟请求数超 50~100 次的 IP(具体阈值需结合业务日常基线)
- 如果前 10 名 IP 的请求量占总日志 60% 以上,高度可疑
请求时间分布极不均匀
正常流量有早晚高峰、平缓回落;DDoS 流量往往在几秒或几十秒内突然冲高,之后又骤降,呈脉冲式。
- 提取每分钟时间戳并统计:
awk '{print substr($4,2,15)}' /var/log/nginx/access.log | sort | uniq -c | sort -nr | head -15 - 若发现某分钟请求数是平时的 10 倍以上,且集中在同一类 URL 或状态码,要立刻查来源
大量无效或可疑请求模式
攻击者常扫路径、试漏洞、发畸形包,这类请求和真实用户行为明显不同。
- 高频 404:
awk '$9 ~ /^404$/ {print $1}' /var/log/nginx/access.log | sort | uniq -c | sort -nr | head -10 - 非常规 User-Agent:含
sqlmap、nmap、masscan、空 UA、纯数字或乱码 UA - 异常请求方法:大量
PUT、DELETE、TRACE,或带恶意 payload 的 GET(如?id=1' union select)
IP 地址呈现批量或伪造特征
不是看“有没有新 IP”,而是看 IP 是否缺乏合理分布规律。
- 大量请求来自 C 段(如 192.168.1.0/24)但无实际业务关联
- IP 地址随机分散、归属地杂乱(可用
geoiplookup辅助验证),却同时高频访问同一资源 - 日志中出现大量私有地址(10.x.x.x、172.16–31.x.x、192.168.x.x)直连公网服务,大概率是伪造源 IP
识别出来只是第一步,后续要配合限流(limit_req)、自动封禁(fail2ban)、WAF 规则或 CDN 回源策略来响应。日志本身不会说“这是攻击”,但它会清楚告诉你“谁在用什么方式、以什么节奏、访问什么内容”——把这三件事对上号,结论就很明显了。


















