怎么防止别人通过tomcat改端口号端口攻击

Tomcat 安全配置 - CSDN博客
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 Nonedeny from all&/LocationMatch&&LocationMatch &/META-INF/&&AllowOverride Nonedeny 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& /&&& &--&
Tomcat 是 Apache软件基金会下的一个免费、开源的WEB应用服务器,它可以运行在 Linux 和 Windows 等多个平台上,由于其性能稳定、扩展性好、免费等特点深受广大用户喜爱。目前,很多互联网应用和企业应用都部署在 Tomcat 服务器上,比如我们公司,哈。
之前我们 tomcat 都采用的是默认的配置,因此在安全方面还是有所隐患的。上周对测试环境的所有服务器的tomcat都做了安全优化,其间也粗略做了一些性能优化,这里就简单记录分享下!
一、版本安全
升级当前的tomcat版本为最新稳定版本。故名思议,最新稳定版本就要兼顾最新和稳定这两个概念。一个稳定的版本,是需要时间沉淀的,而最新又是相对于稳定版而言的最新。因此我们一般会选择当前大版本中,最新版本往前推几个版本或者往前推几个月出的版本。
目前,企业常用的tomcat大版本为6.0和7.0版本,8.0版本虽然已经出了很久了,但是仍然不建议使用。
在升级版本中,需要注意的事情有两点:
1、尽量避免跨大版本的升级
2、将当前老版本 tomcat 的server.xml、catalina.sh、web.xml和tomcat-users.xml文件进行备份,然后部署完新版本的 tomcat 之后,将这些配置文件覆盖过去即可,然后停掉旧版本,启动新版本即可完成升级操作。
二、隐藏版本信息
为了避免黑客针对某些版本进行攻击,因此我们需要隐藏或者伪装 Tomcat 的版本信息。
默认 Tomcat 的版本信息如下:
针对该信息的显示是由一个jar包控制的,该jar包存放在 Tomcat 安装目录下的lib目录下,名称为 catalina.jar。
我们可以通过 jar xf 命令解压这个 jar 包会得到两个目录 META-INF 和 org ,&通过修改 org/apache/catalina/util/ServerInfo.properties 文件中的 serverinfo 字段来实现来更改我们tomcat的版本信息。
文件信息如下:
[root@localhost ~]
=Apache Tomcat/7.0.53
server.number=7.0.53.0
server.built=Mar 25 2014 06:20:16
当然,还有另外一种方法来实现隐藏或伪装Tomcat的版本信息,不过本质和上面一样,操作如下:
[root@localhost ~]
[root@localhost lib]
[root@localhost lib]
[root@localhost util]
修改完毕之后,重启 Tomcat即可看到效果!
效果如下:
三、优化 web.xml
servlet与其它适用于整个Web应用程序设置的配置文件,必须符合servlet规范的标准格式。通过它可以配置你web应用的相关选项,tomcat在启动的时候会读取这个文件,完成你开发的系统的一些初始化操作。
它可以做如下事情:&
1、提供基于 servlet 的相关配置
2、增加监听器,监控session或在tomcat启动时,加载一些你希望加载的资源。比如创建数据库连接池等等
3、设置session过期时间,tomcat默认是30分钟
4、更改应用的默认网页,常用为index.html/index.jsp等
5、增加过滤器,做一些你希望的过滤操作,比如敏感词汇的过滤
6、增加一些 jstl(标准标签库)的定义,方便在jsp中直接includ进来,直接使用这些标签
7、struts,spring或hibernate的一些配置等等
下面摘录下O'REILLY 的《Tomcat 权威指南》中的一段话:
web.xml 的文件格式定义在 Servlet 规范中,因此所有符合 Servlet 规范的 Java Servlet Container 都会用到它。当 Tomcat 部署应用程序时(在激活过程中,或加载应用程序后),它都会读取&通用的conf/web.xml&,然后再读取web应用程序中的&WEB-INF/web.xml&。其实根据他们的位置,我们就可以知道,&conf/web.xml文件中的设定会应用于所有的web应用程序,而某些web应用程序的WEB-INF/web.xml中的设定只应用于该应用程序本身&。&
& & & &如果没有WEB-INF/web.xml文件,tomcat会输出找不到的消息,但仍然会部署并使用web应用程序,servlet规范的作者想要实现一种能迅速并简易设定新范围的方法,以用作测试,因此,这个web.xml并不是必要的,不过通常最好还是让每一个上线的web应用程序都有一个自己的WEB-INF/web.xml,即使它只用做识别,但我想这是一个好的习惯。
由于Servlet规范主要是对于web程序员,而非系统管理员使用的。因此,对于运维来讲,我们可能更关心的是站点的默认网页、&自定义错误页面、禁止列目录等功能。
由于,正常生产环境中,肯定不会直接由tomcat对公网提供服务,前端肯定放的有apache或者nginx。因此,针对站点的默认主页和自定义错误页面,我们均在前端的apache或者nginx中做。另外,公司也可能交由程序猿在项目内的&WEB-INF/web.xml中去做定义。
在tomcat新版本中,自动默认已经禁止列目录功能。&
下面,我列出几种常见功能,在web.xml中的表现形式:
站点默认主页:
自定义错误页面:
定义会话超时时间:
禁止列目录:
四、优化&tomcat-user.xml
该文件含有用户名、角色以及密码的清单文件。负责提供webapps下manager项目的登录认证管理。
在生产环境中,我们需要将该文件全部注释。
注释效果如下:
五、优化&server.xml
Tomcat的主配置文件,该文件中包含很多主要元素,比如Service、Connector、Host等,这些元素都会创建软件&对象&、排序及进程管道中设置的这些元素嵌套方,使我们可以&执行过滤、分组等工作。
如果要对改文件做优化,我们需要先了解该文件的结构!
server.xml的结构图:
该文件描述了如何启动Tomcat Server
针对该文件,我们需要优化的点有如下:
1、&maxThreads 连接数限制
maxThreads 是 Tomcat 所能接受最大连接数。一般设置不要超过8000以上,如果你的网站访问量非常大可能使用运行多个Tomcat实例的方法,&即,在一个服务器上启动多个tomcat然后做负载均衡处理。
这里还需要注意的一点是,tomcat 和 php 不同。php可以按照cpu和内存的情况去配置连接数,上万很正常。而 java 还需要注意 jvm 的参数配置。如果不注意就会因为jvm参数过小而崩溃。
2、多虚拟主机
强烈建议不要使用 Tomcat 的虚拟主机,推荐每个站点使用一个实例。即,可以启动多个 Tomcat,而不是启动一个 Tomcat 里面包含多个虚拟主机。因为 Tomcat是多线程,共享内存,任何一个虚拟主机中的应用崩溃,都会影响到所有应用程序。虽然采用多实例的方式会产生过多的开销,但至少保障了应用程序的隔离和安全。
3、压错传输
tomcat作为一个应用服务器,也是支持&gzip 压缩功能的。我们可以在 server.xml 配置文件中的 Connector 节点中配置如下参数,来实现对指定资源类型进行压缩。
compression=&on&
compressionMinSize=&50&
noCompressionUserAgents=&gozilla, traviata&
compressableMimeType=&text/html,text/xml,text/javascript,text/css,text/plain& 
Tomcat 的压缩是在客户端请求服务器对应资源后,从服务器端将资源文件压缩,再输出到客户端,由客户端的浏览器负责解压缩并浏览。相对于普通的浏览过程 HTML、CSS、Javascript和Text,它可以节省40% 左右的流量。更为重要的是,它可以对动态生成的,包括CGI、PHP、JSP、ASP、Servlet,SHTML等输出的网页也能进行压缩,压缩效率也很高。但是,&压缩会增加 Tomcat 的负担,因此最好采用Nginx + Tomcat 或者 Apache + Tomcat 方式,将压缩的任务交由
Nginx/Apache 去做。
4、管理AJP端口
AJP是为 Tomcat 与 HTTP 服务器之间通信而定制的协议,能提供较高的通信速度和效率。如果tomcat前端放的是apache的时候,会使用到AJP这个连接器。由于我们公司前端是由nginx做的反向代理,因此不使用此连接器,因此需要注销掉该连接器。
port=&8009& protocol=&AJP/1.3& redirectPort=&8443& /&
5、更改关闭 Tomcat 实例的指令
server.xml中定义了可以直接关闭 Tomcat 实例的管理端口。我们通过 telnet 连接上该端口之后,输入 SHUTDOWN (此为默认关闭指令)即可关闭 Tomcat 实例(注意,此时虽然实例关闭了,但是进程还是存在的)。由于默认关闭 Tomcat 的端口和指令都很简单。默认端口为8005,指令为SHUTDOWN 。因此我们需要将关闭指令修改复杂一点。
当然,在新版的 Tomcat 中该端口仅监听在127.0.0.1上,因此大家也不必担心。除非黑客登陆到tomcat本机去执行关闭操作。
修改实例:
&Server port=&8005& shutdow&n=&9SDKJ29jksjf23sjf0LSDF92JKS9DKkjsd&&
6、更改 Tomcat 的服务监听端口
一般公司的 Tomcat 都是放在内网的,因此我们针对 Tomcat 服务的监听地址都是内网地址。
修改实例:
port=&8080& address=&172.16.100.1& /&
7、关闭war自动部署
默认 Tomcat 是开启了对war包的热部署的。为了防止被植入木马等恶意程序,因此我们要关闭自动部署。
修改实例:
name=&localhost&
appBase=&&
unpackWARs=&false& autoDeploy=&false&&
六、禁用 Tomcat 管理页面
我们线上是不使用 Tomcat 默认提供的管理页面的,因此都会在初始化的时候就把这些页面删掉。这些页面是存放在 Tomcat 安装目录下的webapps目录下的。
我们只需要删除该目录下的所有文件即可。
当然,还有涉及管理页面的2个配置文件&host-manager.xml 和 manager.xml 也需要一并删掉。这两个文件存放在 Tomcat 安装目录下的conf/Catalina/localhost目录下。
七、用普通用户启动 Tomcat
为了进一步安全,我们不建议使用 root 来启动 Tomcat。这边建议使用专用用户 tomcat 或者 nobody 用户来启动 Tomcat。
在启动之前,需要对我们的tomcat 安装目录下所有文件的属主和属组都设置为指定用户。
八、分离 Tomcat 和项目的用户
为了防止&Tomcat 被植入 web shell 程序后,可以修改项目文件。因此我们要将 Tomcat 和项目的属主做分离,这样子,即便被搞,他也无法创建和编辑项目文件。
本文已收录于以下专栏:
相关文章推荐
Tomcat的安全
生产环境tomcat规范配置
0x01 基本配置
1 删除默认目录
安装完tomcat后,删除$CATALINA_HOME/webapps下默认的所有目录文件
rm -rf /srv/apache-tomcat/w...
转自:http://drops.wooyun.org/%E8%BF%90%E7%BB%B4%E5%AE%89%E5%85%A8/8519
tomcat是一个开源Web服务器,基于Tomcat...
一、Tomcat 安装
官网:http://tomcat.apache.org/
Tomcat8官网下载地址:http://tomcat.apache.org/download-80.cgi...
小程序部署上去后,用户反馈说存在注入入侵等风险.反省之,记录下来
最省事的办法,直接删除%tomcatRoot%/webapps下的所有文件夹,仅仅保留自己部署的工程
前提是你不需要监...
启动Tomcat服务器报错:Several ports (, 8009) required by Tomcat v5.5 Server at localhost are alrea...
在阅读“tomcat启动分析” 的时候注意到server.xml配置文件有这么一行:从配置大致可以判断这个端口大致适用于关闭tomcat。于是乎telnet 到8005端口然后执行“SHUTDOWN”...
本章主要介绍的是tomcat,security的相关知识。推荐大家复习一下pipeline和servlet中
principal, realm, role等操作。那么,我们首先先...
Tomcat 是 Apache软件基金会下的一个免费、开源的WEB应用服务器,它可以运行在 Linux 和 Windows 等多个平台上,由于其性能稳定、扩展性好、免费等特点深受广大用户喜爱。目前,很...
http://www.blogjava.net/asktalkhttp://blog.csdn.net/fasttalk请点击下面的连接进入:J2EE安全策略:为tomcat页面设置访问权限(j_se...
他的最新文章
讲师:钟钦成
讲师:宋宝华
您举报文章:
举报原因:
原文地址:
原因补充:
(最多只允许输入30个字)& &&&tomcat经常端口冲突,如何查看本机已使用的端口
tomcat经常端口冲突,如何查看本机已使用的端口
悬赏2青鸟豆&|&浏览659
才能回答问题
找度娘啊/article/380abd0a4e8b1f1d90192cd7.html
安装Tomcat后,启动tomcat时,会出现: 13:46:57 mons.modeler.Registry loadRegistry
本周答题榜
本周回答44题
本周回答20题
本周回答8题
本周回答6题
本周回答5题
本周回答4题
本周回答3题
本周回答2题
Beijing Aptech Beida Jade Bird Information Technology Co.,Ltd北大青鸟IT教育 北京阿博泰克北大青鸟信息技术有限公司 版权所有
京ICP备号-3博客分类:
无论通过startup.bat或者通过eclipse等IDE启动tomcat时候,往往会出现提示说:tomcat端口被占用,有以下两种解决方案:
1、cmd进入命令行窗口,输入netstat -anb,列出的就是各种程序使用的端口情况,从中你可以查找得到端口是被哪个程序无情的占用了。然后你就可以“制裁”他了,制裁方法:找到他,然后在进程管理器的“进程”选项卡里面将其kill掉,问题解决。
2、如果你不嫌麻烦,那好:找到%tomcat_home%/conf/server.xml,然后更改里面的端口号,这个就不详述了,我也很少用。
luanxiyuan
浏览: 569396 次
来自: 大连
[flash=200,200][url][img][list] ...
楼主 你这个有问题 在 mapper 配置那段代码之后 ,不通 ...
如果不在mapper中写 &cache type=&qu ...
看到这个终于搞好了 多谢哈
很好用。O(∩_∩)O谢谢分享!!!
(window.slotbydup=window.slotbydup || []).push({
id: '4773203',
container: s,
size: '200,200',
display: 'inlay-fix'Tomcat直接访问ip_不输入项目名称和端口号_访问指定web项目的
阳光网【java试题】 编辑:admin
  如何通过修改tomcat的配置,实现通过IP地址或者域名直接访问tomcat中应用呢?下面是阳光网小编为大家推荐一些tomcat设置IP地址或者域名访问的方法,希望大家有用哦。
  访问指定web项目的方法
  要实现省略8080端口,也不输入项目名,输入ip直接访问项目,需要实现在
  上层的apache tomcat服务器的配置中,做出指定。
  第一步在apache-tomcat-6.0.xx\conf(找到你特定版本的tomcat),找到目录下的server.xml文件,
  找到:
  unpackWARs=&true& autoDeploy=&true&
  xmlValidation=&false& xmlNamespaceAware=&false&&
  在下面换行添加以下语句,将localhost或是ip,重定向到你的目录。
  重启tomcat,这样可以不输入项目了,还有人说了8080,我也不想输入了。
  或者要发布,改到默认的80端口怎么办,很简单,还是在server.xml文件,找到
  connectionTimeout=&20000&
  将8080改为80,【注意:前提是80端口未被占用】,重启tomcat,就可以。
  tomcat设置IP地址或者域名访问的方法
  找到tomcat的主目录,进入conf文件夹,找到server.xml文件,并打开:
  修改tomcat的监听端口为80端口:
  在server.xml文件中找到:
  修改成:
  如图:
  在server.xml文件中找到:
  把在第3点中找到的内容中的 localhost 替换成你想修改的IP地址或者域名地址。如图,是我修改后的配置:
  在标签中间,添加如下内容:
  说明:docBase的值也可以是绝对路径。
  如图,是我修改后的配置:
  在webapps文件夹的情况如图:
  配置完成,赶紧测试一把吧~我成功了!
猜你感兴趣:
[Tomcat直接访问ip_不输入项目名称和端口号_访问指定web项目的]相关的文章
【java试题】图文推荐
下一篇:没有了链接地址:
以前只知道当tomcat端口号冲突了如何修改tomcat默认的8080端口号
今天遇到个情况,装了个BO,自带个tomcat,这时就需要修改三个地方
修改Tomcat的端口号:
&& 在默认情况下,tomcat的端口是8080,如果出现8080端口号冲突,用如下方法可以修改Tomcat的端口号:
首先: 在Tomcat的根(安装)目录下,有一个conf文件夹,双击进入conf文件夹,在里面找到Server.xml文件,打开该文件。
其次:在文件中找到如下文本:&Connector port="8080" protocol="HTTP/1.1"&&&&&&&&&&&&&&& maxThreads="150" connectionTimeout="20000"&&&&&&&&&&&&&&& redirectPort="8443" /&也有可能是这样的:&Connector port="8080" maxThreads="150" minSpareThreads="25" maxSpareThreads="75" enableLookups="false" redirectPort="8443" acceptCount="100" debug="0" connectionTimeout="20000"&disableUploadTimeout="true" /&等等;
最后:将port="8080"改为其它的就可以了。如port="8081"等。保存server.xml文件,重新启动Tomcat服务器,Tomcat就可以使用8081端口了。
注意,有的时候要使用两个tomcat,那么就需要修改其中的一个的端口号才能使得两个同时工作。
修改了上面的以后,还要修改两处:(1)将 &Connector port="8009" enableLookups="false" redirectPort="8443" debug="0"protocol="AJP/1.3" /&的8009改为其它的端口。
(2) 继续将&Server port="8005" shutdown="SHUTDOWN" debug="0"&的8005改为其它的端口。经过以上3个修改,应该就可以了。
阅读(...) 评论()}

我要回帖

更多关于 tomcat 防止ddos攻击 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信