1. 定位Debian Tomcat日志文件
Debian系统中,Tomcat日志默认存储在/var/log/tomcat(或/opt/tomcat/logs,取决于安装方式)目录下,主要包括三类核心日志:
localhost_access_log.YYYY-MM-DD.txt):记录所有HTTP请求的详细信息(IP、时间、方法、URL、状态码等);catalina.out、localhost.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中,将关键组件的日志级别设为FINE或WARNING(避免过度日志),例如: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. 分析访问日志识别异常行为
访问日志是发现恶意请求的第一手资料,需重点关注以下模式:
/admin.php、/wp-login.php),可能是扫描工具在探测敏感路径,可使用grep命令快速统计:grep " 404 " /var/log/tomcat/localhost_access_log.* | awk '{print $7}' | sort | uniq -c | sort -nr
awk统计IP访问频率:awk '{print $1}' /var/log/tomcat/localhost_access_log.* | sort | uniq -c | sort -nr | head -20
' OR '1'='1、<script>、../),可能是SQL注入、XSS或目录遍历攻击,例如:grep -E "(' OR '|<script>|\\.\\./)" /var/log/tomcat/localhost_access_log.*
4. 检查错误日志定位安全漏洞
错误日志中的异常信息能直接反映系统存在的安全隐患:
java.sql.SQLException: Incorrect syntax near或ORA-00933: SQL command not properly ended等错误,说明攻击者通过URL参数注入了非法SQL语句,需检查应用是否对输入进行了过滤。javax.servlet.ServletException: java.lang.IllegalArgumentException: Invalid character in attribute value或浏览器返回X-XSS-Protection相关的错误,可能是用户提交了恶意JavaScript代码(如<img src=x onerror=alert(1)>)。FileNotFound但请求路径包含../../(如/images/../../etc/passwd),说明攻击者试图访问系统敏感文件,需禁用目录列表(在web.xml中设置<param-name>listings</param-name><param-value>false</param-value>)。java.lang.OutOfMemoryError: Java heap space,可能是应用存在内存泄漏(如未关闭数据库连接),需调整JVM堆内存(-Xmx参数)或修复代码。5. 利用工具增强日志分析与响应
手动分析日志效率低,可借助工具实现自动化:
/var/log/tomcat分区满导致服务崩溃)。/etc/fail2ban/jail.local,示例规则:[tomcat]
enabled = true
filter = tomcat
action = iptables[name=Tomcat, port=8080, protocol=tcp]
logpath = /var/log/tomcat/localhost_access_log.*
maxretry = 3
findtime = 300
bantime = 3600
6. 结合安全策略强化日志防护
日志本身也是攻击目标,需采取措施保护日志安全:
chmod和chown命令设置权限:chown -R tomcat:tomcat /var/log/tomcat
chmod -R 750 /var/log/tomcat
conf/server.xml中的Server标签,移除版本号(如<Server port="8005" shutdown="SHUTDOWN">改为<Server port="8005" shutdown="SHUTDOWN" serverInfo="CustomServer">),并修改conf/org/apache/catalina/util/ServerInfo.properties文件中的server.info属性。webapps/manager和webapps/host-manager目录)、禁用AJP端口(在server.xml中将<Connector port="8009" protocol="AJP/1.3"的port设为-1)、关闭热部署(在host标签中设置autoDeploy="false")。