First post, sorry if I'm breaking protocol. I could really use help tightening up security with the tomcat web server I'm running. A hacker got in and trashed a bunch of files and I'm scared to death it will happen again. I've been setting up a tomcat web server with the native apr library on a linux box and it looks like I got hacked through it. I've been using iptable, ssh, and vncserver to login to the box and have been as careful as I know how to be with security in that regard (although its quite possible I've made a mistake there, I have reason to believe that the fault lies w/ tomcat as you'll see). Here is the server info:
Tomcat Version: Apache Tomcat/6.0.14 OS Name: Linux OS Version: 2.6.18-128.1.6.el5xen OS Architecture: amd64 JVM Version: 1.6.0_14-b08 JVM Vendor: Sun Microsystems Inc. One thing that I definitely was not careful about was file permissions w/ regard to my home database and $CATALINA_HOME, so that's probably how the hacker managed to screw around with my files. I'm starting tomcat through jsvc using the following script in init.d: *#!/bin/sh* *#* *# Startup script for Tomcat* *#* *# chkconfig: - 2345 86 15* *# description: Tomcat is a JSP server.* *# processname: tomcat* *# pidfile: /var/run/jsvc.pid* * * *. /etc/init.d/functions* * * *JAVA_HOME=/usr/java/latest* *CATALINA_HOME=/opt/tomcatus/tomcat* *CATALINA_BASE=/opt/tomcatus/tomcat* *DAEMON_HOME=$CATALINA_HOME/bin* *TOMCAT_USER=tomcat* * * *TMP_DIR=/var/tmp* *PID_FILE=/var/run/jsvc.pid* * * *CATALINA_OPTS="-Djava.library.path=/usr/local/apr/lib"* *JAVA_OPTS="-Xms256m -Xmx512m -Dhttp.nonProxyHosts=localhost|127.0.0.1|forecaster -XX:MaxPermSize=256m"* *SECURITY_OPTS="-Djava.security.manager -Djava.security.policy==$CATALINA_BASE/conf/catalina.policy"* * CLASSPATH=$JAVA_HOME/lib/tools.jar:$CATALINA_HOME/bin/commons-daemon.jar:$CATALINA_HOME/bin/bootstrap.jar * * * * * *start() {* * # Start Tomcat* * echo "Starting Tomcat"* * rm -f $CATALINA_HOME/logs/catalina.out* * $DAEMON_HOME/jsvc \* * -user $TOMCAT_USER \* * -home $JAVA_HOME \* * -Dcatalina.home=$CATALINA_HOME \* * -Dcatalina.base=$CATALINA_BASE \* * -Djava.io.tmpdir=$TMP_DIR \* * -wait 10 \* * -pidfile $PID_FILE \* * -outfile $CATALINA_HOME/logs/catalina.out \* * -errfile '&1' \* * $CATALINA_OPTS \* * $JAVA_OPTS \* * $SECURITY_OPTS \* * -cp $CLASSPATH \* * org.apache.catalina.startup.Bootstrap* *} * *case "$1" in* * start)* * start* * ;;* * *)* * echo "Usage $0 (start|stop|status|restart|log)"* * exit 1;;* * * *esac* * * *exit $?* Here are the following things that's been messed up on the machine: -My user account was deleted -/etc/ssh/ssh_host_key.pub file was modified (one key added, another deleted) -my user home directory was added to $CATALINA_HOME/webapps/<app_name>/META-INF/<username> - $CATALINA_HOME/conf/server.xml was changed to this: *<!--<Valve className="org.apache.catalina.valves.RequestDumperValve"/>-->LS""TLS"/>"443" />-->->* * <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" * * <Alias>analysisfactory.biz</Alias>Aware="false">" unpackWARs="true" autoDeploy="false"sword" * * * * * * <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" * * ** ** prefix="localhost." pattern="common" resolveHosts="false"/>* * * * * * ** <!-- <Valve className="org.apache.catalina.valves.RequestDumperValve"/> -->* *</Server>ce>>> ntext path="/forecasterDemo" docBase="ForecasterDemo"/>>ROOT * -file $CATALINA_HOME/conf/server.xml~ was added: * <Engine name="Catalina" defaultHost="www.analysisfactory.biz">/>em"/>l="TLS""TLS"/>"443" />-->->* * <Alias>analysisfactory.biz</Alias>Aware="false">" unpackWARs="true" autoDeploy="false"sword" * * * * * * <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" * * ** ** prefix="localhost." pattern="common" resolveHosts="false"/>* * * * * * ** <!-- <Valve className="org.apache.catalina.valves.RequestDumperValve"/> -->* *</Server>ce>>ame="org.apache.catalina.valves.RequestDumperValve"/>o"/>>ROOT * Does anyone recognize these symptoms and could possibly point me to a fix? Thanks a million. -Nick