温馨提示×

怎样提高Ubuntu Tomcat安全性

小樊
42
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