CentOS Tomcat日志中如何识别异常流量
一、明确Tomcat日志文件位置
CentOS系统中,Tomcat日志默认存储在$CATALINA_HOME/logs
目录下,主要包括以下几类关键日志:
- catalina.out:主日志文件,记录服务器启动、停止及运行时的详细信息(如错误、警告);
- localhost_access_log.*.txt:访问日志(默认路径为
logs/localhost_access_log.< 日期> .txt
),记录所有HTTP请求的详细信息(客户端IP、请求时间、方法、URL、响应状态码等); - manager.log/host-manager.log:应用管理界面的访问日志,需重点关注异常访问。
二、访问日志中的异常流量识别要点
访问日志是识别异常流量的核心来源,需重点监控以下指标:
-
高频错误状态码:
- 大量404错误:短时间内同一IP或路径出现大量404(未找到)状态码,可能是扫描工具(如Nmap)探测服务器路径或文件;
- 大量403错误:频繁的403(禁止访问)状态码,可能是攻击者尝试访问受保护资源(如
/admin
目录); - 大量5xx错误(如500内部服务器错误、503服务不可用):可能是恶意请求导致服务器崩溃或资源耗尽(如SQL注入、命令执行)。
-
异常请求频率:
- 单位时间内同一IP地址的请求数激增(如1分钟内同一IP发起100+次请求),远超正常用户访问频率,可能是DDoS攻击或爬虫滥用;
- 短时间内大量并发请求(如线程池满负荷),可通过
netstat -antp | grep java
查看Tomcat连接数是否异常。
-
可疑IP与请求来源:
- 来自高风险地区的IP(如境外IP、已知恶意IP段),可通过
whois
命令查询IP归属地; - 同一IP短时间内访问多个不存在的路径(如
/wp-admin.php
、/phpmyadmin
),可能是自动化攻击工具的行为。
- 来自高风险地区的IP(如境外IP、已知恶意IP段),可通过
-
异常请求参数与方法:
- 请求参数包含特殊字符(如
< script>
、union select
、1=1
)、编码内容(如%3Cscript%3E
解码为< script>
、PHNjcmlwdD4=
解码为< script>
)或超长字符串(如超过1000字符的参数),可能是SQL注入、XSS攻击或命令执行; - 使用不常见的HTTP方法(如PUT、DELETE、TRACE、MOVE),这些方法默认情况下Tomcat可能未启用,异常使用可能是攻击试探。
- 请求参数包含特殊字符(如
三、错误日志中的异常流量识别要点
catalina.out(或logs/catalina.<
日期>
.log
)中的错误信息能直接反映系统异常,需重点关注:
-
内存问题:
出现OutOfMemoryError: Java heap space
(堆内存溢出)、OutOfMemoryError: Metaspace
(元空间溢出)等错误,可能是恶意请求导致内存耗尽(如大量上传文件、循环递归调用)。 -
线程问题:
出现java.lang.OutOfMemoryError: unable to create new native thread
(无法创建新线程)或Deadlock detected
(死锁),可能是线程池被大量请求占满(如DDoS攻击)。 -
安全异常:
出现Access denied for user
(数据库访问被拒绝)、ServletException: Attempt to access unauthorized resource
(试图访问未授权资源)、Invalid session ID
(无效会话ID)等错误,可能是攻击者尝试破解密码、越权访问或伪造会话。
四、使用工具辅助识别异常流量
-
命令行工具:
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)。
-
日志分析工具:
- ELK Stack(Elasticsearch+Logstash+Kibana):实现日志的集中存储、实时分析与可视化,可通过Kibana dashboard展示异常流量趋势(如404错误占比、高频IP分布);
- Splunk:支持日志搜索、告警与报表生成,可设置规则(如“1分钟内同一IP请求超过100次”)自动触发报警;
- GoAccess:轻量级日志分析工具,可快速生成访问日志报告(如请求方法分布、状态码占比)。
五、结合系统层面验证异常流量
-
监控系统资源:
使用top
、htop
查看CPU使用率(如Tomcat进程占用CPU超过80%)、free -m
查看内存使用情况(如剩余内存不足100MB)、iftop
查看网络带宽(如流入流量突然激增),确认是否因异常流量导致资源瓶颈。 -
检查网络连接:
使用netstat -antp | grep java
查看Tomcat的连接数(如ESTABLISHED连接数超过1000)、ss -s
查看socket统计信息(如总连接数异常),判断是否遭受DDoS攻击。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: CentOS Tomcat日志中如何识别异常流量
本文地址: https://pptw.com/jishu/729641.html