tomcat 安全

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

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

<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文件,在文件的倒数第二行(一行之前)加入以下内容:

<error-page>
<error-code>404</error-code>
<location>/404.jsp</location>
</error-page>
<error-page>
<error-code>500</error-code>
<location>/500.jsp</location>
</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 中加入下列内容

<LocationMatch "/WEB-INF/">
AllowOverride None
deny from all
</LocationMatch>
<LocationMatch "/META-INF/">
AllowOverride None
deny from all
</LocationMatch>
6.屏蔽目录文件自动列出的方法
conf/web.xml文件

<servlet>
<servlet-name>default</servlet-name>
<servlet-class>org.apache.catalina.servlets.DefaultServlet</servlet-class>
<init-param>
<param-name>debug</param-name>
<param-value>0</param-value>
</init-param>
<init-param>
<param-name>listings</param-name>
<param-value>false</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>

<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 中的这段注释掉

<!--
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
-->

时间: 2024-10-22 14:25:26

tomcat 安全的相关文章

解决myeclipse中tomcat启动报错A configuration error occurred during startup. Please verify the preference field whit the prompt:Cannot connect to VM

原因一:可能是tomcat里面文件不小心被删除了.尝试更换tomcat, 解决步骤:重新下载tomcat并解压.点击windows——> preferences——>tomcat重新配置. 原因二:myeclipse系统自带jdk出问题 解决步骤:重新下载tomcat并解压.点击windows——> preferences——>tomcat——>jdk,配置成你自己的jdk 原因三:由于软件冲突导致的错误 解决步骤: 找到myeclipse.ini文件 加上-Djava.ne

eclipse部署tomcat修改项目访问路径(虚拟路径)

原文参考: http://www.educity.cn/wenda/147993.html http://blog.163.com/java_zf/blog/static/19926038420129240314546/ tomcat部署web项目(eclipse自动部署项目到tomcat,访问URL中不包含部署名) 最近项目中需要把项目部署到tomcat中,并且访问路径中不包含不署名,且想实现Eclipse中的自动部署,扒了好久资料,最终实现了自己的需求,呵呵,如下: 1. 把项目contex

Tomcat启动分析(我们为什么要配置CATALINA_HOME环境变量)

原文:http://www.cnblogs.com/heshan664754022/archive/2013/03/27/2984357.html Tomcat启动分析(我们为什么要配置CATALINA_HOME环境变量) 用文本编辑工具打开用于启动Tomcat的批处理文件startup.bat,仔细阅读.在这个文件中,首先判断CATALINA_HOME环境变量是否为空,如果为空,就将当前目录设为CATALINA_HOME的值.接着判断当前目录下是否存在bin\catalina.bat,如果文件

Tomcat配置远程调试端口(windows、Linux)

当我们需要定位生产环境问题,而日志又不清晰的情况下,我们可以借助Tomcat提供的远程调试,设置如下: // Linxu系统: apach/bin/startup.sh开始处中增加如下内容: declare -x CATALINA_OPTS="-server -Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=8081" // Windows系统:

windows10上使用一个tomcat部署2个项目

前言:目前想在本机部署2个项目,网上查了之后,写下本篇随笔 1.准备工作 2.操作方法 3.运行2个项目 1.准备工作 2个war包(一个jprss.war和一个jenkins.war) 1个tomcat环境 2.操作方法 第一步:复制tomcat中的webapps文件夹,命名为webapps1和webapps2 第二步:复制tomcat\conf\Catalina文件夹,命名为Catalina1和Catalina2 第三步:修改tomcat中的server.xml文件: 将从<Service

Tomcat JDBC Pool使用说明

Maven依赖 <dependency>   <groupId>org.apache.tomcat</groupId>   <artifactId>tomcat-jdbc</artifactId>   <version>8.5.9</version> </dependency> 最新版本为9.0,推荐使用8.5.9稳定版 常用配置 连接池配置项很多,下面只列出了推荐配置,项目组可根据自身情况进行增减 <b

tomcat启动过程报the JDBC Driver has been forcibly unregistered问题的修复过程

最近两天在整理关于flume的总结文档,没有启动过tomcat.昨天晚上部署启动,发现报了如题的错误,全文如下: 严重: The web application [/oa-deploy] registered the JBDC driver [com.microsoft.sqlserver.jdbc.SQLServerDriver] but failed to unregister it when the web application was stopped. To prevent a mem

eclipse中配置的tomcat 启动正常 但是访问报404错误

问题描述: 在eclipse中配置的Tomcat,启动是正常的,控制台显示启动成功,也没有报任何错误信息,但是访问的时候就报404错误,然后直接在bin目录下启动startup.bat的方式就是正常的.然后就很纳闷,之后在网上搜了下资料,说是Eclipse的配置出了问题. 解决方案: 1.如果Server里的tomcat启动了,需要先停掉.然后再移除添加的项目 2.之后双击server中配置的tomcat服务器,会弹出如下界面. 3.在Server Locations配置中选择第二个选项,use

SpringBoot tomcat

该文的前提是已经可以在控制台运行成功,有些时候想放在tomcat里运行 大致分为如下几步 1.配置文件更改 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> <!-- <artifactId>spring-boot-starter</artifactId>-

cmd启动和停止tomcat

首先进入Tomcat安装目录下的bin目录 一. cmd命令启动Tomcat服务器: start.bat 补充:若这样启动了Tomcat服务器,此时再去eclipse里面在该服务器上运行javaweb项目,会报错(端口在使用,因为在eclipse上运行项目的时候会再次启动服务器),因此需要先关闭服务器后再去启动eclipse项目上的tomcat服务器 二.cmd命令停止Tomcat服务器: shutdown.bat