温馨提示×

Debian如何配置Tomcat安全

小樊
41
2026-07-21 16:46:54
栏目: 智能运维

在 Debian 上配置 Tomcat 安全,通常从 系统层面 + Tomcat 自身配置 + 应用层面 三个维度来做。下面以 Tomcat 9(Debian 11/12) 为例,给出一套生产环境常用安全配置清单


一、系统层面安全

1. 不要使用 root 运行 Tomcat

Tomcat 绝对不要用 root 启动

sudo useradd -r -m -U -d /opt/tomcat -s /bin/false tomcat
sudo chown -R tomcat:tomcat /opt/tomcat

启动方式:

sudo -u tomcat /opt/tomcat/bin/startup.sh

✅ 使用 systemd 时自动生效(见下文)


2. 使用 systemd 并限制权限(推荐)

/etc/systemd/system/tomcat.service 示例:

[Unit]
Description=Apache Tomcat
After=network.target

[Service]
Type=forking
User=tomcat
Group=tomcat
Environment="JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64"
Environment="CATALINA_HOME=/opt/tomcat"
Environment="CATALINA_BASE=/opt/tomcat"
ExecStart=/opt/tomcat/bin/startup.sh
ExecStop=/opt/tomcat/bin/shutdown.sh

# 安全限制
NoNewPrivileges=true
PrivateTmp=true
ProtectSystem=full
LimitNOFILE=65536

[Install]
WantedBy=multi-user.target
sudo systemctl daemon-reload
sudo systemctl enable --now tomcat

二、Tomcat 自身安全配置

3. 删除默认应用(非常重要)

默认示例应用存在漏洞风险:

rm -rf /opt/tomcat/webapps/ROOT
rm -rf /opt/tomcat/webapps/docs
rm -rf /opt/tomcat/webapps/examples
rm -rf /opt/tomcat/webapps/host-manager
rm -rf /opt/tomcat/webapps/manager

✅ 若不需要管理后台,全部删除


4. 禁用 AJP 端口(除非你明确需要)

编辑:

vim /opt/tomcat/conf/server.xml

注释或删除:

<!--
<Connector protocol="AJP/1.3"
           port="8009"
           redirectPort="8443" />
-->

✅ 现代环境(Nginx / 直接 HTTPS)基本不需要 AJP


5. 修改默认端口

避免暴露 8080:

<Connector port="8080" protocol="HTTP/1.1"
           connectionTimeout="20000"
           redirectPort="8443" />

改为:

<Connector port="18080" ... />

6. 禁用目录列表

编辑 conf/web.xml

<servlet>
  <servlet-name>default</servlet-name>
  <init-param>
    <param-name>listings</param-name>
    <param-value>false</param-value>
  </init-param>
</servlet>

7. 配置 Manager 访问(如必须保留)

如果必须保留 manager

  • 只允许内网访问
  • 强密码
  • 限制 IP

编辑:

vim /opt/tomcat/conf/tomcat-users.xml
<role rolename="manager-gui"/>
<user username="admin" password="强密码" roles="manager-gui"/>

限制 IP(编辑 context.xml):

<Valve className="org.apache.catalina.valves.RemoteAddrValve"
       allow="127\.0\.0\.1|192\.168\.1\.\d+"/>

三、HTTPS / TLS 配置(强烈推荐)

8. 使用 HTTPS(Let’s Encrypt 或自签)

示例(Let’s Encrypt):

<Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol"
           maxThreads="150"
           SSLEnabled="true">
    <SSLHostConfig>
        <Certificate certificateFile="/etc/letsencrypt/live/example.com/fullchain.pem"
                     certificateKeyFile="/etc/letsencrypt/live/example.com/privkey.pem"
                     type="RSA" />
    </SSLHostConfig>
</Connector>

HTTP 自动跳转 HTTPS:

<SecurityConstraint>
  <web-resource-collection>
    <url-pattern>/*</url-pattern>
  </web-resource-collection>
  <user-data-constraint>
    <transport-guarantee>CONFIDENTIAL</transport-guarantee>
  </user-data-constraint>
</SecurityConstraint>

四、日志与审计

9. 开启访问日志

server.xml

<Valve className="org.apache.catalina.valves.AccessLogValve"
       directory="logs"
       prefix="access_log"
       suffix=".txt"
       pattern="combined" />

五、JVM 安全加固

10. JVM 安全参数

bin/setenv.sh(没有就新建):

export CATALINA_OPTS="$CATALINA_OPTS \
-Djava.security.egd=file:/dev/./urandom \
-Djdk.tls.ephemeralDHKeySize=2048 \
-Xms512m -Xmx1024m"

六、防火墙 & 端口

11. Debian 防火墙规则

sudo apt install ufw
sudo ufw allow 22
sudo ufw allow 443
sudo ufw enable

Tomcat 不对公网直接暴露 8080


七、定期维护

  • ✅ 定期升级 Debian:apt update && apt upgrade
  • ✅ 定期升级 Tomcat
  • ✅ 关注:https://tomcat.apache.org/security.html

八、安全配置检查清单(速查)

项目 是否
非 root 运行
删除默认应用
禁用 AJP
禁用目录浏览
使用 HTTPS
限制 Manager 访问
systemd 安全限制
防火墙

如果你愿意,我可以:

  • ✅ 帮你 逐行检查 server.xml
  • ✅ 给你 Debian + Nginx + Tomcat 安全架构
  • ✅ 针对 等保 / 合规 做专项加固

直接告诉我你的 Tomcat 版本 + Debian 版本 + 是否对外网开放 即可。

0