一、背景
服务器经常被人黑。webapps下时常莫名其妙的多了一个未知的恶意war文件。对此的反应:
1、修改tomcat虚拟路径。
2、定时检测webapps和work文件夹下的文件,删除不知名的文件。
二、tomcat的server.xml
在C盘下新建webApp和、webWork两个文件夹,将server.xml中的host节点修改为:
<Host name="localhost" appBase="C:/webApp/" workDir="C:/webWork/" unpackWARs="true" autoDeploy="true">三、新建一个listener。
1、ProtectTaskListener.java
package com.px.listener; import com.px.util.Config; import java.util.Timer; import java.util.TimerTask; import javax.servlet.ServletContextEvent; import javax.servlet.ServletContextListener; /** * 文件检测监听器 * * @author liyulin lyl010991@126.com * @version 1.0 2015-04-13 */ public class ProtectTaskListener implements ServletContextListener { private Timer timer; public void contextInitialized(ServletContextEvent event) { timer = new Timer(); timer.schedule( new TimerTask() { public void run() { ProtectUtil.deleteOtherFile(); } }, Config.CHECK_TIME); } public void contextDestroyed(ServletContextEvent event) { timer.cancel(); } }
2、ProtectUtil.java
package com.px.listener; import java.io.File; /** * 删除webApp和webWork下的(除了hospital1、installer、jswork、reports)其它文件 * * @author liyulin lyl010991@126.com * @version 1.0 2015-04-13 */ public class ProtectUtil { public static final String WEBAPPS_PATH = "C:/webApp"; public static final String WORK_PATH = "C:/webWork"; public static final String[] WORK_FILE_PATH = new String[]{ "hospital1", "installer", "jswork", "reports" }; public static void deleteOtherFile() { deleteWebAppsOtherFile(); deleteWorkOtherFile(); } /** * 删除webapps下除了hospital1的其它所有文件 */ public static void deleteWebAppsOtherFile() { File file = new File(WEBAPPS_PATH); if (file.exists()) { File[] fileLists = file.listFiles(); for (File f : fileLists) { if (!f.getName().equals("hospital1")) { delFileOrDerectory(f); } } } } /** * 删除work下除了"hospital1"、"installer"、"jswork"、"reports"的所有文件 */ public static void deleteWorkOtherFile() { File file = new File(WORK_PATH); if (file.exists()) { File[] fileLists = file.listFiles(); for (File f : fileLists) { boolean isDelete = true;// 删除文件标志。true:删除 for (String workFile : WORK_FILE_PATH) { if (f.getName().equals(workFile)) { isDelete = false; break; } } if (isDelete) { delFileOrDerectory(f); } } } } /** * 删除文件夹、文件 * * @param file 待删除文件、文件夹 */ private static void delFileOrDerectory(File file) { if (file.exists()) { if (file.isDirectory()) { File[] files = file.listFiles(); for (File subFile : files) { delFileOrDerectory(subFile); } file.delete(); } else { file.delete(); } } } }
四、修改web.xml
在web-app节点下添加:
<listener> <listener-class> com.px.listener.ProtectTaskListener </listener-class> </listener>
原文地址:http://blog.csdn.net/class_horse/article/details/45040753