如何通过Debian Tomcat日志排查安全问题

avatar
作者
筋斗云
阅读量:3

1. 定位Debian Tomcat日志文件
Debian系统中,Tomcat日志默认存储在/var/log/tomcat(或/opt/tomcat/logs,取决于安装方式)目录下,主要包括三类核心日志:

  • 访问日志localhost_access_log.YYYY-MM-DD.txt):记录所有HTTP请求的详细信息(IP、时间、方法、URL、状态码等);
  • 错误日志catalina.outlocalhost.YYYY-MM-DD.log):记录服务器运行异常(如内存溢出、Servlet错误);
  • 管理日志manager.YYYY-MM-DD.log):记录Tomcat管理应用(如/manager)的操作日志(部署、卸载应用)。

2. 配置全面的日志记录(提前预防)
为确保日志能捕获安全相关信息,需调整Tomcat配置:

  • 开启访问日志:在conf/server.xml中配置AccessLogValve,指定日志格式(包含IP、请求参数、响应状态等关键字段),例如:
    <Valve className="org.apache.catalina.valves.AccessLogValve" 
           directory="logs" 
           prefix="localhost_access_log" 
           suffix=".txt" 
           pattern="%h %l %u %t "%r" %s %b %D %{Referer}i %{User-Agent}i"/>
    
    其中%r(请求行)、%D(请求处理时间)、%{Referer}i(来源页面)、%{User-Agent}i(客户端标识)对识别恶意请求至关重要。
  • 调整日志级别:在conf/logging.properties中,将关键组件的日志级别设为FINEWARNING(避免过度日志),例如:
    org.apache.catalina.level = WARNING
    org.apache.coyote.level = WARNING
    org.apache.tomcat.level = WARNING
    
  • 设置日志轮转:通过logging.properties配置日志分割(避免单个文件过大),例如:
    java.util.logging.FileHandler.pattern = ${catalina.base}/logs/tomcat.%g.log
    java.util.logging.FileHandler.limit = 5000000  # 5MB
    java.util.logging.FileHandler.count = 5       # 保留5个备份
    
    或使用logrotate工具(Debian自带)自动轮转,配置文件位于/etc/logrotate.d/tomcat

3. 分析访问日志识别异常行为
访问日志是发现恶意请求的第一手资料,需重点关注以下模式:

  • 频繁404错误:短时间内大量不存在的URL请求(如/admin.php/wp-login.php),可能是扫描工具在探测敏感路径,可使用grep命令快速统计:
    grep " 404 " /var/log/tomcat/localhost_access_log.* | awk '{print $7}' | sort | uniq -c | sort -nr
    
  • 高频异常请求:同一IP在短时间内发起大量请求(如每秒超过10次),可能是DDoS或暴力破解,可使用awk统计IP访问频率:
    awk '{print $1}' /var/log/tomcat/localhost_access_log.* | sort | uniq -c | sort -nr | head -20
    
  • 可疑请求参数:URL或POST请求中包含特殊字符(如' OR '1'='1 jindouyun.cn. All Rights Reserved. 筋斗云 版权所有 | 粤ICP备13013545号 | 增值电信业务经营许可证: 粤B1-20215235 | 公网安备粤公网安备 44070302000974号
    违法和不良信息举报中心违法和不良信息举报中心   24 小时违法和不良信息举报热线:4006783389,举报邮箱:jubao@jindouyun.cn
    ipv6
嘿,我是微信客服!