首页主机资讯Ubuntu Tomcat日志中如何识别异常请求

Ubuntu Tomcat日志中如何识别异常请求

时间2025-11-14 15:23:03发布访客分类主机资讯浏览271
导读:Ubuntu Tomcat日志中识别异常请求的实用方法 一 日志位置与关键文件 常见日志目录:/var/log/tomcat9/、/opt/tomcat/logs/ 或 $CATALINA_HOME/logs/。 关键文件与作用: ca...

Ubuntu Tomcat日志中识别异常请求的实用方法

一 日志位置与关键文件

  • 常见日志目录:/var/log/tomcat9//opt/tomcat/logs/$CATALINA_HOME/logs/
  • 关键文件与作用:
    • catalina.out:标准输出与错误日志,包含启动、运行、异常堆栈等。
    • localhost..log:应用抛出的未捕获异常、业务错误。
    • host-manager..log / manager..log:管理应用的访问与操作日志。
    • access_log / localhost_access_log..txt:访问日志,记录客户端IP、时间、方法、URL、状态码、耗时等,用于发现异常访问模式。
  • 建议先确认实际目录与文件名,再进行分析与告警配置。

二 命令行快速识别异常

  • 实时观察与关键字过滤
    • 实时查看:tail -f /var/log/tomcat9/catalina.out
    • 错误与异常堆栈:grep -i "ERROR\|Exception" /var/log/tomcat9/catalina.out
  • 访问日志定位异常请求
    • 高频 404:疑似扫描或失效链接 awk '$9==404 { print $1,$7,$9} ' access_log | sort | uniq -c | sort -nr | head
    • 可疑方法:awk '$6 ~ /OPTIONS|PUT|DELETE|TRACE/ { print $1,$6,$7} ' access_log | sort | uniq -c | sort -nr
    • 短时爆发:awk '{ print $4} ' access_log | cut -d: -f2-3 | sort | uniq -c | sort -nr | head(按分钟统计请求数)
  • 统计与去重
    • Top 异常URL:grep -i "ERROR" catalina.out | awk '{ print $NF} ' | sort | uniq -c | sort -nr | head
  • 时间段定位
    • 按时间窗口查看:sed -n '/2025-11-14 10:00:00/,/2025-11-14 10:05:00/p' catalina.out
  • 日志级别与输出
    • 若异常信息不足,可在 conf/logging.properties 中适当调高相关 logger 级别(如 org.apache.catalinaorg.apache.coyote)以获取更详细输出。

三 异常模式与日志特征对照

异常类型 典型特征 优先查看 快速命令示例
客户端请求错误(400/414/431 等) catalina.out 出现 “Error parsing HTTP request header”“Invalid character in request target” 等;access_log 状态码为 400,偶见 “GET null null” catalina.out、access_log grep -i "Error parsing HTTP request header" catalina.out;`awk ‘$9==400 { print $0} ’ access_log
资源不存在或被扫描 access_log 大量 404,伴随非常规路径(如 /wp-admin, /.env access_log `awk ‘$9==404 { print $1,$7} ’ access_log
可疑或危险方法 access_log 出现 OPTIONS/PUT/DELETE/TRACE 等非业务常用方法 access_log `awk '$6 ~ /OPTIONS
拒绝访问与权限问题 catalina.out 出现 AccessDeniedException 或应用层权限异常;access_log 状态码 403 catalina.out、access_log grep -i "AccessDenied" catalina.outawk '$9==403 { print $1,$7} ' access_log
服务端处理异常 catalina.out 出现未捕获 Exception、数据库/连接池异常;localhost..log 堆栈丰富 catalina.out、localhost..log grep -i "Exception" catalina.out
请求耗时异常 access_log 响应时间字段异常偏高(需启用耗时记录) access_log `awk ‘{ print $NF} ’ access_log
说明:400 类错误常见于请求行/头包含非法字符(不符合 RFC 7230/3986),例如 URL 含未编码的 { } 等,Tomcat 会记录解析错误;此类问题在 catalina.out 有明显特征。

四 进阶分析与自动化

  • 集中化与可视化
    • 使用 ELK(Elasticsearch/Logstash/Kibana)Graylog 收集 catalina.out、localhost、access_log,通过 Grok 解析字段(如时间戳、日志级别、线程、类、消息、HTTP 方法、URL、状态码、耗时、UA、IP),在 Kibana 建立可视化与阈值告警。
  • 安全加固与降噪
    • web.xml 禁用不必要方法(如 OPTIONS/PUT/DELETE/TRACE),减少攻击面;对异常 IP/UA 实施黑名单与速率限制;持续更新 Tomcat 与相关组件,降低被已知漏洞利用的风险。

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: Ubuntu Tomcat日志中如何识别异常请求
本文地址: https://pptw.com/jishu/748084.html
如何通过Ubuntu Tomcat日志优化系统配置 Debian SFTP如何提高安全性

游客 回复需填写必要信息