温馨提示×

怎样提高Ubuntu Tomcat安全性

小樊
50
2025-10-28 16:49:35
栏目: 智能运维

1. 降权启动Tomcat:避免root权限风险
以非root用户运行Tomcat是基础安全措施,可防止服务被入侵后直接获取系统root权限。创建专用系统用户(如tomcat),并将其设为Tomcat目录的所有者:

sudo useradd -m -d /opt/tomcat -U -s /bin/false tomcat  # 创建无登录权限的系统用户
sudo chown -R tomcat:tomcat /opt/tomcat              # 设置目录属主

修改Tomcat启动脚本(如/opt/tomcat/bin/startup.sh),在首行添加su - tomcat -c,确保以tomcat用户身份启动服务。

2. 删除默认应用与禁用自动部署:减少攻击面
Tomcat默认安装的docsexamplesROOT等应用包含敏感信息(如路径配置),易成为攻击入口。删除webapps目录下所有默认应用:

rm -rf /opt/tomcat/webapps/*

同时,在server.xml中禁用自动部署(避免未经审核的应用自动上线):

<Host name="localhost" appBase="/opt/tomcat/webapps" unpackWARs="false" autoDeploy="false">

3. 配置防火墙:限制端口访问
使用ufw(Uncomplicated Firewall)仅允许必要端口(如HTTP 8080、HTTPS 8443、SSH 22)对外开放,阻止非法IP访问:

sudo ufw allow 22/tcp       # 允许SSH(管理服务器必需)
sudo ufw allow 8080/tcp     # 允许HTTP(若未启用HTTPS)
sudo ufw allow 8443/tcp     # 允许HTTPS
sudo ufw enable             # 启用防火墙
sudo ufw status             # 验证规则(应显示ALLOW规则)

4. 启用HTTPS与SSL/TLS:加密数据传输
使用Let’s Encrypt免费证书实现HTTPS,避免数据在传输过程中被窃取或篡改。获取证书并配置Tomcat:

sudo snap install --classic certbot  # 安装Certbot
sudo certbot certonly --standalone -d yourdomain.com -m your@email.com --agree-tos  # 获取证书
sudo cp /etc/letsencrypt/live/yourdomain.com/*.pem /opt/tomcat/conf/  # 复制证书到Tomcat目录
sudo chown -R tomcat:tomcat /opt/tomcat/conf/*.pem  # 设置正确权限

修改server.xml,添加HTTPS连接器:

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

5. 隐藏Tomcat版本信息:降低针对性攻击风险
修改server.xml中的Connector节点,添加server属性掩盖版本:

<Connector port="8080" protocol="HTTP/1.1"
           connectionTimeout="20000" redirectPort="8443"
           server="Custom Tomcat Server"/>  # 替换为自定义名称

进一步修改catalina.jar中的ServerInfo.properties文件(位于org/apache/catalina/util目录),替换版本信息(需解压jar包编辑后重新打包)。

6. 强化管理界面安全:限制访问与权限
仅在必要时启用manager-guiadmin-gui,并为管理用户设置强密码(包含大小写字母、数字、特殊字符)。编辑tomcat-users.xml

<tomcat-users>
    <role rolename="manager-gui"/>
    <role rolename="admin-gui"/>
    <user username="secure_admin" password="ComplexPass123!" roles="manager-gui,admin-gui"/>
</tomcat-users>

通过server.xml限制管理界面访问IP(如仅允许公司IP):

<Valve className="org.apache.catalina.valves.RemoteAddrValve"
       allow="192\.168\.1\.\d+" />  # 替换为允许的IP段

7. 定期更新与补丁管理:修复已知漏洞
保持Tomcat和Java为最新稳定版本,及时应用安全补丁。使用apt更新(若通过包管理器安装):

sudo apt update && sudo apt upgrade tomcat9 openjdk-11-jdk  # 根据实际版本调整

若手动安装,定期访问Apache Tomcat官网下载最新版本并替换旧文件。

8. 配置日志权限与监控:及时发现异常
修改Tomcat日志目录权限,确保tomcat用户可写入,同时限制其他用户访问:

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

定期审查catalina.outlocalhost_access_log文件(使用tail -f实时监控),设置日志轮转(通过logrotate工具)防止日志过大。

9. 禁用不必要的组件与服务:减少漏洞点
若无需AJP协议(常用于Apache反向代理),注释server.xml中的AJP连接器:

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

关闭Tomcat的JMX远程管理(若未使用),编辑catalina.sh,注释-Dcom.sun.management.jmxremote相关配置。

10. 应用层安全配置:增强Web应用防护
web.xml中配置自定义错误页面(避免暴露敏感信息),禁止目录列表:

<error-page>
    <error-code>404</error-code>
    <location>/error/404.html</location>  # 自定义404页面
</error-page>
<error-page>
    <error-code>500</error-code>
    <location>/error/500.html</location>  # 自定义500页面
</error-page>
<security-constraint>
    <web-resource-collection>
        <web-resource-name>Disable Directory Listing</web-resource-name>
        <url-pattern>/*</url-pattern>
    </web-resource-collection>
    <auth-constraint/>
</security-constraint>

启用Cookie的HttpOnlySecure属性(在context.xml中):

<Context useHttpOnly="true">
    <CookieProcessor sameSiteCookies="strict"/>
</Context>

0