时间:2017-12-12 点击: 次 来源:网络 作者:佚名 - 小 + 大
一、tomcat防止恶意攻击1.tomcat的管理平台(manager)本身就是一个web 应用,可以使用localhost:8080/manager/html 访问 Tomcat8下roles="manager-gui"角色失效,暂未找到原因,可用roles="admin-gui"角色进入 该应用程序支持以下功能 Ø 从WAR文件的上传内容部署新的Web应用程序。 Ø 从服务器文件系统在指定的上下文路径上部署新的Web应用程序。 Ø 列出当前部署的Web应用程序以及这些Web应用程序当前处于活动状态的会话。 Ø 重新加载现有的Web应用程序,以反映/WEB-INF/classes或更改内容/WEB-INF/lib。 Ø 列出OS和JVM属性值。 Ø 列出可用的全局JNDI资源,用于准备<ResourceLink>嵌套在<Context>部署描述中的元素的部署工具。 Ø 启动一个已停止的应用程序(从而使其再次可用)。 Ø 停止现有的应用程序(以便它变得不可用),但不要取消部署它。 Ø 取消部署Web应用程序并删除其文档基目录(除非从文件系统部署)。 二、内存溢出解决办法1.内存溢出分:java.lang.OutOfMemory和java.lang.OutOfMemoryError: PermGen space两种报错。一般堆内存太小会报java.lang.OutOfMemory错误,而非堆内存太小会报java.lang.OutOfMemoryError: PermGen space错误 Ø 堆内存:是在 Java 虚拟机启动时创建的,是Java代码可及的内存,是留给开发人员使用的。 Ø 非堆内存:在JVM中堆之外的内存称为非堆内存(Non-heap memory),是JVM留给 自己用的 ,所以方法区、JVM内部处理或优化所需的内存(如JIT编译后的代码缓存)、每个类结构(如运行时常数池、字段和方法数据)以及方法和构造方法 的代码都在非堆内存中。 2.JVM各参数含义: Ø -vmargs -Xms128M -Xmx512M -XX:PermSize=64M -XX:MaxPermSize=128M Ø -vmargs 说明后面是VM的参数,所以后面的其实都是JVM的参数了 Ø -Xms128m JVM初始分配的堆内存 Ø -Xmx512m JVM最大允许分配的堆内存,按需分配 Ø -XX:PermSize=64M JVM初始分配的非堆内存 Ø -XX:MaxPermSize=128M JVM最大允许分配的非堆内存,按需分配 3、修改JVM参数: 分三种形式: a) 部署在eclipse开发环境下开发运行的。 b) 部署在服务器tomcat下的以startup.bat、startup.sh启动方式运行的。 c) 部署在tomcat下做成Windows服务启动方式运行的。 l 第一种:Windows -> Preferences -> Java -> Installed JREs -> Edit->在 l 第二种:在tomcat 目录下的bin目录下的catalina.bat打开编辑,搜索 Set "JAVA_OPTS=%JAVA_OPTS%%LOGGING_MANAGER%" set "JAVA_OPTS=%JAVA_OPTS% %LOGGING_CONFIG%" 两行将其注销,在后面增加 set JAVA_OPTS=-server -Xms512m -Xmx1024m -Xss512k -XX:PermSize=64M -XX:MaxNewSize=256m -XX:MaxPermSize=128m -Djava.awt.headless=true -Dcom.sun.management.jmxremote.port=9008 General选项卡,选择Startup type为Automatic,即开机自启动,在java选项卡中javaoption中改变相应参数。 三、部署多个tomcat首先添加多个不同tomcat环境变量,然后在各个tomcat中修改配置参数,引用环境变量里的不同目录。 注意,如果将tomcat配置成服务的话,catalina.bat将失效,JVM参数不能读取到,jmx配置也无效,需要在程序中进行重新配置,需要在环境变量中加入CATALINA_BASE_8080,其值为:D:\tomcat-8080;同样修改startup.bat、shutdown.bat和catalina.bat文件内容,把其中所有CATALINA_ BASE替换为CATALINA_ BASE _8080。 总结:清空webapps下的manager工程或剪切,并将tomcat管理用户全部注销~~ ,包括examples,通过examples也能进行一些攻击,其它tomcat自带的web app,能删掉的都删掉 , 防火墙默认对外只开放tomcat的8080端口,升级到最新tomcat版本等。 tomcat管理用户全部注销: E:\tomcat-8082\conf\tomcat-users.xml 2、tomcat日志: Ø 一是运行中的日志,localhost.2017-12-07.log它主要记录运行的一些信息,尤其是一些异常错误日志信息。 Ø 二是访问日志信息,localhost_access_log.txt它记录的访问的时间,IP,访问的资料等相关信息。 默认情况下访问日志没有打开,配置的方式如下:编辑$ {}卡塔利娜/conf/server.xml文件注:$ {}卡特琳娜的tomcat是的安装目录。把以下的注释(< - - !>)去掉即可。 -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false 其中Dcom.sun.management.jmxremote.port=9008 9008是JMX设置的端口,通过jmx端口可以用java目录中自带的jconsole或 jvisualvm监控本地程序运行状态。 l 第三种:先将tomcat启动做出Windows服务启动方式运行 1. 进入tomcat-8080/bin目录,修改 service.bat,找到以下内容,修改SERVICE_NAME为自定义的服务名: rem Set default Service name set SERVICE_NAME=tomcat8080 set DISPLAYNAME=Apache Tomcat 8.0 %SERVICE_NAME% 2.在service.bat中搜索CATALINA_HOME,并全部替换为CATALINA_HOME_8080(与环境变量名保持一致) 3.在tomcat-8080/bin目录下,找到tomcat8.exe和tomcat8w.exe,重命名为SERVICE_NAME配置的名字一致,这里重命名为tomcat8080.exe和tomcat8080w.exe 4.使用命令行进入tomcat-8080/bin,执行service.bat install 5.然后双击修改后的tomcat8080w.exe打开如图: |
下一篇:配置hadoop集群一主两从