Wie kann ich den direkten IP-Zugriff auf meinen Webserver blockieren, ohne einen Antwortfehlercode zu erhalten?

Wie kann ich den direkten IP-Zugriff auf meinen Webserver blockieren, ohne einen Antwortfehlercode zu erhalten?

Ich hoffe, dass mir jemand bei dieser Frage helfen kann.

Beispiel:

Mein Domänenname ist: example.com

Meine IP-Adresse ist 103.103.103.103

Wenn Leute versuchen, eine Verbindung zu meiner IP über Port 80 herzustellen, wird auf keine Anfrage geantwortet.

Es sollte Folgendes angezeigt werden: „Verbinden (im Browser) …“ ohne Antwort. (Es sieht so aus, als ob die Verbindung nicht hergestellt werden kann.)

Ich habe versucht, httpd.conf zu ändern (ich verwende Apache 2.4), aber bisher ohne Erfolg.

Ich habe versucht zu googeln, aber es gibt kein Ergebnis zu meiner Frage.

Danke

Antwort1

Angenommen, Sie möchten Anfragenhttp://example.comum Ihre Website zu bedienen, und Anfragen anhttp://103.103.103.103Um ausdrücklich gelöscht zu werden, stehen Ihnen meines Wissens zwei Hauptoptionen zur Verfügung.

1) ist zu verwendenmod_sicherheitModul und das dropZiel. Eine Konfiguration wie diese;

    <VirtualHost *:80>
        ServerName default.only
        SecRuleEngine On
        SecRule REMOTE_ADDR "^\d" id:'1234',drop,phase:1
    </VirtualHost>

    <Directory /var/www/example.com >
      Options FollowSymLinks
      AllowOverride FileInfo Options
      Order allow,deny
      Allow from all
    </Directory>

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

gibt die Website zurück, wenn Sie zu gehenhttp://example.com

# wget -O-  http://example.com
--2018-03-09 15:35:35--  http://example.com/
Resolving example.com (example.com)... 127.0.0.1
Connecting to example.com (example.com)|127.0.0.1|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 24 [text/html]
Saving to: ‘STDOUT’

und wenn Sie versuchen, über IP auf die Standard-Site zu gelangenhttp://127.0.0.1

# wget -O-  http://127.0.0.1
--2018-03-09 15:35:28--  http://127.0.0.1/
Connecting to 127.0.0.1:80... connected.
HTTP request sent, awaiting response... No data received.

Die Verbindung wird unterbrochen

2) Die zweite Möglichkeit ist die Nutzung des stringModuls füriptablesund trennen Sie Verbindungen mit einem Header, derHost: 103.103.103.103

iptables -A INPUT -m string --string "Host: 103.103.103.103" -j DROP

(Ich habe die Regeln von iptables nicht getestet... also müssten Sie die Dokumentation nach der richtigen Beschwörungsformel durchsuchen...) Ich denke jedoch, dass die Option mod_security einfacher ist

verwandte Informationen