Apache 2.4 कुछ IP के लिए URL प्रतिबंधित करता है


14

मैं केवल विशिष्ट IP पतों पर नेटवर्क के बाहर उपलब्ध होने के लिए एक विशिष्ट URL को प्रतिबंधित करने का प्रयास कर रहा हूं। जब बाहर का कोई उपयोगकर्ता उस URL तक पहुंचने का प्रयास करता है न कि आईपी की सूची से उसे मुखपृष्ठ पर पुनर्निर्देशित किया जाना चाहिए।

यह वही है जो मैंने अब तक बिना किसी भाग्य के कोशिश की है। अंतिम भाग यह IP की परवाह किए बिना सभी को मुखपृष्ठ पर पुनर्निर्देशित करता है।

<Location "/secret">
#    <If "%{REMOTE_ADDR} != -ipmatch '123.123.123.123/255.255.255.255'">
#    Redirect 303 "/secret" /
#    </If>

RewriteCond "%{REMOTE_ADDR}" "!123\.123\.123\.123"
RewriteRule .* / [R,L]

LogLevel debug rewrite:trace6
</Location>

PS: / गुप्त URL वास्तव में एक आभासी URL है और ड्राइव पर भौतिक रूप से मौजूद नहीं है।


अगर बयानों पर टिप्पणी की जाती है? पुनर्लेखन सक्षम - RewriteEngine On?
user9517

<If> स्टेटमेंट एक संस्करण है जिसे मैंने कोशिश की। निर्देश पर रिवरटाइंगइन पहले घोषित किया गया है। यही कारण है कि यह सभी को पुनर्निर्देशित करता है
डेनिस रेंडलर

1
मुझे लगता है कि आपको चयनित उत्तर को अन-मार्क करना चाहिए, क्योंकि यह अपाचे 2.4 के लिए मान्य नहीं है जैसा कि आपने अनुरोध किया था (यह पास से गुजरने वाले लोगों को गलत जानकारी देता है)
Erenor Paz

जवाबों:


4

उपयोग करें Order, Denyऔर allowयह निर्दिष्ट करने के लिए कि आपके vhost या स्थान पर किसकी पहुँच है।

<VirtualHost *:80>
    ServerName example.net
    DocumentRoot /docroot

    <Directory "/docroot">
        Order Deny,Allow
        Deny from all
        Allow from 10.10.10.10
        Allow from 10.10.11.0/24
    </Directory>   
</VirtualHost>

जब पुनर्निर्देशन की बात आती है, तो कस्टम त्रुटि पृष्ठ के बारे में सोचें । यह बहुत अधिक सामान्य है, क्योंकि हर अनधिकृत उपयोग से 403 त्रुटि हो सकती है और इस प्रकार आसानी से मूल्यांकन किया जा सकता है।

मैंने कभी भी अपाचे के साथ ऐसा नहीं किया, लेकिन नग्नेक्स के साथ इस रणनीतिक का उपयोग करें। इस तरह अपाचे somethin के लिए करना चाहिए:

ErrorDocument 403 http://homepage.example.com

कस्टम त्रुटि दस्तावेजों को ErrorDocument निर्देश का उपयोग करके कॉन्फ़िगर किया गया है, जिसका उपयोग वैश्विक, वर्चुअलहोस्ट या निर्देशिका संदर्भ में किया जा सकता है। इसका उपयोग .htaccess फ़ाइलों में किया जा सकता है यदि AllowOverride FileInfo पर सेट है। (अपाचे डॉक्स से)


2
यह अपाचे httpd 2.2 विन्यास के एक सेट जैसा दिखता है। यह अभी भी 2.4 के साथ काम करेगा?
user9517

कम से कम ErrorDocumentहिस्सा 2.4 डॉक्स से है। मैं अपाचे का उपयोग नहीं करता हूं, क्योंकि नेग्नेक्स चारों ओर है, लेकिन यह मान लिया गया है Order, Denyऔर Allowअभी भी अपाचे 2.4 में चारों ओर हैं
ansi_lumen

धन्यवाद, लेकिन मैं मदद नहीं करता। मैं उल्लेख करना भूल गया, लेकिन मैंने सवाल को अपडेट किया, / गुप्त URL वास्तव में एक आभासी URL है और ड्राइव पर भौतिक रूप से मौजूद नहीं है। URL यह स्वयं सूचकांक index.php से एक फिर से लिखना है यही कारण है कि मैंने <स्थान> निर्देश का उपयोग किया है।
डेनिस रेंडलर

4
यह सिंटैक्स अपाचे 2.4 में
लुका हुआ है

1
यह स्वीकृत उत्तर क्यों है? यह अपाचे 2.2 नहीं 2.4 के लिए है क्योंकि प्रश्न का अर्थ है ... यह काम नहीं करेगा।
जेरेमी

23

अपाचे 2.4 में ऑर्डर, इनकार, और अनुमति विकल्प को प्रतिस्थापित किया गया है

<Directory /var/www/mysite.com/htdocs/public>
    Require all granted
</Directory>

आप निम्न के उपयोग के माध्यम से स्पष्ट रूप से पते प्रतिबंधित कर सकते हैं:

<Directory /var/www/mysite.com/htdocs/public>
    Require all granted
    Require not ip 192.168.0.1
</Directory>

सटीक विपरीत भी सही है, सभी को प्रतिबंधित करने के लिए और केवल एक उप-सेट का उपयोग करने की अनुमति दें:

<Directory /var/www/mysite.com/htdocs/public>
    Require host example.com
    Require ip 192.168.0.1
</Directory>

अधिक जानकारी अपाचे 2.4 अभिगम नियंत्रण प्रलेखन पर उपलब्ध है

आपके प्रश्न के संबंध में (टिप्पणी जोड़ने के लिए बिंदुओं की कमी के कारण मेरा खुद का संपादन), आपको बस URL-पथ के रूप में अनुक्रमणिका सेट के साथ एक ErrorDocument सेट करने में सक्षम होना चाहिए:

<Directory /var/www/mysite.com/htdocs/public>
    Require host example.com
    Require ip 192.168.0.1
    ErrorDocument 401 /index.html
</Directory>

उम्मीद है की यह मदद करेगा!


धन्यवाद, @Linztm! लेकिन यह मेरी समस्या को आंशिक रूप से हल करता है। मैं न केवल उपयोगकर्ता को ब्लॉक करना चाहता हूं, बल्कि उसे मुखपृष्ठ पर पुनर्निर्देशित भी करना चाहता हूं।
डेनिस रेंडलर

ऐसा लगता है कि मैं केवल डोमेन और प्रोटोकॉल सहित पूर्ण URL प्रदान करने पर ErrorDocument निर्देश के साथ काम कर रहा हूं। मैं आगे शोध करूंगा। धन्यवाद।
डेनिस रेंडलर

मुझे कम से कम एक मामला तब मिला जब आपको उपयोग किए जाने की आवश्यकता है allow, फिर Require 127.0.0.1 भी स्थानीय मशीन से बाहरी पते तक पहुंच की अनुमति दें, जहां सिंटैक्स केवल 127 पते से अनुमति देते हैं।
एलेक्सी मार्टीनोव

2

Apache 2.4 के लिए, आप <आवश्यकताएँ> का उपयोग कर सकते हैं। आप इसे एक vhost या .htaccess फ़ाइल में कर सकते हैं ...।

SetEnvIF IP xxx.xxx.xxx.xxx AllowThisIP  # Or X-Real-IP
SetEnvIF IP yyy.yyy.yyy.yyy AllowThisIP
<RequireAny>
  Require env AllowThisIP
  Require host example.com
</RequireAny>

अपाचे डॉक्स https://httpd.apache.org/docs/2.4/mod/mod_authz_core.html#requireany

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