वेबसाइट पर सीधे आईपी एक्सेस को प्रतिबंधित करें


13

मैं अपनी वेबसाइट पर सीधे आईपी एक्सेस को प्रतिबंधित करना चाहता हूं। मुझे .htaccess से जुड़े कई समाधान मिले लेकिन कोई काम नहीं किया। मैंने अपाचे वर्चुअल होस्ट कॉन्फिग के माध्यम से एक समाधान भी पाया है जो तब तक ठीक काम कर रहा था जब तक कि मैंने CPanel के माध्यम से एसएसएल प्रमाणपत्र स्थापित नहीं किया था। मुझे बिल्कुल पता नहीं है कि httpd.conf फ़ाइल में क्या परिवर्तन किया गया था, लेकिन अब एसएसएल प्रमाणपत्र को अनइंस्टॉल करने पर भी रीडायरेक्ट सेटिंग काम नहीं करती है।

यहां मेरा वर्तमान वर्चुअल होस्ट सेटअप है:

NameVirtualHost 192.168.1.1:80 NameVirtualHost *

<VirtualHost 192.168.1.1:80>
    ServerName mysite.com
    ServerAlias www.mysite.com
    DocumentRoot /home/rotate/public_html
    ServerAdmin me@mysite.com
    UseCanonicalName Off

    ## User rotate # Needed for Cpanel::ApacheConf
    UserDir disabled
    UserDir enabled rotate
    ScriptAlias /cgi-bin/ /home/rotate/public_html/cgi-bin/
</VirtualHost>

<VirtualHost 192.168.1.1:80>
    ServerName 192.168.1.1
    Redirect 403 /
    ErrorDocument 403 "Sorry, direct IP access not allowed."
    DocumentRoot /usr/local/apache/htdocs
    ServerAdmin me@mysite.com
    UseCanonicalName Off
    UserDir disabled
</VirtualHost>

<VirtualHost *>
    ServerName server.mysite.com
    DocumentRoot /usr/local/apache/htdocs
    ServerAdmin me@mysite.com
    UserDir disabled
</VirtualHost>

NameVirtualHost 192.168.1.1:443
<VirtualHost 192.168.1.1:443>
    ServerName mysite.com
    ServerAlias www.mysite.com
    DocumentRoot /home/rotate/public_html
    ServerAdmin me@mysite.com
    UseCanonicalName Off

    UserDir disabled
    UserDir enabled rotate

    ScriptAlias /cgi-bin/ /home/rotate/public_html/cgi-bin/
    SSLEngine on
    #SSL stuff here
</VirtualHost>

आईपी ​​और नामों को सामान्य लोगों के साथ प्रतिस्थापित किया गया था। SSL प्रमाणपत्र स्थापित करने के बाद से "पुनर्निर्देशित 403 /" भाग काम नहीं कर रहा है। अगर कोई मेरे साथ गलत कर रहा है तो मैं उस पर कुछ प्रकाश डाल सकता हूं, मैं आभारी रहूंगा। धन्यवाद।


मुझे लगता है कि आपको = ServerName 192.168.1.1
ADM

कोशिश की कि कोई असर न पड़े।
इवान

VirtualHosts को फिर से चालू किया गया था? क्या 403 त्रुटि वाला पहला (डिफ़ॉल्ट) vhost पहले था?
होकिन लिंडक्विस्ट

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

जवाबों:


12

और वसीला, तय:

<VirtualHost mysite.com:80>
    ServerName mysite.com
    ServerAlias www.mysite.com
    DocumentRoot /home/rotate/public_html
    ServerAdmin me@mysite.com
    UseCanonicalName Off
</VirtualHost>

NameVirtualHost mysite.com:80
<VirtualHost 192.168.1.1:80>
    ServerName 192.168.1.1
    Redirect 403 /
    ErrorDocument 403 "Sorry, direct IP access not allowed."
    DocumentRoot /usr/local/apache/htdocs
    ServerAdmin me@mysite.com
    UseCanonicalName Off
    UserDir disabled
</VirtualHost>

<VirtualHost *>
    ServerName server.mysite.com
    DocumentRoot /usr/local/apache/htdocs
    ServerAdmin me@mysite.com
    UserDir disabled
</VirtualHost>

NameVirtualHost mysite.com:443
<VirtualHost mysite.com:443>
    ServerName mysite.com
    ServerAlias www.mysite.com
    DocumentRoot /home/rotate/public_html
    ServerAdmin me@mysite.com
    UseCanonicalName Off
</VirtualHost>

इसका समाधान यह था कि आईपी को केवल सभी वर्चुअलहोस्ट सेटिंग्स के लिए डोमेन नाम से बदल दिया जाए, सिवाय इसके कि प्रत्यक्ष आईपी एक्सेस को पुनर्निर्देशित / प्रतिबंधित करने की आवश्यकता है।


यह IE6 और IE8 चलाने वाले क्लाइंट के साथ समस्याएँ पैदा करेगा। यदि आप इसके साथ ठीक हैं, तो यह ठीक है। उन्हें वैसे भी अपने प्राचीन ब्राउज़र को अपग्रेड करना चाहिए।
वासिलि सिरैकिस

6

इसका उत्तर बहुत सरल हो सकता है।

बस इसे httpd.conf (आमतौर पर / etc / httpd / conf पर स्थित) के नीचे कॉपी करें

<VirtualHost *:80>
ServerName localhost
Redirect 403 /
UseCanonicalName Off
UserDir disabled
</VirtualHost>

<VirtualHost *:80>
ServerName www.example.com
DocumentRoot /var/www/html
</VirtualHost>

तब केवल जब www.example.com द्वारा आगंतुक पहुँचते हैं, वह सर्वर तक पहुँच प्राप्त कर सकता है।


2

आप HTTPS पर अपने सर्वर से डायरेक्ट आईपी एक्सेस को डिसेबल नहीं कर सकते हैं क्योंकि एसएसएलटी सर्टिफिकेट के अंदर आपके वर्चुअलहोस्ट के लिए होस्टनाम एन्क्रिप्टेड है।

ग्राहकों को आपके आईपी पते से जुड़ना होगा, प्रमाण पत्र डाउनलोड करना होगा, सामग्री को पढ़ना होगा, और फिर वे यह सत्यापित कर सकते हैं कि होस्टनाम सही है।

केवल दूसरा तरीका एसएनआई लागू करने से है , लेकिन आप उन उपयोगकर्ताओं के लिए समस्याएँ पैदा करेंगे जो इंटरनेट एक्सप्लोरर के पुराने संस्करणों के साथ ब्राउज़ कर रहे हैं।


1
  1. संभवतः आपका प्रमाण पत्र example.com को जारी किया गया है, न कि 192.168.1.1 को, न ही दोनों को; इसलिए, जो विज़िटर उपयोग करते हैं, https://192.168.1.1उनके पास SSL त्रुटि होनी चाहिए (क्योंकि URL प्रमाणपत्र से अलग है)।
  2. आपके पास कोई 'डिफ़ॉल्ट SSL' वेबसाइट नहीं है <VirtualHost *:443> SSLEngine on </VirtualHost>
  3. एसएसआई-प्रति-होस्टनाम का उपयोग करने के लिए आपको एसएनआई समर्थन के साथ अपाचे का उपयोग करना चाहिए (कुछ लिबास और अपाचे संस्करण आवश्यकताएँ हैं) ( एक आईपी पते के साथ अपाचे में कई एसएसएल प्रमाणपत्रों का उपयोग करना देखें)

0

मुझे विश्वास है कि यह आपकी तलाश है

http://www.htaccess-guide.com/deny-visitors-by-ip-address/


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

यह ठीक यही करता है ....
user155813

1
नहीं, यह क्लाइंट के IP पते द्वारा साइट को एक्सेस करता है। सवाल अपने आईपी पते का उपयोग करके साइट तक पहुंच को अवरुद्ध करने का एक तरीका है।
डेवियनमिनेशन

0

एक और उत्तर जोड़ने के लिए, mod_security, यदि यह आपके लिए सेट करने के लिए लायक है, तो आईपी पते द्वारा सर्वर तक पहुंच को रोकने के लिए नियम हैं।


0

यह आसान हो सकता है यदि आप अपनी फ़ाइलों को डिफ़ॉल्ट / var / www / html निर्देशिका में नहीं डालते हैं। बस एक अन्य निर्देशिका बनाएं, उदाहरण के लिए / वेब कहने दें:

mkdir /web 
mkdir /web/example

अपनी फ़ाइलों को कॉपी करें और चेंज बदलें:

sudo chown -R www-data:www-data /web

फिर निम्नलिखित कॉन्फिगर के साथ एक वर्चुअल होस्ट बनाएं:

<Directory /web/example>
  Require all granted
</Directory>

<VirtualHost *:80>

    DocumentRoot /web/example
    ServerName example.com
    ServerAlias www.example.com
    ServerAdmin webmaster@example.com

    # Force SSL, you can remove this line
    Redirect permanent / https://example.com/

    ServerAdmin webmaster@example.com

    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined

</VirtualHost>

# If you use SSL
<IfModule mod_ssl.c>
    <VirtualHost *:443>
        DocumentRoot /web/example
        ServerName example.com
        ServerAlias www.example.com
        ServerAdmin webmaster@example.com

        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined

        # adapt this to your paths
        SSLEngine on
        SSLCertificateFile /etc/ssl/example/example_com.crt
        SSLCertificateKeyFile /etc/ssl/example/example.key
        SSLCertificateChainFile /etc/ssl/example/example_com.ca-bundle

    </VirtualHost>
</IfModule>

अपने वर्चुअल होस्ट को सक्षम करना न भूलें, उदाहरण:

sudo a2ensite example.com.conf

0

एक Apcahe सेटअप में कई .confफाइलें होती हैं, पूर्ववर्ती फ़ाइल लोड की गई पहली फ़ाइल पर जाती है और फिर दूसरी..इस तरह की होती है। इसलिए यदि आप उबंटू में हैं, तो फाइलें लेक्सिकोग्राफिक क्रम में लोड की जाती हैं, इसलिए लोड की जाने वाली बहुत "पहली" .confफाइल निर्देशिका के तहत रहने वाली 000-default.conf( इसलिए उसके नाम पर 000 ) होगी /etc/apache2/sites-available/

इसलिए किसी अन्य नियम को लागू होने से रोकने के लिए हमें अपना नियम उस पहली फ़ाइल के शीर्ष पर लाने की आवश्यकता है।

और आप उस फ़ाइल पर निम्न नियम को लागू कर सकते हैं।

<VirtualHost *:80>
    ServerName default
    DocumentRoot /var/www/html
    #This part here, is crucial.
    <Location />
        Require all denied
    </Location>
</VirtualHost>

कोशिश की और Ubuntu 16.4 x64 Apache संस्करण पर परीक्षण किया > 2.4

यदि आप अपाचे के निचले संस्करण Require all deniedको उपरोक्त कोड से बदलने का प्रयास कर रहे हैं ...

<Location />
    Order deny,allow
    Deny from all
</Location>

-3

मैंने डायरेक्ट आईपी एक्सेस को प्रतिबंधित करने के लिए PHP में यह सरल कोड लिखा था!

$servername =  $_SERVER['SERVER_NAME'];
if($servername == 'your-domain.com'){

}elseif($servername == 'your-domain-with-www.com'){

}else{
    die("Direct ip access not allowed!");
}

बस अपने php फ़ाइल में पेस्ट करें और आनंद लें!


1
क्या आप अन्य उत्तरों पर इसके फायदे बता सकते हैं?
0:30

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