Ubuntu Tomcat访问控制策略配置
Tomcat通过tomcat-users.xml文件实现用户认证与角色授权,是访问控制的基础。需编辑/opt/tomcat/conf/tomcat-users.xml(Ubuntu默认路径),添加用户并分配对应角色(如管理界面访问、应用资源操作等)。示例配置:
<tomcat-users>
<role rolename="manager-gui"/> <!-- 管理界面访问角色 -->
<role rolename="admin-gui"/> <!-- 管理员角色 -->
<user username="admin" password="strong_password" roles="manager-gui,admin-gui"/> <!-- 用户及角色关联 -->
</tomcat-users>
说明:角色需与web.xml中的auth-constraint匹配,确保权限一致性。
Tomcat的管理界面(如/manager、/host-manager)易成为攻击目标,需通过RemoteAddrValve限制访问IP。编辑对应应用的context.xml文件(如/opt/tomcat/webapps/manager/META-INF/context.xml),添加以下配置:
<Context>
<Valve className="org.apache.catalina.valves.RemoteAddrValve"
allow="127\.\d+\.\d+\.\d+|::1|192\.168\.1\.\d+" /> <!-- 仅允许本地及指定IP段访问 -->
</Context>
说明:allow属性支持正则表达式,可根据需求调整(如仅允许可信IP访问)。
通过web.xml文件为特定URL路径设置访问权限,限制未授权用户访问敏感资源(如/admin/*)。在应用的WEB-INF/web.xml中添加:
<security-constraint>
<web-resource-collection>
<web-resource-name>Protected Admin Area</web-resource-name>
<url-pattern>/admin/*</url-pattern> <!-- 受保护的路径 -->
</web-resource-collection>
<auth-constraint>
<role-name>admin</role-name> <!-- 需具备的角色 -->
</auth-constraint>
</security-constraint>
<login-config>
<auth-method>BASIC</auth-method> <!-- 认证方式(BASIC/FORM/DIGEST) -->
<realm-name>Application Realm</realm-name> <!-- 认证域名称 -->
</login-config>
<security-role>
<role-name>admin</role-name> <!-- 角色声明 -->
</security-role>
说明:auth-method可选择BASIC(简单用户名密码)、FORM(表单认证)或DIGEST(加密认证),根据安全需求选择。
自动部署功能可能被恶意利用,通过修改server.xml关闭。编辑/opt/tomcat/conf/server.xml,找到<Host>标签,设置:
<Host name="localhost" appBase="/opt/tomcat/webapps" unpackWARs="false" autoDeploy="false">
说明:autoDeploy="false"禁用自动部署,unpackWARs="false"禁止自动解压WAR文件,需手动部署应用以增强安全性。
版本信息泄露会增加攻击面,通过修改server.xml中的Connector节点隐藏版本。编辑/opt/tomcat/conf/server.xml,添加server属性:
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443"
server="Custom Server Name" /> <!-- 替换为自定义名称 -->
说明:server属性值可设置为任意字符串(如MySecureTomcat),避免暴露Tomcat版本。