Linux Tomcat 安全审计实施指南
一 审计目标与总体架构
- 覆盖关键事件:记录用户登录与管理操作、应用访问行为、系统异常与错误、配置与权限变更,并确保日志包含时间、用户/主体、事件类型、结果等要素,便于追溯与合规(如等保2.0)核查。
- 日志体系与职责:
- 访问日志:记录所有 HTTP 请求,定位扫描、暴力登录、异常流量等。
- 内部运行日志:catalina、localhost、manager/host-manager 等,记录启动、部署、权限校验等。
- 身份与授权审计:聚焦 tomcat-users.xml 的用户与角色分配变更。
- 存储与保护:日志集中化采集、滚动与备份、访问控制与防篡改,保证完整性与可用性。
二 启用与配置 Tomcat 访问日志
- 在 $CATALINA_HOME/conf/server.xml 的 内确保启用 AccessLogValve,示例:
<Valve className="org.apache.catalina.valves.AccessLogValve"
directory="logs"
prefix="localhost_access_log."
suffix=".txt"
pattern="%h %l %u %t "%r" %s %b"
resolveHosts="false"/>
- 关键字段建议:
- pattern 至少包含:%h(客户端IP)、%t(时间)、%r(请求行)、%s(状态码)、%b(字节数);如需用户追踪可加入 %u。
- 验证:重启后在 $CATALINA_HOME/logs/ 生成 localhost_access_log.*.txt,访问应用应产生访问记录。
三 内部运行日志与日志滚动
- 日志级别与审计要点:在 $CATALINA_HOME/conf/logging.properties 为关键组件设定合适级别,至少保证 FINE 级别以覆盖认证与授权事件;必要时提升 Realm 日志以审计登录验证过程:
org.apache.catalina.realm.level = FINE
org.apache.catalina.realm.UserDatabaseRealm.level = FINEST
- 日志滚动与归档:避免单文件过大,便于长期保留与取证。示例(JUL 配置):
java.util.logging.FileHandler.pattern = %h/tomcat.%g.log
java.util.logging.FileHandler.limit = 50000
java.util.logging.FileHandler.count = 5
java.util.logging.FileHandler.formatter = java.util.logging.SimpleFormatter
- 目录与文件:常见日志位于 $CATALINA_HOME/logs/(如 catalina.out、catalina.[日期].log、localhost.[日期].log、localhost_access_log.[日期].txt、manager.[日期].log、host-manager.[日期].log)。
四 审计分析与监控告警
- 快速排查命令:
- 实时查看:tail -f $CATALINA_HOME/logs/catalina.out
- 关键字检索:grep -i “error|exception|failed” $CATALINA_HOME/logs/catalina.*.log
- 访问日志分析:统计 404/500 高频与可疑路径,示例:
- 统计 404:
awk ‘$9 == 404 {print $1,$7}’ $CATALINA_HOME/logs/localhost_access_log.*.txt | sort | uniq -c | sort -nr | head
- 统计 5xx:
awk ‘$9 >= 500 {print $1,$7}’ $CATALINA_HOME/logs/localhost_access_log.*.txt | sort | uniq -c | sort -nr | head
- 识别恶意访问模式:
- 频繁 404(目录/文件探测)、异常 User-Agent、大量并发请求(潜在 DoS/DDoS)、可疑 IP 反复访问管理路径(如 /manager/html)。
- 管理后台暴力破解迹象:短时间内大量 401/403 后突现 200 访问 /manager/html(示例日志特征:状态码 200 且请求路径为 /manager/html)。
- 集中化与自动化:
- 使用 ELK Stack(Elasticsearch/Logstash/Kibana) 或 Splunk/Graylog 做解析、可视化与告警(如:高频 404、异常 5xx、管理路径异常访问、登录失败激增)。
- 结合 WAF(如 ModSecurity/OWASP CRS) 做请求层拦截与告警联动。
五 合规与运维要点
- 身份与授权审计:
- 定期核查 $CATALINA_HOME/conf/tomcat-users.xml 的用户与角色,清理默认/过期/共享账户,遵循最小权限与职责分离;必要时重命名或移除默认管理应用(manager/host-manager)。
- 日志保护与备份:
- 设置日志文件权限不高于 640,所属用户/组与 Tomcat 运行账户匹配;启用远程集中日志与定期备份,防止删除/篡改/覆盖。
- 运行与网络控制:
- 以非 root 用户运行 Tomcat;限制管理接口的来源 IP(RemoteAddrValve 等);对公网仅暴露必要端口,管理口限制在内网或跳板访问。
- 持续监测与响应:
- 建立基线与阈值(如 404/5xx 速率、登录失败次数、并发连接数),触发告警并执行封禁/限流等自动化响应;保持 Tomcat 版本与依赖及时更新。