Skip to content

Tomcat安全配置

lukeychen edited this page Dec 16, 2024 · 1 revision

Tomcat安全加固

  1. 务必专门创建一个普通用户来运行tomcat服务,防止入侵者直接拿到root权限的webshell。甚至直接禁用tomcat提供的默认web管理端。
$ mkdir tmp
$ mv docs/ examples/ host-manager/ manager/ ROOT/ ./tmp/
  1. 修改管理端口及用于关闭服务的字符串,默认为8005,SHUTDOWN,实际中,一般也不会用这种方式来关闭tomcat,所以,可以把关闭字符串设的更长更随机一些,不过,好在最新版本tomcat默认只监听在127.0.0.1,所以对此项不必太过紧张
<Server port="9301" shutdown="a8HelEd45fm43LseDF">
  1. 修改AJP协议通信端口,其实你可以直接把该项注释掉,因为绝大多数情况下我们都只会使用http协议进行反向代理,而不会用AJP协议
<!-- <Connector port="8010" protocol="AJP/1.3" redirectPort="8443" />-->
  1. 禁止tomcat目录遍历,将param-value标签中的值改为false,其实默认就是禁止的,只不过为了保险,还是需要再确认一下
  <init-param>
    <param-name>listings</param-name>
    <param-value>false</param-value>   <!-- false即表示禁止目录遍历 --> 
  </init-param>
  1. 隐藏服务器版本信息,为了能一定程度上防止被人用0day批量打,我们需要将tomcat的详细版本稍微隐藏下,比如,在出现403,404,500这样的状态码时,就很容易会暴露我们web服务器的详细版本,当然,你也可以直接把指定的状态码重定向到指定的页面上,在 webapps\manger 目录中创建相应的401.html、404.htm、500.htm 文件,然后在 conf/web.xml 文件的最后一行之前添加下列代码:
<error-page>
  <error-code>401</error-code>
  <location>/401.html</location>
</error-page>
<error-page>
  <error-code>404</error-code>
  <location>/404.html</location>
</error-page>
<error-page>
  <error-code>500</error-code>
  <location>/500.html</location>
</error-page>
  tomcat/lib/catalina.jar中org/apache/catalina/util/ServerInfo.properties
  server.info=Microsoft-IIS/7.5 // xxx
  server.number=7.5 // xxx
  server.built=Nov 27 2017 13:05:30 UTC // xxx
  1. 最好把所有Host组件中的自动部署选项全部关掉(开发过程中可以开启)
<Host name="www.sec.org" appBase="/data/javaweb/secapp" autoDeploy="false" unpackWARs="true">

Test

Clone this wiki locally