温馨提示×

Debian Tomcat如何配置安全

小樊
55
2026-08-31 07:25:45
栏目: 智能运维

在 Debian 上部署 Apache Tomcat 时,安全配置非常关键。下面从 系统层面、Tomcat 层面、网络层面 三个维度,给你一套生产环境可用的安全加固方案(适用于 Debian 10/11/12,Tomcat 9/10)。


一、系统与运行环境安全

1. 使用专用用户运行 Tomcat(✅必须)

不要使用 root 运行 Tomcat

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

解压 Tomcat 到 /opt/tomcat,并授权:

sudo chown -R tomcat:tomcat /opt/tomcat
sudo chmod -R 750 /opt/tomcat

2. 限制 Tomcat 目录权限

sudo chown root:tomcat /opt/tomcat/conf
sudo chmod 640 /opt/tomcat/conf/*

确保:

  • conf/、bin/ 只能被 tomcat 或 root 读取
  • webapps/ 不能有无关目录

二、Tomcat 核心安全配置

3. 删除默认应用(✅强烈建议)

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

如果必须用 Manager:

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

4. 配置 conf/server.xml(重点)

4.1 关闭 AJP(除非你明确使用)

<!-- 注释或删除 -->
<!-- <Connector protocol="AJP/1.3" port="8009" /> -->

4.2 禁用目录列表

conf/web.xml

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

4.3 修改默认端口(非必须但推荐)

<Connector port="8081" protocol="HTTP/1.1"
           connectionTimeout="20000"
           redirectPort="8444" />

5. 配置 conf/tomcat-users.xml

✅ 最小权限原则

错误示例(❌不要这样):

<user username="admin" password="123456" roles="manager-gui,admin-gui"/>

正确示例(✅):

<role rolename="manager-gui"/>
<user username="ops" password="StrongPass#2025" roles="manager-gui"/>

⚠️ 强烈建议:

  • 禁用 admin-gui
  • 生产环境禁用 Manager

三、HTTPS / TLS 配置(✅生产必须)

6. 使用 Nginx / Apache 反代(推荐)

Tomcat 不直接暴露公网

server {
    listen 443 ssl;
    server_name app.example.com;

    ssl_certificate /etc/letsencrypt/live/app.example.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/app.example.com/privkey.pem;

    location / {
        proxy_pass http://127.0.0.1:8080;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
    }
}

7. 若必须 Tomcat 直出 HTTPS

server.xml

<Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol"
           maxThreads="150"
           SSLEnabled="true">
    <SSLHostConfig>
        <Certificate certificateFile="conf/cert.pem"
                     certificateKeyFile="conf/key.pem"/>
    </SSLHostConfig>
</Connector>

四、访问控制与防攻击

8. 限制 Manager 访问 IP

conf/Catalina/localhost/manager.xml

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

9. 启用访问日志

server.xml

<Valve className="org.apache.catalina.valves.AccessLogValve"
       directory="logs"
       prefix="localhost_access_log"
       suffix=".txt"
       pattern="%h %l %u %t "%r" %s %b" />

五、避免常见安全漏洞

10. 禁止 TRACE 请求

conf/web.xml

<security-constraint>
  <web-resource-collection>
    <web-resource-name>Disable TRACE</web-resource-name>
    <url-pattern>/*</url-pattern>
  </web-resource-collection>
  <auth-constraint />
</security-constraint>

11. 隐藏 Tomcat 版本信息(✅防止信息泄露)

cd /opt/tomcat/lib
jar xf catalina.jar org/apache/catalina/util/ServerInfo.properties

编辑:

server.info=Apache Tomcat
server.number=
server.built=

重新打包并重启。


六、Debian 系统级加固

12. 使用 systemd 限制权限

/etc/systemd/system/tomcat.service

[Service]
User=tomcat
Group=tomcat
PrivateTmp=true
NoNewPrivileges=true
LimitNOFILE=65536
sudo systemctl daemon-reload
sudo systemctl restart tomcat

13. 自动更新 Debian 安全补丁

sudo apt install unattended-upgrades
sudo dpkg-reconfigure --priority=low unattended-upgrades

七、安全配置检查清单 ✅

项目 是否完成
非 root 用户运行 ✅
删除默认应用 ✅
禁用 AJP ✅
禁用目录遍历 ✅
强密码 ✅
HTTPS ✅
限制 Manager IP ✅
隐藏版本 ✅

八、推荐工具

  • 扫描漏洞:
    • Nikto
    • OWASP ZAP
  • 基线检查:
    • Lynis
  • 日志分析:
    • GoAccess / ELK

如果你愿意,我可以:

  • ✅ 按 Tomcat 9 / 10 给出精确配置
  • ✅ 帮你 审计一个现有 server.xml
  • ✅ 给出 Docker + Debian + Tomcat 安全方案

你可以直接贴你的 server.xml 或说明使用场景(内网 / 公网 / 是否使用 Nginx)。

0 踩