In Apache, come faccio a distriggersre l'accesso a un sito web quando qualcuno utilizza solo l'indirizzo IP in un browser web?

Sto utilizzando il server Web apache su CentOS e devo distriggersre la possibilità per le persone di accedere al sito web utilizzando l'indirizzo IP del server in un browser web. Lo voglio in modo che quando qualcuno tenta di navigare all'indirizzo IP, ottengono un messaggio di errore proibito.

Quali configurazioni sarebbero necessarie per farlo?

  • Distriggers l'avvio automatico Apache su Linux
  • Cosa potrebbe causare un server apache a bloccarsi con processi di "submit risposta"?
  • CentOS: traffico in output quando il protocollo IP principale è nullato?
  • Comando non valido 'SSLEngine' Centos
  • Informazioni sulla CPU% sul server Apache Extended Server
  • cosa è l'utente / gruppo apache di Centos 5
  • Viene raggiunta la limitazione delle risorse 508
  • CentOS Apache HTTPD Configuration (403 Proibito)
  • 4 Solutions collect form web for “In Apache, come faccio a distriggersre l'accesso a un sito web quando qualcuno utilizza solo l'indirizzo IP in un browser web?”

    Basta impostare l'host virtuale predefinito. Esiste un esempio commentato in httpd.conf o fa qualcosa di banale come:

     <VirtualHost *:80> ServerName localhost DocumentRoot /var/www/html </VirtualHost> 

    È ansible get questo con mod_rewrite (nel file .htaccess o nel context predefinito del server o in un VirtualHost separato in cui il nome di server è l'indirizzo IP dell'host):

     RewriteEngine On RewriteCond %{HTTP_HOST} 1.2.3.4 # Replace with your own IP address RewriteRule .* - [F] 

    Ciò spiega che se l'intestazione HTTP_HOST corrisponde all'indirizzo ip 1.2.3.4, allora qualsiasi richiesta deve essere soddisfatta con un 403 Forbidden . Qualsiasi richiesta che abbia un'altra intestazione HTTP_HOST (ad esempio una con il nome di dominio effettivo piuttosto che l'indirizzo IP) non dovrebbe essere compromise.

    Non è ansible bloccare l'accesso diretto tramite IP. È necessario consentire la connessione, ma decidere cosa fare con esso. Questo potrebbe essere restituito un 403, un 404 o reindirizzarli alla pagina desiderata. Puoi farlo con mod_rewrite.

      RewriteEngine On RewriteCond %{HTTP_HOST} ^123\.123\.123\.123 RewriteRule ^(.*)$ - [F,L] 

    Questo corrisponderà all'intestazione HOST HTTP passata dal client Web. Tutte le altre richieste passerebbero.

    Tuttavia, si potrebbe desiderare di normalizzare i tuoi URL per scopi SEO.

    Con questo approccio si riscrive tutto ciò che non corrisponde al risultato desiderato.

     RewriteCond %{HTTP_HOST} !^fully\.qualified\.domain\.name [NC] RewriteCond %{HTTP_HOST} !^$ RewriteCond %{SERVER_PORT} !^80$ RewriteRule ^/(.*) http://fully.qualified.domain.name:%{SERVER_PORT}/$1 [L,R] 

    Riferimento: https://httpd.apache.org/docs/2.0/rewrite/rewrite_guide.html#canonicalurl

    Riferimento: http://en.wikipedia.org/wiki/URL_normalization

    Questa soluzione non copre tutti i casi.

    Sostituisci un numero o un punto nell'URL IP per il relativo% ## per esempio 1 per% 31 … 8 per% 38 e arriverai all'ID, non sull'URL del dominio.

    Supponiamo che questo IP difettoso, utilizzato per facilitare la spiegazione: 123.45.6.789

    È necessario utilizzare le 2 alternative per tutte le cifre e punti: il punto è% 2E e 0..9 sono% 30 ..% 39

     RewriteEngine on RewriteCond %{HTTP_HOST} (1|%31)(2|%32)(3|%33)(\.|%2E)(4|%34)(5%35)(\.|%2E)(6|%36)(\.|%2E)(7|%37)(8|%38)(9|%39) RewriteRule . - [F] 

    Ugly, può essere ridotto con {1,3} e limitato a IP valido ma come è per il tuo IP, non c'è bisogno di farlo.

    Non dimenticare le porte come ": 80". HTTP_HOST lo contiene e SERVER_NAME non è affidabile.

    Suggerimenti per Linux e Windows Server, quali Ubuntu, Centos, Apache, Nginx, Debian e argomenti di rete.