首次安装Tomcat后,需立即执行以下操作减少初始风险:
webapps目录下所有默认部署的应用(如docs、examples、host-manager、manager、ROOT),避免恶意代码通过默认应用部署入口侵入。conf/tomcat-users.xml中的所有用户配置,后续仅添加必要的管理用户(如仅允许运维人员访问管理界面)。conf/server.xml中的Connector标签,添加server属性(如server="MySecureTomcat/1.0"),防止攻击者通过HTTP响应头获取Tomcat版本,降低针对性攻击概率。tomcat_user),并通过chown -R tomcat_user:tomcat_user /opt/tomcat赋予其对Tomcat目录的所有权,绝对禁止以root用户启动Tomcat(避免进程提权风险)。/etc、/root),通过chmod限制Tomcat目录的访问权限(如chmod -R 750 /opt/tomcat)。conf/tomcat-users.xml中仅为必要人员创建管理角色(如admin-gui),并限制访问IP(如在manager应用的META-INF/context.xml中添加RemoteAddrValve,仅允许内网IP访问管理界面)。server.xml中的HTTP端口(默认8080)修改为非标准端口(如8081),减少被自动化扫描工具发现的概率;若需使用80端口,可通过Nginx反向代理转发(如proxy_pass http://localhost:8081)。server.xml中将<Connector port="8009" protocol="AJP/1.3" .../>的port设为-1),避免通过AJP协议发起的攻击;关闭自动部署(server.xml中设置autoDeploy="false"、unpackWARs="false"),防止恶意WAR文件自动解压部署。启用SSL/TLS加密,确保数据传输过程中的机密性与完整性:
openssl req -newkey rsa:2048 -nodes -keyout /etc/pki/tls/private/tomcat.key -x509 -days 365 -out /etc/pki/tls/certs/tomcat.crt。server.xml,添加HTTPS连接器,示例如下:<Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol"
SSLEnabled="true" scheme="https" secure="true"
keystoreFile="/etc/pki/tls/private/tomcat.key"
keystorePass="your_password"
clientAuth="false" sslProtocol="TLS"/>
生产环境中建议使用CA签发的证书,并开启clientAuth="true"实现双向认证(客户端需提供证书)。webapps/your_app/WEB-INF/web.xml中添加security-constraint,禁止PUT、DELETE、TRACE等危险方法,示例如下:<security-constraint>
<web-resource-collection>
<web-resource-name>Restricted Methods</web-resource-name>
<url-pattern>/*</url-pattern>
<http-method>PUT</http-method>
<http-method>DELETE</http-method>
<http-method>TRACE</http-method>
</web-resource-collection>
<auth-constraint/>
</security-constraint>
web.xml中设置listings="false",避免通过浏览器直接访问目录时泄露敏感文件(如WEB-INF下的配置文件)。conf/context.xml中添加useHttpOnly="true"、secure="true"(仅HTTPS传输),防止JavaScript窃取Session ID(会话劫持),示例如下:<Context sessionCookieHttpOnly="true" sessionCookieSecure="true">
firewalld限制Tomcat端口的访问,仅允许信任IP地址访问(如管理界面仅允许运维IP),命令示例:sudo firewall-cmd --zone=public --add-port=8081/tcp --permanent # 允许自定义HTTP端口
sudo firewall-cmd --zone=public --add-port=8443/tcp --permanent # 允许HTTPS端口
sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.1.100" port port="8081" protocol="tcp" accept' # 限制管理界面IP
sudo firewall-cmd --reload
server.xml中AccessLogValve)和错误日志(conf/logging.properties),记录访问源IP、请求URL、响应状态码等信息,示例如下:<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
prefix="localhost_access_log" suffix=".txt"
pattern="%h %l %u %t "%r" %s %b" resolveHosts="false"/>
grep、awk等工具分析日志,监控异常行为(如频繁的404请求、大量POST请求、异地IP访问管理界面),及时响应安全事件(如封禁恶意IP)。通过以上措施的综合应用,可显著提升CentOS环境中Tomcat的安全性,降低被攻击的风险。需注意的是,安全是持续过程,需定期复查配置(如每季度检查防火墙规则、每月更新补丁)并根据业务变化调整安全策略。