在CentOS系统下对Tomcat进行安全设置,可以遵循以下步骤:
删除默认目录:首次安装完成后,删除 /srv/apache-tomcat/webapps
下的所有内容,以防止恶意代码的部署。
rm -rf /srv/apache-tomcat/webapps/*
注释或删除 tomcat-users.xml
中的所有用户权限:这样可以限制对Tomcat管理界面的访问,提高安全性。
# cat conf/tomcat-users.xml
# <tomcat-users>
# <!-- <role rolename="manager-gui"/>
# <role rolename="admin-gui"/>
# <user username="admin" password="password" roles="manager-gui,admin-gui"/>
# </tomcat-users>
隐藏Tomcat版本信息:通过修改 server.xml
文件中的 server
属性,可以隐藏Tomcat的版本信息,防止信息泄露。
vim $CATALINA_HOME/conf/server.xml
在 Connector
节点添加 server
属性:
<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443"
maxThreads="8192" minSpareThreads="64" maxSpareThreads="128"
acceptCount="128" enableLookups="false" server="MyAppServer/1.0"/>
使用非root用户启动Tomcat:创建一个新用户并赋予其Tomcat目录的权限,以避免使用root用户启动Tomcat。
useradd -r -m -u -d /opt/tomcat -s /bin/false tomcatsudo chown -R tomcat:tomcat /opt/tomcat
配置防火墙:允许特定端口(如8080)的访问,并禁止其他端口的访问。
sudo firewall-cmd --zone public --add-port 8080/tcp --permanent
sudo firewall-cmd --reload
关闭自动部署:在 server.xml
中设置 unpackWARs="false"
和 autoDeploy="false"
,以防止恶意WAR文件的自动部署。
<Context path="/manager" docBase="/srv/apache-tomcat/webapps/manager" antiResourceLocking="false" privileged="true">
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" prefix="manager" suffix=".access_log" pattern="%h %l %u %t "%r" %s %b"/>
</Context>
修改JSESSIONID:将JSESSIONID改为PHPSESSID,以减少会话劫持的风险。
<Context sessionCookiePath="/myapp" sessionCookieHttpOnly="true" sessionCookieSecure="true"/>
server.xml
文件:启用HTTPS协议,确保数据在传输过程中的安全性。<Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol" maxThreads="150" SSLEnabled="true" scheme="https" secure="true" clientAuth="false" sslProtocol="TLS" keystoreFile="/path/to/your/keystore" keystorePass="yourKeystorePassword"/>
设置目录权限:确保Tomcat的应用程序部署目录和配置文件目录的权限设置正确,防止未经授权的访问和修改。
sudo chown -R tomcat:tomcat /opt/tomcat
sudo chmod -R 755 /opt/tomcat/bin/*.sh
禁用目录列表:在 web.xml
中配置 servlet
元素,设置 listings="false"
,防止目录列表泄露敏感信息。
<servlet-mapping>
<servlet-name>default</servlet-name>
<url-pattern>/</url-pattern>
<dispatcher>REQUEST</dispatcher>
<dispatcher>FORWARD</dispatcher>
<listings>false</listings>
</servlet-mapping>
启用详细日志:配置Tomcat的日志记录功能,记录详细的访问日志和操作日志,便于后续的安全审计和问题排查。
定期更新与补丁管理:保持Tomcat及其依赖组件的最新状态,及时应用安全补丁。
iptables
或 firewalld
)限制对Tomcat端口的访问,只允许必要的IP地址访问。sudo firewall-cmd --zone public --add-port 8080/tcp --permanent
sudo firewall-cmd --reload
catalina.sh
或 catalina.bat
中添加安全管理器,限制应用程序的权限,增强系统的安全性。通过上述措施,可以显著提高Tomcat在CentOS系统上的安全性,减少潜在的安全风险。