发布于2026-07-14 阅读(0)
扫一扫,手机访问
Nginx日志是Web服务器忠实的“日记本”,每一行都记录着谁、什么时候、干了什么。但别小看这些密密麻麻的文字——它们不仅能帮你排查故障,更是揪出恶意访问的第一手证据。下面这几个方法,算得上是日志分析的“老把戏”了,但真正用熟的人并不多。

看访问频率:谁在“狂按F5”?
如果某个IP在短时间内疯狂请求,基本就是有问题的。比如扫描器、CC攻击或者爬虫在刷数据。怎么查?用awk和grep组合一下,就能把过去一小时内访问超过10次的IP揪出来:
awk '{print $1}' access.log | grep -E "^(..../..../..../..../..../..../..../..../..../..../..../..../..../..../..../..../..../..../..../..../..../..../..../..../..../..../..../..../..../..../..../..../..../..../..../..../..../..../..../..../..../..../..../..../..../..../..../..../..../..../..../..../..../..../..../..../..../..../..../..../..../..../..../..../..../..../..../..../..../..../..../..../..../..../..../..../..../..../../)" | cut -d: -f1 | sort | uniq -c | sort -nr | head -n 10检查请求方法:别让非主流方法钻空子
正常的GET、POST大家都熟悉,但像TRACE、TRACK、CONNECT这类方法,普通用户几乎不会用。如果有人拿这些来探路,十有八九在搞事情。用一行grep就能过滤:
grep -E "^(TRACE|TRACK|CONNECT)" access.log分析请求URI:谁在翻你家“保险柜”?
恶意访问者最喜欢试探敏感文件和路径,比如/etc/passwd、/wp-config.php等等。这些请求本身就说明来者不善:
grep -E "/(etc/passwd|etc/shadow|wp-config.php)" access.log看HTTP状态码:错误码也能泄密
404不一定是坏事,但如果某个IP产生大量404,很可能是在瞎撞路径;500则可能是攻击导致服务异常。用awk统计一下状态码分布:
awk '{print $9}' access.log | grep -E " 404 | 500 "分析User-Agent:扒掉伪装者的皮
很多扫描器、爬虫会故意伪装UA,但那些包含bot、spider、crawl、scan等关键字的,多半不是正经用户。用awk抓取第6个字段(UA),然后过滤:
awk '{print $6}' access.log | grep -E "bot|spider|crawl|scan"检查Referer:伪造来源的猫腻
盗链、爬虫常常会伪造Referer来绕过防盗链。如果你有白名单域名,可以直接比对——无效的Referer一眼就能看出来:
awk '{print $7}' access.log | grep -E "^(http|https)://(www.)?example.com"以上六招,基本覆盖了常见的恶意访问识别场景。发现线索后,该封IP封IP,该限频限频。当然,日志分析不是一次性的事——养成定期查看的习惯,才能让那些暗处的小动作无处遁形。
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
正版软件
正版软件
正版软件
正版软件
正版软件
1
2
3
7
8