Skip to content


tomcat安全设置

1.关闭服务器端口:
server.xml默认有下面一行:

  1. <Server port="8005" shutdown="SHUTDOWN">

这样允许任何人只要telnet到服务器的8005端口,输入”SHUTDOWN”,然后回车,服务器立即就被关掉了。
从安全的角度上考虑,我们需要把这个shutdown指令改成一个别人不容易猜测的字符串,可以同时把端口也改了。
例如修改如下:

  1. <Server port="8005" shutdown="c1gstudio">

这样就只有在telnet到8005,并且输入”c1gstudio”才能够关闭Tomcat.
注意:这个修改不影响shutdown.bat的执行。运行shutdown.bat一样可以关闭服务器。

2.增加防火墙
更安全的方式是同时增加防火墙,来限制访问Tomcat的控制与连接器端口
你可以通过运行netstat -a来查看网络服务器socket及其他现有连接的清单
插入规则
iptables -A INPUT -p tcp -m tcp –dport 8005 -j DROP
保存规则
service iptables save
重载规则
service iptables restart

3.处理好Tomcat管理台的安全
Tomcat管理台的应用文件,默认在{Tomcat安装目录}\server\webapps下,有admin和manager两个应用。
其用户密码,在{Tomcat安装目录}\conf/tomcat-users.xml中定义。在{Tomcat安装目录}\webapps下
admin.xml和manager.xml文件定义了可以通过访问/admin和/manager进入。
默认情况下,完全可以登录tomcat管理台,造成严重安全问题
检测办法:用IE打开链接http://[IP]:[Port]/admin,以用户名admin,密码为空登录,如果成功,
说明存在问题。
解决办法:可以删除{Tomcat安装目录}\webapps下admin.xml和manager.xml文件,或者去掉用户密
码,也可以删除应用文件。

4.运行错误网页

如果找不到网页即出现404错误,会显示服务器版本号,服务器配置也一目了然,
为了避免这种情况,希望自定义设置错误页面。
设置如下:
用记事本打开\conf\web.xml文件,在文件的倒数第二行(一行之前)加入以下内容:

  1. <error-page>
  2.     <error-code>404</error-code>
  3.     <location>/404.jsp</location>
  4.   </error-page>
  5.   <error-page>
  6.     <error-code>500</error-code>
  7.     <location>/500.jsp</location>
  8.   </error-page>

在根目录下创建404.jsp和500.jsp文件

5.多重服务器的安全防护模式
当在同一台主机(或同一网络文件系统)上的 Apache httpd Web 服务器与 Tomcat 之间共享网页的实际目录时,
请留意其个别安全防护模式间的相互作用。当你有“受保护的目录”时,这会特别重要。
服务器将具有能读取彼此文件的权限。
在这些状况下,请注意 Tomcat 并不会保护如 .htaccess 的文件,而Apache也不会保护Web应用程序的 WEB-INF 或 META-INF 目录。
这些情形都有可能导致重大的安全漏洞,所以,我们建议你在使用这些特别的目录时,要格外小心。

若要让 Apache httpd 保护 WEB-INF 及 META-INF 目录,请在 httpd.conf 中加入下列内容

  1. <LocationMatch "/WEB-INF/">
  2. AllowOverride None
  3. deny from all
  4. </LocationMatch>
  5. <LocationMatch "/META-INF/">
  6. AllowOverride None
  7. deny from all
  8. </LocationMatch>

6.屏蔽目录文件自动列出的方法
conf/web.xml文件

  1. <servlet>
  2.         <servlet-name>default</servlet-name>
  3.         <servlet-class>org.apache.catalina.servlets.DefaultServlet</servlet-class>
  4.         <init-param>
  5.             <param-name>debug</param-name>
  6.             <param-value>0</param-value>
  7.         </init-param>
  8.         <init-param>
  9.             <param-name>listings</param-name>
  10.             <param-value>false</param-value>
  11.         </init-param>
  12.         <load-on-startup>1</load-on-startup>
  13.     </servlet>
  14.  
  15. <param-value>false</param-value>

这里false为不列出,true为充许列出

7.以非root用户运行

8.关闭8009端口
8009/tcp open ajp13

8009端口是tomcat和apache的mod_proxy_ajp,mod_jk沟通的端口,没有用到就关了。

tomcatpath/conf/server.xml 中的这段注释掉

  1. <!--
  2.     <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
  3.     -->

Posted in Tomcat, 技术.

Tagged with , .


One Response

Stay in touch with the conversation, subscribe to the RSS feed for comments on this post.

Continuing the Discussion

  1. Apache Tomcat 6.0.35 denial of service and information disclosure vulnerability | Information News linked to this post on 2012/06/03

    […] the the tomcat security settings optimization tomcat memory CentOs5.2 install tomcat the use , Oracle JRockit improve tomcat […]



Some HTML is OK

or, reply to this post via trackback.