怎样排查 Apache 错误日志中的非法路径访问尝试

作者:袖梨 2026-07-14
直接看错误日志里反复出现的可疑请求,重点抓路径异常、状态码集中、来源IP固定三类线索;Debian/Ubuntu默认访问日志在/var/log/apache2/access.log,需关注客户端IP、请求路径、状态码及User-Agent字段,结合grep、awk等命令快速筛选/etc/passwd、404/500、admin等恶意特征,并交叉验证error.log与实际业务来源。

直接看错误日志里反复出现的可疑请求,重点抓路径异常、状态码集中、来源IP固定这三类线索。

定位日志文件和关键字段

Debian/Ubuntu 系统默认日志在 /var/log/apache2/access.log,CentOS/RHEL 在 /var/log/httpd/access_log。打开后关注每行的几个核心字段:

  • 客户端IP:看是否同一IP高频出现
  • 请求方法与路径:如 GET /etc/passwd HTTP/1.1POST /wp-admin/admin-ajax.php?action=xxx
  • HTTP状态码:大量404(扫描常见)、403(试探权限)、500(触发漏洞)都值得警惕
  • User-Agent:含 sqlmap、nikto、dirbuster、python-requests 等字样,基本可判定为自动化工具

识别典型非法路径模式

以下路径出现在访问日志中,大概率属于恶意探测或攻击尝试:

  • 系统敏感文件:/etc/passwd/proc/self/environ/windows/win.ini
  • 后台管理路径:/admin//phpmyadmin//wp-login.php/manager/html
  • 常见漏洞入口:/index.php?file=../../etc/passwd/api/v1/user?id=1' OR '1'='1/static/<script>alert(1)</script>.js
  • 目录遍历试探:/..%2f..%2f..%2fetc%2fshadow/images/../../../../etc/

快速筛选与验证方法

不用逐行翻,用命令高效提取特征:

  • 查所有含 etc/passwd 的请求:grep -i "etc/passwd" /var/log/apache2/access.log
  • 统计访问最多的10个IP:awk '{print $1}' /var/log/apache2/access.log | sort | uniq -c | sort -nr | head -10
  • 找连续404且路径含 adminbackup 的记录:awk '$9==404 && tolower($7) ~ /(admin|backup|config|db)/ {print}' /var/log/apache2/access.log
  • 配合时间范围(如最近1小时):journalctl -u apache2 --since "1 hour ago" | grep "404|etc"

确认是否真实威胁并初步响应

发现可疑行为后,别急着封IP,先交叉验证:

  • 对照 error.log 看是否有对应报错(如PHP Warning、open_basedir restriction、mod_security拦截记录)
  • 检查该IP是否真有业务访问——比如是CDN节点、监控探针或内部运维工具,避免误杀
  • 若确认为扫描,可用 fail2ban 自动封禁,或临时加防火墙规则:iptables -A INPUT -s 192.168.1.100 -j DROP
  • 对反复试探的路径,可在 Apache 配置中用 Redirect 403RewriteRule 主动拦截,减少日志噪音

相关文章

精彩推荐