Tomcat 6.x को सुरक्षित करने के लिए मुझे क्या कदम उठाने चाहिए?


10

मैं एक नई टॉमकैट परिनियोजन स्थापित करने की प्रक्रिया में हूं, और चाहता हूं कि यह यथासंभव सुरक्षित हो।

मैंने एक 'जकार्ता' यूजर बनाया है और जेस्विम को टॉमकैट को डेमॉन के रूप में चला रहा है। निर्देशिका अनुमतियों पर कोई सुझाव और इस तरह टॉमकैट की फ़ाइलों तक पहुंच को सीमित करना है?

मुझे पता है कि मुझे डिफ़ॉल्ट वेबैप्स - डॉक्स, उदाहरणों आदि को हटाने की आवश्यकता होगी ... क्या कोई सर्वोत्तम प्रथाएं हैं जो मुझे यहां उपयोग करनी चाहिए? सभी कॉन्फ़िगर XML फ़ाइलों के बारे में क्या? कोई सुझाव वहाँ?

क्या यह सुरक्षा प्रबंधक को सक्षम करने के लायक है ताकि वेब सैंड सैंडबॉक्स में चले? किसी को भी यह स्थापित करने का अनुभव था?

मैंने अपाचे के पीछे टॉमकैट के दो उदाहरणों को चलाने वाले लोगों के उदाहरण देखे हैं। ऐसा लगता है कि यह mod_jk का उपयोग करके या mod_proxy के साथ किया जा सकता है ... किसी भी पेशेवरों / विपक्षों का? क्या यह मुसीबत के लायक है?

मामले में यह मायने रखता है, ओएस डेबियन लेन है। मैं apt-get का उपयोग नहीं कर रहा हूं क्योंकि lenn केवल tomcat 5.5 प्रदान करता है और हमें 6.x की आवश्यकता होती है।

धन्यवाद!

जवाबों:


6

jsvcउपयोगकर्ता टॉमकैट ( रूट के रूप में नहीं ) के तहत चलाने के लिए आप टॉमकैट 6 को स्थापित कर सकते हैं । पिछली बार मैंने इसे सेट किया था:

मैंने Tomcat एप्लिकेशन को /usr/java/tomcat( CATALINA_HOME) और एक उदाहरण के तहत /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

जब आप टॉमकैट चलाते हैं, तो आपको इसका उपयोग करना शुरू करना होगा 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 $?

मैं आम तौर पर स्टार्टअप (इनिट) स्क्रिप्ट में चामॉड और चाउन सामान जोड़ता हूं, क्योंकि यह रूट के रूप में चलता है। मुझे कई बार लोगों द्वारा काट लिया गया है "टॉमकेट को रूट के रूप में शुरू करने में" मदद करने के लिए, फ़ाइलों और निर्देशिकाओं को रूट करने के लिए अग्रणी और ठीक से फिर से शुरू होने पर टॉमकैट उपयोगकर्ता के लिए लिखने योग्य नहीं है। क्या आपको अपनी सूची में "सुडो चोन्ड टोमैट: टोमैट टेंप वर्क" याद आया? या मुझसे कोई चीज चूक रही है?
ओलाफ

चूंकि वे टॉमकैट द्वारा बनाए गए हैं, इसलिए उन्हें टॉमकैट: टॉमकैट मालिक / समूह के साथ बनाया जाएगा।
कवरोजीन

प्री-पैकेज्ड jsvc पैकेज का उपयोग नहीं करने का कोई कारण? व्यक्तिगत रूप से मैं सिर्फ पैकेज को स्थापित करता हूं भले ही मैं अपाचे के सर्वर से टॉमकैट डाउनलोड करता हूं।
ट्रॉनडा

3

अमेरिकी रक्षा विभाग के पास एक अच्छा मार्गदर्शक है जिसने टॉमकैट सुरक्षा मार्गदर्शन को समग्र वेब सर्वर सुरक्षा गाइड (एसआरजी) में संयोजित किया है। आप यहां अधिक सुरक्षा गाइड पा सकते हैं:

http://iase.disa.mil/stigs/srgs/Pages/index.aspx


धन्यवाद, हालांकि वे एक बहुत ही अनुकूल प्रारूप में नहीं हैं
पीटर संकौसक

लिंक टूट गया है। वे टॉमकैट-विशिष्ट चेकलिस्ट प्रदान करने के लिए भी प्रकट नहीं होते हैं।
बॉब

लिंक को ठीक करने के लिए अद्यतन किया गया। एप्लिकेशन सेवा गाइड में अभी भी कुछ टॉमकैट-विशिष्ट सामान है।
जिम हन्ज़िकर

यह एक महान पृष्ठ है, हालांकि, यह 2006 से है इसलिए कुछ सिफारिशें नवीनतम टोमैट के लिए तारीख तक नहीं हो सकती हैं। यहां निर्देशिका अनुमतियों पर प्रासंगिक पैराग्राफ है: B.2 सेटअप और स्टार्टअप टॉमकैट को एकल-उपयोगकर्ता एप्लिकेशन या साझा सिस्टम सेवा या प्रक्रिया के रूप में चलाने के लिए कॉन्फ़िगर किया जा सकता है। एक टॉमकैट सेवा या प्रक्रिया को संचालित करने के लिए मेजबान प्लेटफ़ॉर्म व्यवस्थापक या रूट विशेषाधिकारों की आवश्यकता नहीं होती है। टॉमकैट सर्वर के कारनामों के जोखिम को सीमित करने के लिए, टॉमकैट सेवा या प्रक्रिया को चलाने के लिए समर्पित एक कस्टम होस्ट खाता बनाया जाएगा और न्यूनतम होस्ट सिस्टम विशेषाधिकारों को सौंपा जाएगा।
अमोस

2

ओपन वेब एप्लीकेशन सिक्योरिटी प्रोजेक्ट ( OWASP ) टॉमकैट को सुरक्षित करने के लिए एक विकी पेज प्रदान करता है , जो आपको उपयोगी लग सकता है। लेखन के समय, यह टॉमकैट 5.x पर अधिक केंद्रित लगता है, लेकिन समय बीतने के साथ उम्मीद है कि इसे अपडेट किया जाएगा।


1

मैं गंभीरता से परीक्षण से tomcat6 संकुल backporting पर विचार करेंगे। आप संग्रह पर अपलोड किए जा रहे नए संस्करणों की सूचनाएं प्राप्त करने के लिए पैकेज की सदस्यता ले सकते हैं। (मैं थोड़ा सा पक्षपाती हूं जैसा कि मैंने डेबियन पैकेजिंग पर काम किया है)।

मैंने एक सुरक्षा प्रबंधक के तहत वेबएप चलाने की कोशिश नहीं की है, क्योंकि कोई भी एप्लिकेशन पॉलिसी के साथ नहीं आता है और यह स्पष्ट रूप से एक समय लेने वाला ऑपरेशन है जो खुद को बनाने के लिए है। यदि आप पागल हैं, तो आप निश्चित रूप से ऐसा कर सकते हैं। इसमें ज्यादातर टॉमकेट चलाना शामिल है, कुतिया के लिए कुछ करने की प्रतीक्षा करना और फिर पॉलिसी में एक अपवाद जोड़ना और फिर से टॉमकैट को फिर से शुरू करना। कुल्ला, दोहराना आदि।

जाहिर है, टमाटर को जड़ के रूप में न चलाएं। टॉमकैट उपयोगकर्ता को लॉग निर्देशिका या कार्य निर्देशिका के बाहर कुछ भी लिखने में सक्षम नहीं होना चाहिए। आपको यह सुनिश्चित करना चाहिए कि आपके वेबएप्स डायरेक्टरी में केवल वे वेबैप्स शामिल हैं जिन्हें आप चलाना चाहते हैं।

मैं हमेशा अपाचे के पीछे टॉमकेट चलाता हूं। यह आंशिक रूप से है क्योंकि मैं सोचना चाहता हूं कि अधिक लोग अपाचे का उपयोग करते हैं, इसलिए कीड़े जल्दी मिल जाएंगे। यह बहुत इच्छाधारी सोच है और आपको इस पर सुरक्षा सुधार होने का भरोसा नहीं करना चाहिए। अपाचे क्या लाता है आप विन्यास है। वहाँ बहुत सारे मॉड्यूल हैं जो कि टकटक के पास नहीं है, या कुशलता से नहीं कर सकते हैं। mod_cache, mod_ssl, mod_security सभी वसंत मन में। आपके पास mod_jk, mod_proxy (और या तो mod_proxy_http या mod_proxy_ajp) का विकल्प है। mod_jk (और mod_proxy_ajp) कम कुशल http प्रोटोकॉल के बजाय बाइनरी AJP प्रोटोकॉल का उपयोग करते हैं। मैं mod_jk का उपयोग करने की सलाह दूंगा।


0

Tomcat-users.xml में व्यवस्थापक भूमिका के डिफ़ॉल्ट पासवर्ड को बदलने के लिए मत भूलना यह बहुत महत्वपूर्ण है, और दुर्भावनापूर्ण व्यक्ति टोमैट्रिक सर्वर की तरह पिछले दरवाजे से प्रतिबंधित अनुमति के बिना एप्लिकेशन को तैनात कर सकता है और कई बुरे काम करने की कोशिश कर सकता है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.