CentOS系统中,Tomcat日志默认存储在$CATALINA_HOME/logs目录下,主要包括以下几类关键日志:
logs/localhost_access_log.<日期>.txt),记录所有HTTP请求的详细信息(客户端IP、请求时间、方法、URL、响应状态码等);访问日志是识别异常流量的核心来源,需重点监控以下指标:
高频错误状态码:
/admin目录);异常请求频率:
netstat -antp | grep java查看Tomcat连接数是否异常。可疑IP与请求来源:
whois命令查询IP归属地;/wp-admin.php、/phpmyadmin),可能是自动化攻击工具的行为。异常请求参数与方法:
<script>、union select、1=1)、编码内容(如%3Cscript%3E解码为<script>、PHNjcmlwdD4=解码为<script>)或超长字符串(如超过1000字符的参数),可能是SQL注入、XSS攻击或命令执行;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)。日志分析工具:
监控系统资源:
使用top、htop查看CPU使用率(如Tomcat进程占用CPU超过80%)、free -m查看内存使用情况(如剩余内存不足100MB)、iftop查看网络带宽(如流入流量突然激增),确认是否因异常流量导致资源瓶颈。
检查网络连接:
使用netstat -antp | grep java查看Tomcat的连接数(如ESTABLISHED连接数超过1000)、ss -s查看socket统计信息(如总连接数异常),判断是否遭受DDoS攻击。