1. 用户与组权限配置
必须使用非root用户(如tomcat)运行Tomcat服务,避免以root身份启动带来的安全风险。创建专用用户及组(sudo useradd -r -m -d /opt/tomcat -s /bin/false tomcat),并将Tomcat安装目录(如/opt/tomcat)的所有权归属该用户及组(sudo chown -R tomcat:tomcat /opt/tomcat)。同时,通过Systemd服务文件(/etc/systemd/system/tomcat.service)明确指定User=tomcat和Group=tomcat,确保服务启动时以该用户身份运行。
2. 目录与文件权限设置
644(sudo find /opt/tomcat -type f -exec chmod 644 {} \;),确保用户可读、组和其他用户仅可读;目录设置为755(sudo find /opt/tomcat -type d -exec chmod 755 {} \;),允许用户及组进入和读取目录。bin/*.sh)需赋予执行权限(sudo chmod +x /opt/tomcat/bin/*.sh),确保服务能正常启动和停止。logs目录需允许Tomcat用户写入日志(sudo chmod -R 755 /opt/tomcat/logs);webapps、conf等关键目录需限制为Tomcat用户专属访问,防止未授权修改。3. SELinux上下文配置(若启用)
若系统启用SELinux(sestatus显示enabled),需调整SELinux策略以允许Tomcat访问资源。将Tomcat目录上下文设置为httpd_sys_content_t(sudo chcon -R -t httpd_sys_content_t /opt/tomcat),日志目录设置为httpd_sys_rw_content_t(sudo chcon -R -t httpd_sys_rw_content_t /opt/tomcat/logs)。如需永久生效,可编辑/etc/selinux/config文件,将SELINUX=enforcing改为SELINUX=permissive(重启后恢复enforcing)。
4. 管理界面与用户权限控制
conf/tomcat-users.xml文件,仅为授权用户分配必要角色(如manager-gui、admin-gui),避免过度授权。例如:<tomcat-users>
<role rolename="manager-gui"/>
<user username="admin" password="strong_password" roles="manager-gui"/>
</tomcat-users>
conf/server.xml中的Connector节点,添加server属性(如server="MyAppServer/1.0"),隐藏Tomcat版本信息,防止攻击者利用版本漏洞针对性攻击。5. 网络与端口访问限制
firewalld限制Tomcat端口的访问,仅允许必要IP地址访问管理端口(如8080、8443)。例如:sudo firewall-cmd --zone=public --add-port=8080/tcp --permanent
sudo firewall-cmd --reload
conf/server.xml中设置autoDeploy="false"和unpackWARs="false",防止恶意WAR文件自动部署到服务器。6. 其他安全权限优化
webapps/WEB-INF/web.xml文件,设置listings="false",防止通过浏览器直接访问目录时泄露敏感文件列表。context.xml中配置sessionCookieHttpOnly="true"和sessionCookieSecure="true",防止JavaScript访问Cookie,减少XSS攻击风险。/etc/security/limits.d/90-nproc.conf和/etc/security/limits.conf,增加Tomcat用户的进程数(nproc)和文件描述符(nofile)限制,避免资源耗尽导致服务崩溃。例如:tomcat soft nproc 4096
tomcat hard nproc 8192
tomcat soft nofile 4096
tomcat hard nofile 16384