温馨提示×

Nginx日志中的安全信息怎么看

小樊
43
2025-12-04 14:53:39
栏目: 编程语言

Nginx日志中的安全信息查看与排查

一 日志类型与存放位置

  • 访问日志 access.log:记录每一次客户端请求的时间、客户端IP、请求行、状态码、响应大小、Referer、User-Agent、X-Forwarded-For等,是发现扫描、注入、暴力尝试与异常流量的主要来源。常见路径为**/var/log/nginx/access.log**,也可在配置中自定义。
  • 错误日志 error.log:记录错误级别、进程/线程ID、客户端IP、出错文件/行号、上游连接失败等,是发现探测行为、配置问题、异常上传与后端异常的关键线索。常见路径为**/var/log/nginx/error.log**。
  • 建议在生产环境将错误日志级别设为warn,以兼顾可观测性与性能。

二 快速定位安全事件的命令行方法

  • 实时查看新增可疑请求:tail -f /var/log/nginx/access.log | egrep -i ‘union.*select|sleep(|../|etc/passwd|cmd=|whoami|id=|alert(|script>|onerror=’
  • Top N 来源与异常路径:
    • 统计前10个来源IP:awk ‘{print $1}’ access.log | sort | uniq -c | sort -nr | head
    • 统计异常路径(如敏感文件、管理入口):awk ‘{print $7}’ access.log | sort | uniq -c | sort -nr | head
  • 可疑 UA 与扫描特征:awk -F’"’ ‘{print $6}’ access.log | sort | uniq -c | sort -nr | head
  • 异常响应码与响应体大小(结合业务判断):awk ‘{print $9,$10}’ access.log | sort | uniq -c | sort -nr | head
  • 结合 Referer 判断来源站点与反射型攻击:awk -F’"’ ‘{print $4}’ access.log | sort | uniq -c | sort -nr | head
  • 错误日志中的探测与攻击迹象:tail -f /var/log/nginx/error.log | egrep -i ‘invalid method|open.*(wp-admin|phpmyadmin|.env)|index forbidden|too large body|no live upstreams’
  • 若经过反向代理/CDN,优先使用X-Forwarded-For作为真实来源:awk -F’"’ ‘{print $NF}’ access.log | sort | uniq -c | sort -nr | head

三 常见攻击在日志中的特征与处置要点

攻击类型 主要特征(access.log) 错误日志线索 处置要点
目录遍历/敏感文件探测 大量对**/.env、/wp-admin、/phpmyadmin、/shell.php、/etc/passwd等路径的访问,伴随404/403** open() “…/wp-admin/index.php” failed (2: No such file or directory);directory index forbidden 关闭目录浏览,限制敏感路径访问,仅允许白名单
SQL注入/命令注入 请求参数含**union select、sleep(、’ or 1=1、cmd=、whoami、id=**等 可能触发500或异常错误 启用WAF/输入校验,限制请求体与方法,必要时封禁来源
XSS/反射型 参数含**