1. 创建专用Tomcat用户和组
避免使用root用户运行Tomcat,降低安全风险。执行以下命令创建系统用户(无登录shell)和同名的组:
sudo groupadd tomcat
sudo useradd -s /bin/false -g tomcat -d /opt/tomcat tomcat
2. 配置Tomcat目录权限
将Tomcat安装目录(如/opt/tomcat)的所有权转移至tomcat用户和组,确保其拥有读写执行权限,其他用户仅能读取和执行:
sudo chown -R tomcat:tomcat /opt/tomcat
sudo chmod -R 750 /opt/tomcat # 目录权限:所有者可读写执行,组和其他用户仅可读执行
sudo chmod +x /opt/tomcat/bin/*.sh # 允许执行启动/停止脚本
3. 创建systemd服务文件
通过systemd管理Tomcat服务,强制其以tomcat用户身份运行。创建/etc/systemd/system/tomcat.service文件,内容如下:
[Unit]
Description=Apache Tomcat Web Application Container
After=network.target
[Service]
Type=forking
User=tomcat
Group=tomcat
Environment="JAVA_HOME=/usr/lib/jvm/default-java"
Environment="CATALINA_PID=/opt/tomcat/temp/tomcat.pid"
Environment="CATALINA_HOME=/opt/tomcat"
Environment="CATALINA_BASE=/opt/tomcat"
Environment="CATALINA_OPTS=-Xms512M -Xmx1024M -server -XX:+UseParallelGC"
ExecStart=/opt/tomcat/bin/startup.sh
ExecStop=/opt/tomcat/bin/shutdown.sh
Restart=always
RestartSec=10
[Install]
WantedBy=multi-user.target
重新加载systemd配置并启动服务:
sudo systemctl daemon-reload
sudo systemctl start tomcat
sudo systemctl enable tomcat # 开机自启
4. 配置Tomcat Web管理界面权限
编辑/opt/tomcat/conf/tomcat-users.xml文件,添加具有管理角色的用户(如admin),并分配manager-gui(Web管理界面)、admin-gui(管理员控制台)角色:
<tomcat-users>
<role rolename="manager-gui"/>
<role rolename="admin-gui"/>
<user username="admin" password="securePassword" roles="manager-gui,admin-gui"/>
</tomcat-users>
保存后重启Tomcat使配置生效:
sudo systemctl restart tomcat
5. 高级权限与安全优化
webapps、conf等关键目录仅tomcat用户可写,防止未授权修改:sudo chown -R tomcat:tomcat /opt/tomcat/webapps
sudo chmod -R 750 /opt/tomcat/webapps
/opt/tomcat/conf/server.xml中的Server标签,替换默认版本号:<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" server="Custom Server"/>
webapps目录下的docs、examples等示例应用,减少攻击面:rm -rf /opt/tomcat/webapps/docs /opt/tomcat/webapps/examples
ufw限制Tomcat端口(默认8080)的访问,仅允许可信IP:sudo ufw allow from 192.168.1.0/24 to any port 8080/tcp
sudo ufw enable
6. 验证配置
tomcat用户运行:sudo systemctl status tomcat
ps -ef | grep tomcat
http://服务器IP:8080,使用配置的管理用户登录,验证权限是否生效。