防止CentOS环境下Tomcat被攻击,需从系统配置、访问控制、加密通信、监控审计等多维度入手,以下是具体措施:
$CATALINA_HOME/webapps下的所有默认应用(如docs、examples、manager、host-manager、ROOT),避免恶意代码利用默认应用漏洞部署。rm -rf /opt/tomcat/webapps/*
conf/tomcat-users.xml中的所有用户定义,防止未授权访问管理界面。conf/server.xml中的Connector节点,添加server属性(如server="MyAppServer/1.0"),隐藏Tomcat版本号,降低针对性攻击风险。<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" server="MyAppServer/1.0"/>
tomcat),并赋予Tomcat目录所有权(chown -R tomcat:tomcat /opt/tomcat),禁止以root身份运行Tomcat,避免权限提升风险。tomcat-users.xml分配最小必要角色(如仅允许管理员访问manager-gui),并通过context.xml限制访问IP(如仅允许内网IP访问管理界面)。<!-- tomcat-users.xml -->
<role rolename="manager-gui"/>
<user username="admin" password="strong_password" roles="manager-gui"/>
<!-- context.xml(manager应用目录下) -->
<Context antiResourceLocking="false" privileged="true">
<Valve className="org.apache.catalina.valves.RemoteAddrValve" allow="192\.168\.1\.\d+" />
</Context>
<!-- conf/server.xml -->
<Connector port="8081" protocol="HTTP/1.1" .../>
server.xml中注释AjpConnector。<!-- <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" /> -->
server.xml中设置autoDeploy="false"和unpackWARs="false",禁止Tomcat自动解压和部署WAR文件,避免恶意WAR文件上传攻击。<Host name="localhost" appBase="webapps" unpackWARs="false" autoDeploy="false">
web.xml(全局或应用级),设置listings="false",防止目录结构泄露敏感文件(如WEB-INF下的配置文件)。<servlet>
<servlet-name>default</servlet-name>
<servlet-class>org.apache.catalina.servlets.DefaultServlet</servlet-class>
<init-param>
<param-name>listings</param-name>
<param-value>false</param-value>
</init-param>
</servlet>
keytool生成自签名证书(或使用CA证书),修改server.xml添加HTTPS连接器(默认端口8443),强制应用使用HTTPS传输数据。keytool -genkeypair -alias tomcat -keyalg RSA -keysize 2048 -keystore /opt/tomcat/conf/tomcat.keystore -validity 3650
<!-- conf/server.xml -->
<Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol"
SSLEnabled="true" scheme="https" secure="true"
keystoreFile="/opt/tomcat/conf/tomcat.keystore"
keystorePass="your_keystore_password"/>
firewalld限制Tomcat端口(如8081、8443)的访问,仅允许信任IP地址访问(如公司内网IP)。sudo firewall-cmd --permanent --zone=public --add-port=8081/tcp
sudo firewall-cmd --permanent --zone=public --add-rich-rule='rule family="ipv4" source address="192.168.1.100" port protocol="tcp" port="8081" accept'
sudo firewall-cmd --reload
httpd_sys_content_t),并允许Tomcat访问网络。sudo chcon -Rt httpd_sys_content_t /opt/tomcat/webapps
sudo chcon -Rt httpd_sys_rw_content_t /opt/tomcat/logs
sudo setsebool -P httpd_can_network_connect 1
logging.properties文件,开启DEBUG级别日志(如org.apache.catalina),记录访问、错误等信息。grep、awk等工具分析logs/catalina.out、logs/localhost_access_log.*.txt,监控异常访问(如频繁的404错误、异地IP登录)。通过以上措施,可显著提升CentOS环境下Tomcat的安全性,降低被攻击的风险。需注意的是,安全配置需根据实际业务需求调整(如管理界面IP限制、证书使用),避免过度限制影响正常使用。