2012-05-08 14 views
13

मैं अपने टॉमकैट वेबपैप में कुछ यूआरएल तक पहुंच प्रतिबंधित करना चाहता हूं। केवल 3 ज्ञात आईपी पते को एक निश्चित पैटर्न के अनुरूप यूआरएल तक पहुंच की अनुमति दी जानी चाहिए।मैं टॉमकैट में स्रोत आईपी द्वारा कुछ यूआरएल तक पहुंच कैसे प्रतिबंधित कर सकता हूं?

उदा। http://example.com:1234/abc/personId

मैं इसे कैसे प्राप्त कर सकता हूं?

+1

आप कैसे निर्णय लेते हैं इनकार या उपयोग की अनुमति के लिए है कि क्या? आईपी ​​द्वारा? लॉग इन उपयोगकर्ता द्वारा? भौगोलिक क्षेत्र से? आपके पास iptables क्यों हैं? iptables एक यूआरएल से अवगत नहीं है जो उपयोग में हो सकता है। आपका वेब सर्वर क्या स्टैक चला रहा है और आपके नेटवर्क आर्किटेक्चर में किस बिंदु पर आप पहुंच से इनकार करना चाहते हैं? – Cheekysoft

+0

यह वास्तव में स्पष्ट नहीं है कि आप किस बारे में पूछ रहे हैं। क्या यह मशीन एक वेब सर्वर है और आप उन यूआरएल तक पहुंच प्रतिबंधित करने की कोशिश कर रहे हैं जो यह सेवा करता है? या यह मशीन एक एनएटी बॉक्स है? या प्रॉक्सी रिवर्स? आईपी ​​द्वारा –

+0

। मेरे पास केवल तीन आईपीएस हैं, मुझे केवल एक्सेस की आवश्यकता है। मैं एपीआई का उपयोग करने से अन्य सभी ips को प्रतिबंधित करना चाहता हूं। – Randeep

उत्तर

0

मैं आईपी पते द्वारा उपयोग को सीमित नहीं होगा, निम्नलिखित कारणों के लिए:

  • इतने पर करने से आंतरिक पतों का कहना है, उदाहरण के लिए 10.0.0.0/24, इसका मतलब है कि आप पूरी तरह से इस संपूर्ण सीमा पर भरोसा करते हैं। अगर समझौता किया गया तो क्या होता है?
  • आपके सभी ग्राहक स्थैतिक आईपी पते प्राप्त करने में सक्षम नहीं होंगे या नहीं - मानते हैं कि आप कुछ ग्राहकों तक पहुंचने की अनुमति दे सकते हैं।
  • गेटवे उपकरणों के पीछे ग्राहक जहां प्रॉक्सी x-forwarded-for हेडर का समर्थन नहीं करते हैं, केवल गेटवे डिवाइस का आईपी होगा; भरोसा है कि आईपी ट्रस्ट गेटवे के पीछे सभी, फिर से मानते हैं कि आप कुछ ग्राहकों को एक्सेस देना चाहते हैं।

इसके बजाय, यदि आपको एक सिस्टम चलाने की आवश्यकता है जहां कुछ कॉल केवल कुछ उपयोगकर्ताओं के लिए पहुंच योग्य हैं, तो मैं प्रमाणीकरण का उपयोग करूंगा - एसएसएल क्लाइंट साइड प्रमाणपत्र इस उद्देश्य के लिए काफी अच्छा काम करते हैं। वैकल्पिक रूप से, आप OAuth जैसे कुछ का उपयोग कर सकते हैं।

+0

आपके उत्तर के लिए धन्यवाद। बात यह है कि मेरा सर्वर मोबाइल ऐप्स को जानकारी प्रदान कर रहा है। तो मेरे पास बहुत सारे सार्वजनिक एपीआई हैं। मैं उन्हें सार्वजनिक से अवरुद्ध नहीं कर सकता। लेकिन कुछ निजी एपीआई भी हैं।यह केवल तीन आंतरिक प्रणालियों से उपयोग किया जाना चाहिए। और मैं अतिरिक्त प्रमाणीकरण तंत्र नहीं जोड़ सकता। – Randeep

4

आप ऐसा कर सकते हैं server.xml में इस के साथ:

<Valve 
    className="org.apache.catalina.valves.RemoteAddrValve" 
     deny="117.40.83.*,122.224.95.*,119.255.28.*,218.8.245.*,218.85.139.*,219.117.197.*,124.89.39.*,58.18.172.*,180.153.225.*" 
     /> 

(इन वास्तविक IP पते हैं: मालिकों, तुम जानते हो क्यों: - |) लेकिन जैसा कि आप देख सकते हैं यह वास्तव में एक अवरोधक नहीं एक है संबल। एक बेहतर समाधान अपाचे HTTPD को इसके सामने अस्वीकार करने और बयान से अनुमति देने के लिए रखना होगा, जो आपको सेवा तक पहुंचने के लिए केवल 3 आईपी पतों की अनुमति देगा।

+0

आप केवल कंटेनर तत्वों (इंजन, होस्ट, संदर्भ) में वाल्व जोड़ सकते हैं। आप उन्हें एप्लिकेशन के भीतर यूआरएल के सबसेट में प्रतिबंधित कर सकते हैं। इसके लिए, आपको फ़िल्टर संस्करण की आवश्यकता है। –

+0

इस उत्तर को ध्यान में रखते हुए वर्म टॉमकैट 6 से संबंधित है। टॉमकैट 7 में वाक्यविन्यास बदल गया है, क्योंकि पूरी प्रविष्टि एक रेगेक्स है। –

11

org.apache.catalina.filters.RemoteAddrFilter का उपयोग करें और उसे उस URL पर मैप करें जिसे आप सुरक्षित करना चाहते हैं। कॉन्फ़िगरेशन विवरण के लिए http://tomcat.apache.org/tomcat-7.0-doc/config/filter.html#Remote_Address_Filter देखें।

+0

मेरा यूआरएल बंदरगाह से शुरू होता है! यह मेरे लिए काम नहीं कर रहा है। मैं server.xml में निम्नलिखित लाइनों जोड़ा रिमोट पता फ़िल्टर <फिल्टर स्तरीय> org.apache.catalina.filters.RemoteAddrFilter अनुमति देते हैं 122 \ .167 \ .211 \ 0.31 ## मेरे आईपी <फिल्टर-मानचित्रण> रिमोट पता फ़िल्टर /abc/* ## http://example.com:1234/abc/(personId)के लिए Randeep

+1

फ़िल्टर सर्वर.xml में परिभाषित नहीं हैं, वे web.xml में परिभाषित हैं। इसे सामान्य सर्वलेट फ़िल्टर के रूप में देखें। –

+0

क्षमा करें, लेकिन आपका यूआरएल बंदरगाह से शुरू होता है ???? और यह बंदरगाह टॉमकैट बंदरगाह नहीं है ?? टोमकैट पर आपका एपीआई कैसे चल रहा है? –

2

आप ips ब्लॉक करने के लिए कुछ इस तरह उपयोग कर सकते हैं और यदि आप प्रॉक्सी के पीछे हैं:

<Context path="/manager" docBase="manager" reloadable="true" privileged="true" > 
    <Valve className="org.apache.catalina.valves.RemoteIpValve"/> 
    <Valve className="org.apache.catalina.valves.RemoteHostValve" allow="<your IP regex>"/> 
</Context> 
संबंधित मुद्दे

 संबंधित मुद्दे