linux – 我应该采取哪些措施来保护Tomcat 6.x?
|
我正在设置新的Tomcat部署,并希望它尽可能安全. 我创建了一个’jakarta’用户并让jsvc运行Tomcat作为守护进程.有关目录权限的任何提示,以限制对Tomcat文件的访问? 我知道我需要删除默认的webapps – 文档,示例等等……有没有我应该在这里使用的最佳实践?那些配置XML文件怎么样?有提示吗? 是否值得启用安全管理器以便webapps在沙箱中运行?有没有人有这方面的经验? 我看过人们在Apache后面运行两个Tomcat实例的例子.看来这可以使用mod_jk或mod_proxy来完成……任何一个优点/缺点?这值得吗? 万一重要,操作系统是Debian lenny.我没有使用apt-get,因为lenny只提供tomcat 5.5,我们需要6.x. 谢谢! 解决方法您可以安装Tomcat 6作为用户tomcat(而不是root用户)在jsvc下运行.这是我上次设置时所做的事情:我在/usr/java / tomcat(CATALINA_HOME)下安装了Tomcat应用程序,在/ var / lib / tomcat(CATALINA_BASE)下安装了一个实例: cd /usr/java sudo tar xzvf ~/downloads/apache-tomcat-6.0.18.tar.gz sudo ln -s apache-tomcat-6.0.18 tomcat sudo /usr/sbin/useradd -d /var/lib/tomcat -c "Apache Tomcat" -m -s /sbin/nologin tomcat cd /var/lib/tomcat sudo mkdir logs work temp sudo chown tomcat:tomcat logs temp work (cd /usr/java/tomcat && sudo tar cvf - conf webapps) | sudo tar xvf - sudo chmod -R g+rw webapps conf sudo chown -R tomcat:tomcat webapps conf cd webapps/ sudo rm -rf docs examples manager host-manager cd ../conf sudo chmod g+r * 然后我构建了jsvc包装器: cd tar xzvf downloads/apache-tomcat-6.0.18.tar.gz tar xzvf apache-tomcat-6.0.18/bin/jsvc.tar.gz cd jsvc-src chmod +x configure ./configure --with-java=$JAVA_HOME make ./jsvc --help sudo cp jsvc /usr/local/sbin/ 最后,我收紧了实例目录的权限: cd /var/lib/tomcat sudo chmod -R 0700 conf sudo chmod -R 0750 logs sudo chmod -R 0700 temp sudo chmod -R 0700 work sudo chmod -R 0770 webapps/ sudo chown -R tomcat:tomcat conf sudo chown -R tomcat:tomcat logs 现在运行Tomcat时,您需要使用jsvc启动它,因此请将此脚本添加为/etc/init.d/tomcat并对其进行符号链接: #!/bin/sh
#
# tomcat Startup script for the Apache Tomcat Server running under jsvc
#
# chkconfig: 345 85 15
# description: Apache Tomcat
# pidfile: /var/run/jsvc.pid
JAVA_HOME=/usr/java/jdk1.6.0_13
CATALINA_HOME=/usr/java/apache-tomcat-6.0.18
CATALINA_BASE=/var/lib/tomcat
JAVA_OPTS="-Djava.awt.headless=true"
JMX_OPTS="-Dcom.sun.management.jmxremote.port=1099 -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false"
DAEMON_APP=/usr/local/sbin/jsvc
TOMCAT_USER=tomcat
# Everything below should be okay
PID_FILE=/var/run/jsvc.pid
LOCK_FILE=/var/lock/tomcat
PATH=/sbin:/bin:/usr/bin
. /lib/init/vars.sh
. /lib/lsb/init-functions
[ -x $JAVA_HOME/bin/java ] || exit 0
[ -x $DAEMON_APP ] || exit 0
[ -d $CATALINA_HOME/bin ] || exit 0
[ -d $CATALINA_BASE ] || exit 0
RETVAL=0
prog="jsvc"
CLASSPATH=
$JAVA_HOME/lib/tools.jar:
$CATALINA_HOME/bin/commons-daemon.jar:
$CATALINA_HOME/bin/bootstrap.jar
start() {
# Start Tomcat
log_daemon_msg "Starting Apache Tomcat"
$DAEMON_APP
-user $TOMCAT_USER
-home $JAVA_HOME
-wait 10
-pidfile $PID_FILE
-outfile $CATALINA_BASE/logs/catalina.out
-errfile $CATALINA_BASE/logs/catalina.out
$JAVA_OPTS $JMX_OPTS
-Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager
-Djava.util.logging.config.file=$CATALINA_BASE/conf/logging.properties
-Dcatalina.home=$CATALINA_HOME
-Dcatalina.base=$CATALINA_BASE
-Djava.io.tmpdir=$CATALINA_BASE/temp
-cp $CLASSPATH
org.apache.catalina.startup.Bootstrap start 2>/dev/null 1>&2
RETVAL=$?
if [ 0 -eq $RETVAL ]; then
touch $LOCK_FILE
log_end_msg 0
else
log_end_msg 1
fi
}
stop() {
# Stop tomcat
log_daemon_msg "Stopping Apache Tomcat"
$DAEMON_APP
-stop
-pidfile $PID_FILE
org.apache.catalina.startup.Bootstrap 2>/dev/null 1>&2
RETVAL=$?
if [ 0 -eq $RETVAL ]; then
rm -rf $LOCK_FILE
log_end_msg 0
else
log_end_msg 1
fi
}
restart() {
stop
sleep 5
start
}
# See how we were called.
case "$1" in
start)
start
;;
stop)
stop
;;
restart)
restart
;;
status)
status $prog
;;
condrestart)
[ -f $LOCK_FILE ] && restart || :
;;
*)
log_action_msg "Usage: $0 {start|stop|restart|status|condrestart}"
exit 1
esac
exit $? (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
