温馨提示×

Ubuntu中Tomcat的安全设置怎么做

小樊
41
2025-11-05 06:05:37
栏目: 智能运维

1. 最小权限原则配置Tomcat运行用户
创建专用低权限用户(如tomcat)及同组,用于运行Tomcat服务,避免以root身份启动。执行以下命令:

sudo groupadd tomcat
sudo useradd -s /bin/false -g tomcat -d /opt/tomcat tomcat
sudo chown -R tomcat:tomcat /opt/tomcat  # 将Tomcat安装目录所有权赋予该用户/组

若使用系统服务(如systemd),需在服务文件(如/etc/systemd/system/tomcat.service)中明确指定用户:

[Service]
User=tomcat
Group=tomcat

修改后重载systemd并重启Tomcat:

sudo systemctl daemon-reload
sudo systemctl restart tomcat

2. 移除默认内置应用及禁用不必要组件
Tomcat默认安装的docsexamplesROOThost-managermanager等应用可能存在安全风险,生产环境应删除:

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

同时,禁用AJP连接器(默认端口8009),编辑/opt/tomcat/conf/server.xml,注释或删除AJP配置段:

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

3. 强化Tomcat用户认证与管理
编辑/opt/tomcat/conf/tomcat-users.xml,设置复杂密码并仅授权必要角色(避免使用manager-scriptmanager-jmx等高权限角色):

<tomcat-users>
    <role rolename="manager-gui"/>  <!-- 仅允许通过GUI管理 -->
    <role rolename="admin-gui"/>
    <user username="secure_admin" password="YourStrongPassword123!" roles="manager-gui,admin-gui"/>
</tomcat-users>

修改Tomcat关闭指令(/opt/tomcat/conf/server.xml中的<Server>标签),避免暴力破解:

<Server port="8005" shutdown="ComplexShutdownCode123">  # 替换为随机复杂字符串

4. 配置SSL/TLS加密通信
生成自签名证书(生产环境建议使用CA颁发的证书),执行以下命令:

sudo keytool -genkey -alias tomcat -keyalg RSA -keysize 2048 -keystore /opt/tomcat/keystore.jks -validity 365

按提示输入信息(如姓名、组织、密码等),默认密钥库密码为changeit
编辑/opt/tomcat/conf/server.xml,取消注释并修改SSL连接器配置:

<Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol"
           SSLEnabled="true" scheme="https" secure="true"
           keystoreFile="/opt/tomcat/keystore.jks"
           keystorePass="YourKeystorePassword"
           clientAuth="false" sslProtocol="TLS"/>

可选:配置HTTP重定向到HTTPS(编辑/opt/tomcat/conf/web.xml),添加以下内容强制所有流量使用HTTPS:

<security-constraint>
    <web-resource-collection>
        <web-resource-name>Protected Context</web-resource-name>
        <url-pattern>/*</url-pattern>
    </web-resource-collection>
    <user-data-constraint>
        <transport-guarantee>CONFIDENTIAL</transport-guarantee>
    </user-data-constraint>
</security-constraint>

5. 配置防火墙限制访问端口
使用UFW(Uncomplicated Firewall)仅允许必要端口(如HTTP 8080、HTTPS 8443、SSH 22)访问:

sudo ufw allow 22/tcp  # 允许SSH远程管理
sudo ufw allow 8080/tcp  # 允许HTTP访问(若未配置重定向)
sudo ufw allow 8443/tcp  # 允许HTTPS访问
sudo ufw enable  # 启用防火墙
sudo ufw status  # 验证规则(应显示ALLOW规则)

6. 调整日志与文件权限防止泄露
修改/opt/tomcat/bin/catalina.sh,设置更宽松的umask(如0022),确保日志文件可被监控用户读取:

umask 0022

调整日志目录权限(/opt/tomcat/logs),允许组内用户读取:

sudo chmod -R 755 /opt/tomcat/logs

配置日志级别为WARN(减少敏感信息输出),编辑/opt/tomcat/conf/logging.properties

org.apache.catalina.level = WARN
org.apache.coyote.level = WARN
org.apache.jasper.level = WARN

7. 禁用自动部署与远程管理
编辑/opt/tomcat/conf/server.xml,关闭自动部署(避免未经授权的WAR文件部署):

<Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="false" deployOnStartup="false">

禁用远程管理接口(如JMX远程访问),编辑/opt/tomcat/conf/context.xml,添加以下内容:

<Context antiResourceLocking="false" privileged="false">
    <Valve className="org.apache.catalina.valves.RemoteAddrValve" allow="127\.0\.0\.1"/>
</Context>

8. 定期更新Tomcat与系统组件
定期检查Tomcat官方更新,升级至最新稳定版本(如Tomcat 10.1.x),修复已知漏洞:

# 若使用apt安装(Ubuntu 22.04+默认仓库版本较旧,建议手动下载)
wget https://downloads.apache.org/tomcat/tomcat-10/v10.1.20/bin/apache-tomcat-10.1.20.tar.gz
sudo tar xzvf apache-tomcat-10.1.20.tar.gz -C /opt/
sudo mv /opt/apache-tomcat-10.1.20 /opt/tomcat-new
sudo systemctl stop tomcat
sudo rm -rf /opt/tomcat
sudo mv /opt/tomcat-new /opt/tomcat
sudo chown -R tomcat:tomcat /opt/tomcat
sudo systemctl start tomcat

同时,更新系统软件包:

sudo apt update && sudo apt upgrade -y

0