Ich möchte den direkten IP-Zugriff auf meine Website einschränken. Ich fand mehrere Lösungen mit .htaccess, aber keine Arbeit. Ich habe auch eine Lösung über die Konfiguration der virtuellen Apache-Hosts gefunden, die einwandfrei funktioniert hat, bis ich ein SSL-Zertifikat über CPanel installiert habe. Ich habe absolut keine Ahnung, was in der Datei httpd.conf geändert wurde, aber jetzt funktioniert die Umleitungseinstellung nicht, auch wenn ich das SSL-Zertifikat deinstalliere.
Hier ist mein aktuelles Setup für virtuelle Hosts:
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>
IP und Namen wurden durch generische ersetzt. Der Teil "Redirect 403 /" funktioniert nicht, seit das SSL-Zertifikat installiert wurde. Ich wäre dankbar, wenn jemand etwas Licht darauf werfen könnte, was ich hier falsch mache. Vielen Dank.
quelle
Antworten:
Und voila, das Update:
Die Lösung bestand darin, die IP-Adresse für alle Einstellungen von virtualhost einfach durch den Domänennamen zu ersetzen, mit Ausnahme derjenigen, die den direkten IP-Zugriff umleiten / beschränken muss.
quelle
Die Antwort könnte viel einfacher sein.
Kopieren Sie dies einfach in das Ende der Datei httpd.conf (normalerweise unter / etc / httpd / conf).
Nur wenn Besucher über www.example.com zugreifen, kann er auf den Server zugreifen.
quelle
Sie können den direkten IP-Zugriff auf Ihren Server nicht über HTTPS deaktivieren, da der Hostname für Ihren virtuellen Host im SSL-Zertifikat verschlüsselt ist.
Clients müssen eine Verbindung zu Ihrer IP-Adresse herstellen, das Zertifikat herunterladen, den Inhalt lesen und dann überprüfen, ob der Hostname korrekt ist.
Der einzige andere Weg ist das Erzwingen von SNI. Sie können jedoch Probleme für Benutzer verursachen, die mit älteren Versionen von Internet Explorer surfen.
quelle
https://192.168.1.1
sollten Benutzer einen SSL-Fehler haben (da sich die URL von der des Zertifikats unterscheidet).<VirtualHost *:443> SSLEngine on </VirtualHost>
quelle
Ich glaube, das ist, wonach du suchst
http://www.htaccess-guide.com/deny-visitors-by-ip-address/
quelle
Um eine weitere Antwort hinzuzufügen, hat mod_security, wenn es sich für Sie lohnt, sie einzurichten, Regeln, die den Zugriff auf den Server über die IP-Adresse verbieten.
quelle
Dies kann einfach sein, wenn Sie Ihre Dateien nicht im Standardverzeichnis / var / www / html ablegen. Erstellen Sie einfach ein anderes Verzeichnis, zum Beispiel / web:
kopiere deine dateien und ändere den chown:
Erstellen Sie dann einen virtuellen Host mit der folgenden Konfiguration:
Vergessen Sie nicht, Ihren virtuellen Host zu aktivieren. Beispiel:
quelle
In einem Apcahe-Setup mit mehreren
.conf
Dateien wird die Priorität auf die erste geladene und dann auf die zweite Datei angewendet. Wenn Sie mit Ubuntu arbeiten, werden Dateien in lexikografischer Reihenfolge geladen, sodass die allererste.conf
Datei, die geladen wird, die000-default.conf
( daher die 000 in ihrem Namen ) ist, die sich unter der befindet/etc/apache2/sites-available/
Verzeichnis befindet.Um zu verhindern, dass eine andere Regel angewendet wird, müssen wir unsere Regel an den Anfang dieser ersten Datei setzen.
und Sie können dieser Datei einfach die folgende Regel voranstellen.
Bewährt auf Ubuntu 16.4 x64 Apache-Version
> 2.4
Wenn Sie eine niedrigere Version von Apache verwenden, ersetzen Sie
Require all denied
den obigen Code durch ...quelle
Ich habe diesen einfachen Code in PHP geschrieben, um den direkten IP-Zugriff einzuschränken!
Einfach in deine PHP-Datei einfügen und genießen!
quelle