Chcę ograniczyć bezpośredni dostęp IP do mojej witryny. Znalazłem kilka rozwiązań obejmujących .htaccess, ale żadne z nich nie działa. Znalazłem również jedno rozwiązanie poprzez konfigurację wirtualnych hostów Apache, które działało dobrze, dopóki nie zainstalowałem certyfikatu SSL przez CPanel. Absolutnie nie mam pojęcia, co zostało zmienione w pliku httpd.conf, ale teraz ustawienie przekierowania nie działa, nawet jeśli odinstaluję certyfikat SSL.
Oto moja obecna konfiguracja hostów wirtualnych:
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 [email protected]
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 [email protected]
UseCanonicalName Off
UserDir disabled
</VirtualHost>
<VirtualHost *>
ServerName server.mysite.com
DocumentRoot /usr/local/apache/htdocs
ServerAdmin [email protected]
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 [email protected]
UseCanonicalName Off
UserDir disabled
UserDir enabled rotate
ScriptAlias /cgi-bin/ /home/rotate/public_html/cgi-bin/
SSLEngine on
#SSL stuff here
</VirtualHost>
Adres IP i nazwy zostały zastąpione ogólnymi. Część „Przekierowanie 403 /” nie działa od momentu zainstalowania certyfikatu SSL. Byłbym wdzięczny, gdyby ktoś mógł rzucić nieco światła na to, co robię tutaj źle. Dzięki.
źródło
Odpowiedzi:
I voila, poprawka:
Rozwiązaniem było po prostu zastąpienie adresu IP nazwą domeny dla wszystkich ustawień wirtualnego hosta, z wyjątkiem tego, który musi przekierować / ograniczyć bezpośredni dostęp do adresu IP.
źródło
Odpowiedź może być znacznie prostsza.
Po prostu skopiuj to na dół strony httpd.conf (zwykle znajduje się w / etc / httpd / conf)
Tylko wtedy, gdy odwiedzający wejdą na www.example.com, może uzyskać dostęp do serwera.
źródło
Nie można wyłączyć bezpośredniego dostępu IP do serwera przez HTTPS, ponieważ nazwa hosta wirtualnego hosta jest zaszyfrowana w certyfikacie SSL.
Klienci muszą połączyć się z twoim adresem IP, pobrać certyfikat, przeczytać zawartość, a następnie mogą sprawdzić, czy nazwa hosta jest poprawna.
Jedynym innym sposobem jest wymuszanie SNI , ale będziesz powodować problemy dla użytkowników, którzy przeglądają starsze wersje Internet Explorera.
źródło
https://192.168.1.1
powinni mieć błąd SSL (ponieważ URL różni się od adresu certyfikatu).<VirtualHost *:443> SSLEngine on </VirtualHost>
źródło
Wierzę, że tego właśnie szukasz
http://www.htaccess-guide.com/deny-visitors-by-ip-address/
źródło
Aby dodać kolejną odpowiedź, mod_security, jeśli warto go skonfigurować, ma reguły zabraniające dostępu do serwera przez adres IP.
źródło
Może to być łatwe, jeśli nie umieścisz swoich plików w domyślnym katalogu / var / www / html. Wystarczy utworzyć inny katalog, powiedzmy na przykład / web:
skopiuj swoje pliki i zmień chown:
Następnie utwórz wirtualny host z następującą konfiguracją:
Nie zapomnij włączyć wirtualnego hosta, na przykład:
źródło
W konfiguracji Apcahe zawierającej wiele
.conf
plików pierwszeństwo ma pierwszy załadowany plik, a następnie drugi ... podobny. Jeśli więc korzystasz z systemu Ubuntu, pliki są ładowane w kolejności leksykograficznej, więc „pierwszym”.conf
plikiem, który zostanie załadowany, będzie000-default.conf
( stąd nazwa 000 ) rezydujący w/etc/apache2/sites-available/
katalogu.Aby więc nie zastosować żadnej innej reguły, musimy umieścić naszą regułę na początku pierwszego pliku.
i możesz po prostu dołączyć do tego pliku następującą regułę.
Wypróbowany i przetestowany na wersji Apache Ubuntu 16.4 x64
> 2.4
Jeśli korzystasz z niższej wersji Apache, spróbuj zastąpić
Require all denied
powyższy kod na ...źródło
Napisałem ten prosty kod w PHP, aby ograniczyć bezpośredni dostęp do ip!
po prostu wklej do pliku php i ciesz się!
źródło