Tomcat द्वारा दी जा रही फ़ाइल से फ़ाइल तक पहुंच कैसे अवरुद्ध करें?


10

हमारे पास कुछ टॉमकैट सर्वर हैं और हमने अभी-अभी पता लगाया है कि कुछ फाइलें जिन्हें हम सार्वजनिक नहीं करना चाहते हैं उन फाइलों तक पहुंच है। उदाहरण के लिए:

मान लें कि हमारे पास एक फ़ोल्डर / var / www / html / है जिसे हम tomcat के माध्यम से प्रकाशित कर रहे हैं, लेकिन हम /var/www/html/conf/dbinfo.txt को उजागर नहीं करना चाहते हैं। इस समय लोग www.thissite.com/conf/dbinfo.txt पर जा सकते हैं और वे चीजों को देख पा रहे हैं। मैं इसे ब्लॉक करने में सक्षम होना चाहूंगा, इसलिए यह इसे नहीं दिखाता है, लेकिन यह इसे स्वयं टॉमकैट द्वारा पढ़ने की अनुमति देता है।

किसी भी मदद की सराहना की है।


बहुत सारे अच्छे उत्तर हैं, लेकिन हमारे उत्पादन वातावरण में सबसे आसान और आसान 2009 के 24 जून को पोस्ट किया गया था।
जियो

आपके इनपुट के लिए धन्यवाद, मैं इसे उत्तर के रूप में स्वीकार करने से पहले कुछ वोट प्राप्त करने की उम्मीद कर रहा था, क्योंकि वोट के साथ अन्य भी हैं। धन्यवाद!
जियो

जवाबों:


5

WEB-INF / web.xml के सुरक्षा अवरोध खंड द्वारा टॉमकैट की फ़ाइल पहुंच को नियंत्रित किया जाता है।

आप confइस तरह से ब्लॉक कर सकते हैं :

<security-constraint>
    <web-resource-collection>
        <web-resource-name>HTTP-Protected-Resource-1</web-resource-name>
        <description>Description here</description>
        <url-pattern>/conf/*</url-pattern>
        <http-method>GET</http-method>
        <http-method>POST</http-method>
    </web-resource-collection>
    <auth-constraint>
        <role-name>NOSOUPFORYOU</role-name>
    </auth-constraint>
</security-constraint>

<login-config>
    <auth-method>DEFAULT</auth-method>
    <realm-name>NOACCESSFORANYONE</realm-name>
</login-config>
<security-role>
    <role-name>NOSOUPFORYOU</role-name>
</security-role>

यदि आप स्थैतिक सामग्री की सेवा करने के लिए अपाचे का उपयोग कर रहे हैं, तो यह काम नहीं करेगा क्योंकि एपाच को यूआरएल प्राप्त करने से पहले गोपनीय फाइलों की सेवा मिलेगी। उन मामलों में, आपको इसे अपाचे की http कॉन्फिग फाइलों के माध्यम से हल करना होगा।


4

इसे अपनी वेब निर्देशिका संरचना के बाहर संग्रहीत क्यों न करें? हमने कभी भी / var / www / html / के तहत कुछ भी नहीं डाला है कि हम एक उपयोगकर्ता की खोज नहीं करना चाहेंगे।


4

इस पोस्ट में सभी SysAdmin और IT वर्कर्स को नमस्कार। आपकी प्रतिक्रियाओं के लिए धन्यवाद। मेरे सवालों के जवाब में से कई स्वीकार्य थे लेकिन यह हमारे उत्पादन वातावरण के लिए सबसे उपयुक्त था।

ठीक है। Server.xml में वर्चुअल होस्ट के भीतर डायरेक्टरी या फ़ाइल को ब्लॉक करने के लिए आपको बस नीचे दिए गए कोड को tomcat / conf directory में server.xml में जोड़ना होगा।

इससे पहले:

  <Host name="www.customer.com" appBase="/usr/share/app4_0b/tomcat/webapps/" autoDeploy="false">
    <Context path="" docBase="./customer" />

    <Valapp className="org.apache.catalina.valapps.FastCommonAccessLogValapp"
           directory="weblogs/customer"
           prefix="www_customer_com_"
           suffix=".txt"
           pattern="combined"
           resolappHosts="false" />
  </Host>

उपरांत:

  <Host name="www.customer.com" appBase="/usr/share/app4_0b/tomcat/webapps/" autoDeploy="false">
    <Context path="" docBase="./customer" />

    <Context path="/app/xv/~customer/etc" docBase="" >
      <Valapp className="org.apache.catalina.valapps.RemoteAddrValapp" deny="*" />
    </Context>
    <Context path="/etc" docBase="" >
      <Valapp className="org.apache.catalina.valapps.RemoteAddrValapp" deny="*" />
    </Context>

    <Valapp className="org.apache.catalina.valapps.FastCommonAccessLogValapp"
           directory="weblogs/customer"
           prefix="www_customer_com_"
           suffix=".txt"
           pattern="combined"
           resolappHosts="false" />
  </Host>

तो प्रश्न का उत्तर निम्नलिखित पंक्तियों को जोड़ रहा है:

    <Context path="/app/xv/~customer/etc" docBase="" >
      <Valapp className="org.apache.catalina.valapps.RemoteAddrValapp" deny="*" />
    </Context>
    <Context path="/etc" docBase="" >
      <Valapp className="org.apache.catalina.valapps.RemoteAddrValapp" deny="*" />
    </Context>

2

सलाह का शब्द। अनुमतियाँ ठीक करने के बाद। सभी पासवर्ड बदलें, और सुनिश्चित करें कि इसमें Google कैश नहीं है।


धन्यवाद! अब तय हो गया है। मैं सिर्फ यह जानना चाहता हूं कि क्या वहां इसके लिए बेहतर समाधान है। अगर मुझे जवाब नहीं मिला, तो मैं पोस्ट को ठीक कर दूंगा। एक बार फिर धन्यवाद।
जियो

2

सामान्य रूप से कॉन्फ़िगरेशन जानकारी (जैसे डेटाबेस कनेक्शन की जानकारी, ...) टॉमकैट पर तैनात WAR फ़ाइल के WEB-INF फ़ोल्डर के तहत फाइलों में संग्रहीत है। WEB-INF के तहत फाइलें ग्राहकों के लिए सुलभ नहीं हैं।


0

एक ही मुद्दा रहा है, लेकिन मैं यह नहीं देख सकता कि स्वीकृत उत्तर वास्तव में कैसे काम कर सकता है। यहां लगाया गया वाल्व ENTIRE वेबप पर लागू होता है। इसका हिस्सा नहीं है। इसलिए मैं यह मान रहा हूं कि इस मामले में एक बार जब यह वेबपेज का प्रतिनिधित्व करने के रूप में संदर्भ को नहीं पहचान सकता है, तो यह केवल निर्देश की अनदेखी कर रहा है और लॉग फाइल में कुछ टिप्पणियों को फेंक रहा है।


0

आप server.xml फ़ाइल के माध्यम से सार्वजनिक पहुंच में निर्देशिका को ब्लॉक कर सकते हैं

इस पंक्तियों को उस server.xml फ़ाइल में जोड़ें

    <Context path="/opt/tomcat7/webapps/examples" docBase="" >
    <Valapp className="org.apache.catalina.valapps.RemoteAddrValapp" deny="*" />
    </Context>

    <Context path="/examples" docBase="" >
    <Valapp className="org.apache.catalina.valapps.RemoteAddrValapp" deny="*" />
    </Context>

फिर उस http: // localhost: 8080 / उदाहरण का उपयोग करें, फिर यह 404 पृष्ठ की त्रुटि के रूप में प्रदर्शित होता है, अर्थात) अवरुद्ध है

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