Ubuntu上Tomcat的安全配置清单
一 基础安全基线
java -version 验证环境可用。sudo useradd -m -U -d /opt/tomcat -s /bin/false tomcat,并将安装目录属主设为该用户。sha512sum 校验完整性,避免使用第三方修改版。User=tomcat、Group=tomcat、UMask=0007,并配置 JAVA_HOME、CATALINA_HOME、CATALINA_BASE 等环境变量。二 运行与访问控制
bin/*.sh 设为 700,敏感文件 conf/tomcat-users.xml 设为 600。webapps 下不需要的 docs、examples、ROOT、host-manager、manager,减少攻击面。conf/server.xml 中将 autoDeploy 与 deployOnStartup 设为 false,避免热部署引入风险。manager-script、manager-jmx)。webapps/manager/META-INF/context.xml 添加 RemoteAddrValve 仅允许内网或跳板机访问;若无需远程管理,可直接删除 manager 应用。三 加密与传输安全
openssl pkcs12 -export -in fullchain.pem -inkey privkey.pem -out /srv/tomcat/conf/keystore.p12 -name tomcat -CAfile chain.pem -caname root -password pass:密钥密码conf/server.xml 配置 HTTPS Connector(示例):<Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol"
maxThreads="150" SSLEnabled="true" scheme="https" secure="true">
<SSLHostConfig>
<Certificate certificateKeystoreFile="conf/keystore.p12"
type="RSA" certificateKeystorePassword="密钥密码"/>
</SSLHostConfig>
</Connector>
四 服务管理与维护
[Unit]
Description=Apache Tomcat Web Application Container
After=syslog.target network.target
[Service]
Type=forking
Environment=JAVA_HOME=/usr/lib/jvm/java-11-openjdk
Environment=CATALINA_PID=/srv/tomcat/temp/tomcat.pid
Environment=CATALINA_HOME=/srv/tomcat
Environment=CATALINA_BASE=/srv/tomcat
ExecStart=/srv/tomcat/bin/startup.sh
ExecStop=/srv/tomcat/bin/shutdown.sh
User=tomcat
Group=tomcat
UMask=0007
RestartSec=10
Restart=always
[Install]
WantedBy=multi-user.target
执行:sudo systemctl daemon-reload && sudo systemctl enable --now tomcatsudo systemctl status tomcatsudo cp /srv/tomcat/conf/server.xml{,.bak};sudo cp -r /srv/tomcat/logs logs.baksudo systemctl stop tomcat 并确认进程退出sudo systemctl start tomcat;sudo systemctl status tomcat;tail -f /srv/tomcat/logs/catalina.out五 持续加固与监控
server.xml 中移除 AJP Connector。catalina.out、localhost*.log 等日志,关注异常访问与管理登录失败。tomcat-users.xml 与 context.xml 的权限与 IP 白名单,确保仅授权必要人员与网段。