Linux Tomcat 安全审计落地方案
一 审计目标与总体架构
- 覆盖三类关键审计数据:
- 访问审计(谁在何时用什么方法访问了哪个资源、结果如何、耗时多少、来源与UA);
- 应用与容器运行审计(启动/停止、部署、类加载、权限变更、异常堆栈);
- 管理操作审计(对管理应用与后台接口的增删改与登录行为)。
- 建议采用“本地落盘 + 集中化存储 + 实时分析告警”的架构:Tomcat 本地按日滚动写访问日志与运行日志,通过 Filebeat/rsyslog 发送到 ELK/Splunk 做聚合、检索与可视化,配置阈值与规则实现异常告警。
二 启用并优化 Tomcat 访问日志 AccessLogValve
- 在 $CATALINA_HOME/conf/server.xml 的 内配置访问日志,记录来源IP、时间、请求行、状态码、字节数、Referer、User-Agent、请求耗时等,便于安全分析与溯源。示例:
<Valve className="org.apache.catalina.valves.AccessLogValve"
directory="logs"
prefix="localhost_access_log."
suffix=".txt"
rotatable="true"
fileDateFormat="yyyy-MM-dd"
pattern="%h %l %u %t "%r" %s %b "%{Referer}i" "%{User-Agent}i" %D" />
- 关键参数说明:
- pattern:常用组合为 common 或 combined;安全审计建议显式指定字段,至少包含 %h %t “%r” %s %b “%{Referer}i” “%{User-Agent}i”,并加入 %D(毫秒耗时)定位慢请求与异常行为。
- rotatable/fileDateFormat:按天(或小时)滚动,避免单文件过大,便于保留周期与快速检索。
- resolveHosts:建议 false,避免 DNS 反向解析带来的性能与时延波动。
- 说明:标准 AccessLogValve 不直接记录 POST 请求体;如需审计 POST 参数,可在应用层记录或采用具备相应能力的扩展组件,并严格评估对性能与敏感信息泄露的影响。
三 运行与错误日志审计配置
- 运行日志级别与滚动:在 $CATALINA_HOME/conf/logging.properties 中按需调整 org.apache.catalina、org.apache.coyote、org.apache.tomcat 等日志器的级别,并配置 FileHandler 的 limit/count 实现按大小滚动,防止日志被覆盖或撑满磁盘。
- 统一落盘与采集:将 catalina.out 与按 JULI 输出的各组件日志纳入 logrotate(按日轮转、保留 30–90 天、压缩归档),并由 Filebeat 统一采集发送至 ELK/Splunk。
- 敏感信息控制:自定义 error-page,避免在生产环境暴露堆栈与调试信息(如将 java.lang.Throwable 导向统一错误页),减少信息泄露面。
四 管理口与高危操作的审计与最小化
- 管理应用最小化:如无远程发布需求,建议移除或禁用 webapps/manager、host-manager;如必须使用,务必:
- 仅在内网开放;
- 配置 强口令 与 最小权限角色;
- 启用 IP 白名单(在 server.xml 的 中设置 allow/deny)。
- 协议与接口收敛:
- 不需要 AJP 的场景,直接注释或删除 server.xml 中的 AJP/1.3 Connector,降低 CNVD-2020-10487/CVE-2020-1938 类风险;
- 禁用危险 HTTP 方法(如 PUT/DELETE/OPTIONS/TRACE),仅允许业务所需方法。
- 部署行为收敛:在 server.xml 的 中将 autoDeploy=“false”(如存在 deployOnStartup 亦设为 false),避免未经审批的应用被热部署。
五 审计落地与运营清单
- 日志采集与存储:
- 访问日志、运行日志统一落盘与采集;
- 设置保留策略(如 30–90 天)与离线归档;
- 限制日志文件权限,仅允许 tomcat 用户与审计/运维组读取。
- 分析与告警:
- 在 ELK/Splunk 建立索引与仪表盘,关注:高频 404/403、异常 User-Agent、来源 IP 突变、短时高并发、耗时异常接口、管理口失败登录等;
- 配置阈值与告警,联动阻断或封禁策略。
- 例行检查与基线:
- 每周抽检访问日志与错误日志;
- 每月核查用户与权限、管理口访问控制、自动部署状态、日志轮转与健康状态;
- 持续跟踪 Tomcat 安全公告并及时升级。