web学习笔记编程技术学习与分享

常见扫描器特征与日志分析

2026 年 07 月 02 日约 3 分钟阅读 网络与安全

公网上的每个站点每天都在被扫。看懂访问日志里的攻击特征,是安全运维的基本功——多数入侵在得手前都有可识别的前奏。

常见特征清单

目录与敏感文件探测:

GET /.env
GET /.git/config
GET /admin/login.php
GET /phpmyadmin/
GET /wp-login.php

已知漏洞利用探测(特定 URL 或超长 UA):

GET /index.php?s=/Index/\x5Cthink...
POST /api/jsonws/invoke
UA: sqlmap/1.7  /  Nikto  /  masscan

爆破:同一 IP 对登录接口高频 POST,失败状态码(401/403/200+错误码)密集重复。

Webshell 探测与残留:

GET /uploads/shell.php        # 上传目录里出现 php 请求
POST /xx.php 密码参数特征      # 菜刀/蚁剑连接

巡检脚本的最小实现

# 昨日 TOP 请求路径
awk -F'"' '{print $2}' access.log | awk '{print $2}' | sort | uniq -c | sort -rn | head -20

# 失败登录 TOP IP(结合应用日志)
grep 'login' app.log | grep -c 'failed' | sort -rn | head

# 上传目录的脚本类请求(正常应为 0)
grep -E 'uploads/.*\.(php|phtml|asp)' access.log

从日志到动作

发现 动作
.env/.git 探测 确认文件不可访问(403/404),无需恐慌,属常态噪音
登录高频失败 IP 临时封禁 + 启用账号锁定
上传目录出现脚本请求 立即检查该目录文件,可疑即隔离,查上传校验逻辑
sqlmap UA 检查对应接口的参数化情况,WAF 拦截

关键是把巡检做成例行:每天或每周一条 cron 汇总异常计数发到通知群,比事后翻几万行日志有效得多。

日志本身的卫生

  • 访问日志保留 30-90 天,安全事件需要回溯;
  • 日志里别记录密码、完整令牌——日志库的访问控制通常比数据库松;
  • 多机部署时日志集中(rsyslog/文件同步),否则攻击者打一台、删一台的日志,证据链就断了。

一个心态提醒:扫描本身不可怕,可怕的是扫描到的弱点真实存在。日志巡检的价值不是「看见攻击者」,而是用攻击者的视角,提前找到自己的疏漏。

日志安全运维