अपाचे httpd: मैं सब से कैसे इनकार कर सकता हूं, सबनेट से अनुमति देता हूं, लेकिन उस सबनेट के भीतर आईपी से इनकार कर सकता हूं?


26

मैं अपाचे httpd-2.2.3 के साथ CentOS 5.5 चला रहा हूं।

मैंने स्थान / सर्वर-स्थिति पर mod_status सक्षम किया है । मैं निम्नलिखित तरीके से इस एकल स्थान तक पहुँच की अनुमति देना चाहूंगा:

  1. सब से इनकार
  2. सबनेट 192.168.16.0/24 से अनुमति दें
  3. IP 192.168.16.100 से अस्वीकार करें, जो 192.168.16.0/24 सबनेट के भीतर है।

1 और 2 आसान हैं। हालाँकि, चूंकि मैं "192.168.16.0/24 से अनुमति देता हूं", क्या 192.168.16.100 से इनकार करना संभव है?

मैंने 192.168.16.100 के लिए एक इनकार बयान जोड़ने की कोशिश की, लेकिन यह काम नहीं करता है। यहाँ प्रासंगिक विन्यास है:

<Location /server-status>
    SetHandler server-status
    Order Allow,Deny
    Deny from  all
    Deny from  192.168.16.100 # This does not deny access from 192.168.16.100
    Allow from 192.168.16.0/24
</Location>

या:

<Location /server-status>
    SetHandler server-status
    Order Allow,Deny
    Deny from  all
    Deny from  192.168.16.100 # This does not deny access from 192.168.16.100
    Allow from 192.168.16.0/24
</Location>

हालाँकि, यह इस विशेष पृष्ठ तक पहुँच को रोकता नहीं है, जैसा कि प्रवेश लॉग में दिखाया गया है:

www.example.org 192.168.16.100 - - [11/Mar/2011:16:01:14 -0800] "GET /server-status HTTP/1.1" 200 9966 "-" "

Mod_authz_host के मैनुअल के अनुसार :

अनुमति दें इनकार करें

सबसे पहले, सभी अनुमति निर्देशों का मूल्यांकन किया जाता है; कम से कम एक मेल करना चाहिए, या अनुरोध अस्वीकार कर दिया गया है। अगला, सभी इनकार निर्देशों का मूल्यांकन किया जाता है। यदि कोई मेल खाता है, तो अनुरोध अस्वीकार कर दिया जाता है

IP पता Deny निर्देश से मेल खाता है, इसलिए अनुरोध अस्वीकार नहीं किया जाना चाहिए?

Mod_authz_host पेज पर तालिका के अनुसार, इस आईपी पते को "अनुमति और अस्वीकार दोनों से मेल खाना चाहिए", और इस प्रकार "अंतिम मैच नियंत्रण: अस्वीकृत" नियम लागू होना चाहिए।

    मैच अनुमति दें, इनकार करें परिणाम अस्वीकार करें, परिणाम की अनुमति दें
    मैच अनुमति केवल अनुरोध की अनुमति दी अनुरोध की अनुमति दी
    मिलान अस्वीकार केवल अनुरोध अस्वीकृत अनुरोध अस्वीकृत
    दूसरा निर्देश के लिए कोई मिलान डिफ़ॉल्ट: दूसरे निर्देश के लिए डिफ़ॉल्ट डिफ़ॉल्ट: अनुमत
    अनुमति दें और इनकार अंतिम मैच नियंत्रण दोनों से मिलान करें: अस्वीकृत अंतिम मैच नियंत्रण: अनुमति है

सभी 192.168.16.100 से इनकार करें - चूंकि आप यहां "सभी" का उपयोग कर रहे हैं, इसलिए मैं किसी भी आईपी पते से सभी अनुरोधों को अस्वीकार करने की अपेक्षा करूंगा। कुछ और सोचो यहां चल रहा है।
मीका

@ मिचाह: मैं भी कर रहा हूं Allow from 192.168.16.0/24। जैसा कि मैं प्रलेखन को समझता हूं, 192.168.16.0/24 नेटवर्क में कोई भी अनुरोधकर्ता आईपी इस अनुमति बयान से मेल खाएगा, अनुरोध की अनुमति है।
स्टेफन लासिवस्की

ऊपर दिए गए दस्तावेज़ीकरण के बाद। "सबसे पहले, सभी अनुमति निर्देशों का मूल्यांकन किया जाता है; कम से कम एक मैच होना चाहिए, या अनुरोध अस्वीकार कर दिया गया है" ==> यह आपके "192.168.16.0/24 से अनुमति दें" से मेल खाना चाहिए, लेकिन "अगला, सभी इनकार निर्देशों का दूसरा भाग।" मूल्यांकन किया जाता है। यदि कोई भी मैच, अनुरोध "अस्वीकार के साथ" सभी से अस्वीकार है, तो क्या प्रत्येक अनुरोध उस दूसरे भाग से मेल नहीं खाएगा और इसलिए इनकार कर दिया जाएगा?
माइक

आपको वास्तव में इस बात पर विचार करना चाहिए कि क्या आप उस आईपी पते को अपने सिस्टम या केवल httpd से पूरा उपयोग करने से इनकार करना चाहते हैं। यदि पूर्व अपाचे निर्देशों का उपयोग करते हुए आपके दृष्टिकोण के साथ जारी रहता है। यदि उत्तरार्द्ध यह फ़ायरवॉल में किया जाना चाहिए।
एंड्रयू केस

धन्यवाद ACase मैं केवल इस विशेष पृष्ठ से 192.168.16.100 तक पहुंच से इनकार करना चाहता हूं। मैं चाहता हूं कि 192.168.16.100 इस वेबसर्वर पर अन्य सभी पृष्ठों तक पहुंचने में सक्षम हो।
स्टीफन लासिवस्की

जवाबों:


35

मैंने परीक्षण नहीं किया है, लेकिन मुझे लगता है कि आप लगभग वहाँ हैं।

<Location /server-status>
    SetHandler server-status
    Order Allow,Deny
    Deny from  192.168.16.100
    Allow from 192.168.16.0/24
</Location>

Deny from allआवश्यकता नहीं है। वास्तव में यह खराब हो जाएगा क्योंकि सब कुछ मेल खा जाएगा all, और इस तरह से इनकार कर दिया (और मुझे लगता है कि अपाचे स्मार्ट होने और कुछ बेवकूफ बनाने की कोशिश कर रहा है)। मैंने हमेशा अपाचे को पाया है Order, Allowऔर Denyनिर्देशक भ्रमित करते हैं, इसलिए हमेशा चीजों को एक तालिका में देखें ( डॉक्स से लिया गया ):

मैच | अनुमति दें, अस्वीकृत परिणाम | अस्वीकार, परिणाम की अनुमति दें
-------------------------------------------------- -----
केवल अनुमति दें | अनुमति है | की अनुमति
केवल इन्कार करें | इनकार कर दिया | निषेध
कोई मेल नहीं | डिफ़ॉल्ट: अस्वीकृत | डिफ़ॉल्ट: अनुमति है
मैच दोनों | फाइनल मैच: अस्वीकृत | फाइनल मैच: अनुमति है

उपरोक्त सेटिंग्स के साथ:

  • 192.168.16.100 से अनुरोध "मैच दोनों" प्राप्त करें और इस तरह से इनकार कर दिया।
  • 192.168.16.12 के अनुरोधों को "केवल अनुमति दें" और इस प्रकार अनुमति दी गई।
  • 123.123.123.123 से अनुरोधों को "कोई मिलान नहीं" मिलता है और इस तरह से इनकार कर दिया जाता है।

1

मैं शायद इसके लिए भी IPTables नियमों को जोड़कर पोर्ट 80 पर एकल होस्ट से इनकार करने, सभी से इनकार करने और सबनेट को अनुमति देने के लिए जोड़ूंगा।

सबनेट की अनुमति देने के बाद आपको किसी विशिष्ट पते से इनकार नियम स्थापित करने में कोई समस्या नहीं होनी चाहिए। बस इसे उसी क्रम में करें।


मैंने अपना उत्तर अपडेट कर दिया है। मैंने "192.168.16.100 से शासन से इनकार किया" नियम को शामिल किया, लेकिन 192.168.16.100 से अभी भी प्रवेश की अनुमति है
स्टीफन लासिवस्की

मैं इस होस्ट से अन्य सभी स्थानों तक पहुंच की अनुमति देना चाहता हूं। हालांकि, मैं विशिष्ट स्थानों को अस्वीकार करना चाहता हूं। IPTables यहाँ मेरी मदद नहीं करता है।
स्टीफन लासिवस्की 21

जब तक आप इसे नहीं बताएंगे तब तक IPTables आउटबाउंड ट्रैफिक को विशेष रूप से अस्वीकार नहीं करेगा। हालाँकि, आप दुनिया से आने वाले ट्रैफ़िक और एक विशिष्ट पते से इनकार कर सकते हैं, लेकिन सभी सबनेट की अनुमति देते हैं।
माइक

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

-4

क्या आप php का उपयोग कर सकते हैं? यदि ऐसा है तो उस एक विशिष्ट आईपी पते से बाहर निकलने / पुनर्निर्देशित करने के लिए php स्टेटमेंट जोड़ें

उदाहरण:

$ इनकार = सरणी ("111.111.111", "222.222.222", "333.333.333");

अगर (in_array ($ _SERVER ['REMOTE_ADDR'], $ इनकार)

{शीर्ष लेख ("स्थान: http://www.google.com/ ");

बाहर जाएं();

संदर्भ: http://perishablepress.com/press/2007/07/03/how-to-block-ip-addresses-with-phot/


2
यह वेबसर्वर द्वारा होस्ट किए गए हर एक पृष्ठ में होना चाहिए। यह समाधान अव्यावहारिक है और न कि आप वेबसर्वर की पहुँच कहाँ फ़िल्टर करना चाहते हैं।
एंड्रयू केस
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.