网站被攻击时,攻击日志就是你最好的“破案现场”,看懂它,你才能知道对方怎么进来的、用了什么手段,再决定下一步是封IP还是上防护。很多站长一发现网站异常就急着买高防、换服务器,结果钱花了,攻击还是没停,日志里早就写好了答案,只是你没看。
攻击日志分析教程:从入门到能定位攻击源
攻击日志不是给你用来事后后悔的,而是让你在攻击发生时就能快速反应的,所谓攻击日志,说白了就是服务器、网站程序、防火墙等组件记录下来的“访问流水账”,每一次请求从哪个IP来、访问了哪个路径、提交了什么数据、服务器回了什么状态码,全都写在里面。
日志文件都在哪儿
不同环境,日志存放位置不一样,但路径相对固定:
- Nginx日志:/var/log/nginx/access.log 和 error.log
- Apache日志:/var/log/apache2/access.log 或 /var/log/httpd/access.log
- 系统安全日志(Linux):/var/log/secure 或 /var/log/auth.log
- 防火墙日志(如iptables/ufw):/var/log/messages 或 /var/log/firewalld
- 云服务商WAF控制台:通常有单独的日志查询页面
如果你用的是宝塔面板或某云服务器控制台,直接在后台找到“日志”按钮就行,不用SSH敲命令也能看。
一条日志到底说了什么
拿最常见的Nginx访问日志举例,一行记录大概长这样:
168.1.100 - - [01/Apr/2026:03:22:17 +0800] "GET /wp-login.php HTTP/1.1" 200 5321 "http://yourdomain.com/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64)"
拆开来看:
- 168.1.100:来源IP,攻击者的“门牌号”
- [01/Apr/2026:03:22:17]:攻击发生的时间,精确到秒
- “GET /wp-login.php”:攻击者请求的具体文件或路径
- 200:状态码,200代表请求成功,403代表被拒绝,404代表文件不存在
- Mozilla/5.0...:用户代理,也就是攻击者用的什么工具或浏览器
看起来复杂,但你只需要关注四个要素:时间、IP、请求路径、状态码,把这四个要素串起来,就能还原攻击现场。
网站被攻击怎么查原因?三步定位攻击源头
如果你发现网站变卡、CPU飙升、后台出现大量陌生IP,别急着重启服务器,按下面三步走,就能从日志里找出原因。
第一步:按时间圈定攻击窗口
先在日志里找到网站开始卡顿的那个时间点,比如你是下午三点发现问题,那就把日志范围缩小到下午两点半到三点,用命令直接过滤:

grep "02/Apr/2026:14:3" /var/log/nginx/access.log
这条命令会列出该时间段内所有访问记录,如果看到来自同一个IP的几百条请求,或者大量不存在的路径、重复的登录尝试,攻击基本就实锤了。
第二步:按IP聚合统计攻击来源
单个IP反复刷同一个页面,要么是爬虫,要么是CC攻击,用awk命令统计访问次数最多的前十个IP:
awk '{print $1}' /var/log/nginx/access.log | sort | uniq -c | sort -rn | head -10
结果里排前面的IP,就是重点怀疑对象,把这些IP拿到搜索引擎或者威胁情报平台查一下,比如查微步在线或奇安信的信誉库,如果是已知恶意IP,直接封掉。
第三步:看请求特征判断攻击类型
攻击类型不同,日志里的痕迹也不同,以下是常见攻击在日志里的“指纹”:
| 攻击类型 | 日志特征 | 关键线索 |
|---|---|---|
| 暴力破解 | 同一IP反复请求wp-login.php、ssh登录等 | 短时间内大量POST请求,返回200或302 |
| CC攻击 | 同一IP或IP段高频GET首页或接口 | 每秒几十到几百次请求,UA常见为curl、python |
| 爬虫采集 | 请求路径有规律,如访问大量文章详情页 | 间隔均匀,无浏览器UA,或UA伪装成百度蜘蛛 |
| SQL注入 | 在请求路径或参数里包含union、select、sleep等关键词 | 返回500或大量异常数据 |
| 扫描探测 | 请求不存在的路径,如/.env、/phpmyadmin、/admin | 大量404状态码,路径是常见的字典文件名 |
DDoS攻击日志怎么看?别把流量型攻击当成入侵
很多站长分不清DDoS和CC攻击,DDoS是流量洪水,日志里往往看不到具体的恶意请求,因为攻击目标是带宽和硬件资源,但CC攻击则不一样,它属于应用层攻击,日志里能看到清晰的“刷请求”行为。
CC攻击的日志识别法
如果你在日志里看到这样的规律:
- 同一个IP在几秒内请求了同一个接口或页面几百次
- 请求的Referer字段要么为空,要么是同一个地址
- 返回的状态码大多是200,因为攻击者要的就是服务器消耗资源去处理请求
- 用户代理很单一,比如全是“python-requests/2.31.0”或“Mozilla/4.0”
出现以上情况,基本可以断定是CC攻击,处理办法很简单:在防火墙里限制单个IP的请求速率,比如每分钟最多60次,超出直接封禁。

真正的DDoS怎么从日志看
DDoS攻击发生时,你的Nginx日志可能反而“安静”了,因为流量在到达Web服务之前就已经把网络带宽打满了,这时候该看的是流量监控图,而不是访问日志,如果云服务商的流量面板显示入口带宽达到了几十Gbps,那大概率是DDoS,此时单纯看日志已经没用,得靠高防IP或CDN清洗。
服务器安全日志分析工具:不想敲命令可以这样用
如果你不懂Linux命令,或者日志文件太大无从下手,直接使用现成的分析工具也行,这些工具本质上就是帮你做日志聚合并高亮可疑内容。
开源免费工具
- GoAccess:适合分析Nginx/Apache访问日志,终端下直接跑
goaccess -f /var/log/nginx/access.log就能生成交互式仪表盘,可以看到IP排名、状态码分布、最热路径,一眼就能发现异常。 - ELK套件(Elasticsearch + Logstash + Kibana):大佬级方案,适合日志量大的服务器,把日志导入Elasticsearch,再用Kibana画图表,不过配置成本较高,新手建议先别碰。
- Fail2ban:严格说不是分析工具,而是自动封禁工具,它会读取系统日志,当发现某个IP在短时间内连续登录失败超过阈值,就直接拉黑,很多Linux发行版自带,安装后简单配置就能用。
商业平台和云服务商自带功能
- 简米云安骑士、酷番云主机安全:云服务器控制台里都有“日志审计”或“入侵检测”模块,会自动帮你把异常登录、木马操作、恶意请求标出来。
- 长亭雷池、安全狗等WAF产品:自带日志看板,直接展示攻击来源和攻击类型,还能生成报表。
人工重点排查的三类日志内容
- 系统安全日志(/var/log/secure)里的
Failed password记录,如果同一IP出现超过10次,说明有人在尝试ssh暴力破解。 - Web错误日志(error.log)里出现的
File not found加上异常路径,比如/etc/passwd、/webshell.php,说明被人扫过敏感文件。 - 访问日志里的超大POST请求,比如单次请求体超过10MB,很可能是在尝试上传木马。
看懂攻击日志后,防护才不花冤枉钱
很多站长一遇到攻击就去买高防服务器,问了一圈网站攻击防护价格,从几百块到几万块都有,结果买完还是被打,原因就在于没搞清楚攻击类型,看完日志你就知道,不同的攻击,对应的防护手段和费用完全不同。

低成本的日志级防护方案
- 如果是扫描探测或轻量CC攻击,直接在nginx配置里加限制,比如
limit_req_zone,或者用Fail2ban自动封IP,几十块钱就能搞定。 - 如果是暴力破解,改端口、限制登录IP、开启SSH密钥登录,这几步操作免费,但能挡住九成脚本攻击。
- 如果是采集爬虫,用robots.txt加上UA黑名单,或者在CDN层配置访问频率限制,也花不了多少钱。
需要花钱的防护场景
- 对付大流量DDoS,必须用高防IP或高防CDN,价格通常按防御峰值计算,比如100Gbps防护可能是每月几百到几千元,具体看云厂商报价。
- 对付混合型攻击(DDoS+CC+Web入侵),建议上云WAF+高防的组合,行业共识认为,中小企业每月花上一顿饭钱买基础防护,比自己折腾各种脚本划算得多。
这里有个容易踩的坑:有些人看到日志里出现大量国外IP,就想着用防火墙把整个海外段封掉,但很多正常用户也在海外,无脑封禁会误伤,正确做法是按照攻击IP的归属地和频率做动态封禁,比如自动封禁连续30秒内请求超过50次的IP,而不是封整个网段。
Q&A:关于攻击日志的常见疑问
攻击日志需要保存多久?
建议至少保存3个月,攻击可能不是一次性的,有些人打完一次,隔两周换个IP再来,日志越久,越容易通过IP反查和路径比对发现同一团伙的后续动作,如果你准备报案或找云厂商赔偿,日志也是重要的证据链。
攻击日志能帮我们追查到攻击者吗?
能定位到部分攻击者,如果攻击者使用的是未隐藏的服务器IP(很多扫描器和小型攻击脚本不会伪造IP),日志里的IP就是真实IP,顺着IP查归属地和运营商信息,可以找到IDC机房,再配合报案,有机会查到购买者身份,但如果是大厂DDoS攻击,攻击者会利用肉鸡和反射放大,日志里只有肉鸡的IP,很难溯源到真凶。
日志显示正常,但网站还是很慢,怎么办?
那就说明问题不在应用层攻击,可能是服务器本身的性能瓶颈,比如内存不足、数据库慢查询、带宽被大流量占满但流量并不是来自Web请求(可能被DDoS打在网络层),这种情况要同时检查系统负载(top命令)、带宽监控图、数据库慢查询日志,而不是死磕访问日志。
最后再说一句:攻击日志不是安全工程师的专属工具,它就是你网站的“行车记录仪”,下次网站再出问题,先花十分钟把日志翻出来看看,比急着掏钱买防护有用的多。