1. 严格配置日志文件权限
Debian系统中,Tomcat日志默认存储在/var/log/tomcat9(或对应版本目录)。需将日志目录所有者设为tomcat用户及组,并限制权限为750(所有者可读写执行,其他用户无写权限),防止未授权访问。操作命令:
sudo chown -R tomcat:tomcat /var/log/tomcat9
sudo chmod -R 750 /var/log/tomcat9
重启Tomcat服务使权限生效:sudo systemctl restart tomcat9。
2. 优化日志级别设置
根据安全需求调整日志粒度,避免记录过多敏感信息。修改conf/logging.properties文件,将全局日志级别设为WARNING或ERROR(仅记录关键错误和警告),减少调试信息(如FINE、FINER)的输出。例如:
org.apache.catalina.level = WARNING
此设置可降低日志泄露系统细节的风险。
3. 规范日志轮转机制
使用logrotate工具自动分割、压缩旧日志,避免单个日志文件过大导致存储溢出或难以审计。创建自定义配置文件/etc/logrotate.d/tomcat9,内容示例如下:
/var/log/tomcat9/*.log {
daily
missingok
rotate 7
compress
delaycompress
notifempty
create 640 tomcat tomcat
sharedscripts
postrotate
systemctl restart tomcat9 > /dev/null
endscript
}
该配置每日轮转日志,保留最近7天的压缩日志,确保日志文件可控。
4. 隐藏敏感信息
conf/server.xml中的Server标签,添加server="Apache"(隐藏Tomcat版本);或解压catalina.jar,编辑org/apache/catalina/util/ServerInfo.properties文件,修改server.info和server.number字段,重新打包catalina.jar。conf/web.xml添加安全过滤器,移除Server、X-Powered-By等响应头,防止攻击者获取服务器信息。例如:<filter>
<filter-name>httpHeaderSecurity</filter-name>
<filter-class>org.apache.catalina.filters.HttpHeaderSecurityFilter</filter-class>
<init-param>
<param-name>antiClickJackingOption</param-name>
<param-value>SAMEORIGIN</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>httpHeaderSecurity</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
5. 强化访问控制
conf/web.xml配置安全约束,限制对日志文件的访问。例如,仅允许admin角色访问/logs/*路径:<security-constraint>
<web-resource-collection>
<web-resource-name>Logs</web-resource-name>
<url-pattern>/logs/*</url-pattern>
</web-resource-collection>
<auth-constraint>
<role-name>admin</role-name>
</auth-constraint>
</security-constraint>
ufw)限制Tomcat端口(默认8080)的访问,仅允许特定IP段访问:sudo ufw allow from 192.168.1.0/24 to any port 8080
sudo ufw enable
6. 启用安全管理器
编辑conf/catalina.policy文件,配置细粒度的安全策略,限制对日志文件的访问权限。例如,允许tomcat用户仅能读取自身日志目录:
grant codeBase "file:${catalina.base}/-" {
permission java.io.FilePermission "${catalina.base}/logs/-", "read,write";
};
启用安全管理器需在catalina.sh中添加-security参数:export CATALINA_OPTS="$CATALINA_OPTS -security"。
7. 使用第三方日志框架
替换默认日志系统为Log4j或Logback,提升日志管理能力。将CATALINA_HOME/lib目录下的log4j-core.jar、log4j-api.jar等jar包复制到Tomcat库目录,修改conf/logging.properties配置Log4j参数。例如,设置日志输出格式为JSON,便于后续分析:
log4j.rootLogger=INFO, file
log4j.appender.file=org.apache.log4j.RollingFileAppender
log4j.appender.file.File=${catalina.base}/logs/tomcat.log
log4j.appender.file.MaxFileSize=10MB
log4j.appender.file.MaxBackupIndex=5
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%d{ISO8601} [%t] %-5p %c %x - %m%n
8. 定期审计与监控
catalina.out、localhost_access_log.*.txt),关注异常登录(如多次失败尝试)、未授权访问(如403 Forbidden)或异常错误(如NullPointerException)。