centos

CentOS Tomcat日志中如何识别异常流量

小樊
37
2025-10-17 17:51:59
栏目: 智能运维

一、明确Tomcat日志文件位置

CentOS系统中,Tomcat日志默认存储在$CATALINA_HOME/logs目录下,主要包括以下几类关键日志:

二、访问日志中的异常流量识别要点

访问日志是识别异常流量的核心来源,需重点监控以下指标:

  1. 高频错误状态码

    • 大量404错误:短时间内同一IP或路径出现大量404(未找到)状态码,可能是扫描工具(如Nmap)探测服务器路径或文件;
    • 大量403错误:频繁的403(禁止访问)状态码,可能是攻击者尝试访问受保护资源(如/admin目录);
    • 大量5xx错误(如500内部服务器错误、503服务不可用):可能是恶意请求导致服务器崩溃或资源耗尽(如SQL注入、命令执行)。
  2. 异常请求频率

    • 单位时间内同一IP地址的请求数激增(如1分钟内同一IP发起100+次请求),远超正常用户访问频率,可能是DDoS攻击或爬虫滥用;
    • 短时间内大量并发请求(如线程池满负荷),可通过netstat -antp | grep java查看Tomcat连接数是否异常。
  3. 可疑IP与请求来源

    • 来自高风险地区的IP(如境外IP、已知恶意IP段),可通过whois命令查询IP归属地;
    • 同一IP短时间内访问多个不存在的路径(如/wp-admin.php/phpmyadmin),可能是自动化攻击工具的行为。
  4. 异常请求参数与方法

    • 请求参数包含特殊字符(如<script>union select1=1)、编码内容(如%3Cscript%3E解码为<script>PHNjcmlwdD4=解码为<script>)或超长字符串(如超过1000字符的参数),可能是SQL注入、XSS攻击或命令执行;
    • 使用不常见的HTTP方法(如PUT、DELETE、TRACE、MOVE),这些方法默认情况下Tomcat可能未启用,异常使用可能是攻击试探。

三、错误日志中的异常流量识别要点

catalina.out(或logs/catalina.<日期>.log)中的错误信息能直接反映系统异常,需重点关注:

  1. 内存问题
    出现OutOfMemoryError: Java heap space(堆内存溢出)、OutOfMemoryError: Metaspace(元空间溢出)等错误,可能是恶意请求导致内存耗尽(如大量上传文件、循环递归调用)。

  2. 线程问题
    出现java.lang.OutOfMemoryError: unable to create new native thread(无法创建新线程)或Deadlock detected(死锁),可能是线程池被大量请求占满(如DDoS攻击)。

  3. 安全异常
    出现Access denied for user(数据库访问被拒绝)、ServletException: Attempt to access unauthorized resource(试图访问未授权资源)、Invalid session ID(无效会话ID)等错误,可能是攻击者尝试破解密码、越权访问或伪造会话。

四、使用工具辅助识别异常流量

  1. 命令行工具

    • grep:过滤关键信息(如grep "404" access_log.*.txt查看所有404错误;grep "OutOfMemoryError" catalina.out查看内存溢出日志);
    • awk:统计请求频率(如awk '{print $1}' access_log.*.txt | sort | uniq -c | sort -nr统计每个IP的请求数,排序后查看高频IP);
    • sed:提取关键字段(如sed -n 's/.*\[\(.*\)\].*\(\/.*\).*/\1 \2/p' access_log.*.txt提取时间与URL)。
  2. 日志分析工具

    • ELK Stack(Elasticsearch+Logstash+Kibana):实现日志的集中存储、实时分析与可视化,可通过Kibana dashboard展示异常流量趋势(如404错误占比、高频IP分布);
    • Splunk:支持日志搜索、告警与报表生成,可设置规则(如“1分钟内同一IP请求超过100次”)自动触发报警;
    • GoAccess:轻量级日志分析工具,可快速生成访问日志报告(如请求方法分布、状态码占比)。

五、结合系统层面验证异常流量

  1. 监控系统资源
    使用tophtop查看CPU使用率(如Tomcat进程占用CPU超过80%)、free -m查看内存使用情况(如剩余内存不足100MB)、iftop查看网络带宽(如流入流量突然激增),确认是否因异常流量导致资源瓶颈。

  2. 检查网络连接
    使用netstat -antp | grep java查看Tomcat的连接数(如ESTABLISHED连接数超过1000)、ss -s查看socket统计信息(如总连接数异常),判断是否遭受DDoS攻击。

0
看了该问题的人还看了