1. 及时更新与补丁管理
定期将Tomcat升级至最新稳定版本,及时应用官方发布的安全补丁(如CVE-2025-31650、CVE-2024-56337等),修复已知漏洞,降低被攻击风险。
2. 最小权限运行
避免以root或高权限用户启动Tomcat,创建专用低权限用户(如tomcat),并通过/etc/systemd/system/tomcat.service文件配置User=tomcat、Group=tomcat,限制进程对系统资源的访问。
3. 安全认证与授权
tomcat-users.xml定义角色(如admin、user)和用户,分配对应权限(如<user username="admin" password="SecurePass123" roles="admin"/>);web.xml中配置认证类型(优先使用FORM或DIGEST替代不安全的BASIC认证),如<auth-method>FORM</auth-method>,并指定登录页面(<form-login-page>/login.jsp</form-login-page>);JDBCRealm(连接数据库)或JNDIRealm(连接LDAP/Active Directory)实现集中式用户管理。4. 访问控制与流量过滤
web.xml的<Valve className="org.apache.catalina.valves.RemoteAddrValve">或server.xml的RemoteAddrValve,设置allow属性(如allow="192.168.1.*"),仅允许特定IP或网段访问管理界面;web.xml中通过<security-constraint>定义受保护资源(如/admin/*),关联角色(如<role-name>admin</role-name>),限制未授权用户访问;webapps/manager、webapps/host-manager文件夹)、禁用WebDAV(移除web.xml中的DefaultServlet配置),减少攻击面。5. SSL/TLS加密通信
keytool生成自签名证书(keytool -genkey -alias tomcat -keyalg RSA -keystore /path/to/keystore.jks -keysize 2048)或从CA获取证书;server.xml中添加或修改<Connector>,开启SSLEnabled="true",指定证书路径(keystoreFile)和密码(keystorePass),如<Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol" SSLEnabled="true" keystoreFile="/path/to/keystore.jks" keystorePass="yourPassword" clientAuth="false" sslProtocol="TLS"/>;clientAuth="true"并要求客户端提供证书。6. 安全配置加固
8080改为非标准端口(如10808),HTTPS默认端口8443改为8444,降低被端口扫描工具发现的风险;server.xml的<Connector>中添加server="Custom Server",或在web.xml中设置<display-name>Hidden</display-name>,防止攻击者识别Tomcat版本;web.xml中设置<init-param><param-name>listings</param-name><param-value>false</param-value></init-param>,禁止浏览器查看Web应用目录内容;web.xml配置自定义404、500等错误页面(如<error-page><error-code>404</error-code><location>/nofile.html</location></error-page>),避免泄露敏感信息。7. 日志与监控
server.xml中配置AccessLogValve,记录访问详情(如IP、时间、请求方法、URL、状态码),如<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" prefix="localhost_access_log." suffix=".txt" pattern="common" resolveHosts="false"/>;manager_access_log),记录管理员登录、操作记录,便于追溯异常行为;8. 其他关键措施
tomcat-users.xml中的管理员密码(使用强密码,包含大小写字母、数字、特殊字符),避免使用默认密码;/opt/tomcat目录属主为tomcat,权限为750;配置文件权限为600),防止未授权用户修改;server.xml中的AJP Connector(<Connector port="8009" protocol="AJP/1.3" redirectPort="8443"/>),减少攻击面。