web-dev-qa-db-fra.com

Autoriser l'accès à un hôte virtuel Apache à partir du réseau local uniquement

J'ai une page Web sur un serveur Linux que j'administre et exécutant Apache 2.2. Ce serveur est visible au monde extérieur pour certains autres services.

J'aimerais configurer Apache de sorte qu'un hôte virtuel donné ne soit visible que de l'intérieur du réseau local, afin de pouvoir déployer une application Web pour obtenir les commentaires des autres personnes de mon entreprise. Je pense que cela a à voir avec la directive Allow, mais mes expériences ne vont pas bien.

Comment puis-je modifier mon fichier de configuration pour y parvenir? Devrais-je également modifier la configuration du pare-feu?

19
Btz

Facile. Définissez simplement quelque chose comme ceci dans votre configuration principale ou votre configuration virtuelle:

<Directory /var/www/path/to/your/web/documents>

  Order Deny,Allow
  Deny from all
  Allow from 127.0.0.1 ::1
  Allow from localhost
  Allow from 192.168
  Allow from 10
  Satisfy Any

</Directory>

L’instruction <Directory></Directory> indique en gros "Utilisez ces règles pour n’importe quoi dans ce répertoire. Et par "ce répertoire" qui fait référence au /var/www/path/to/your/web/documents que j’ai défini dans cet exemple mais qui devrait être modifié pour correspondre au chemin du répertoire local de votre site.

Ensuite, dans la zone <Directory></Directory>, vous modifiez le comportement Apache par défaut qui Allow est entièrement remplacé par défaut par Order Deny,Allow. Ensuite, vous définissez Deny from all de refuser l’accès de tous. Voici les instructions Allow from permettant l’accès de 127.0.0.1 ::1 (adresse IP de l’hôte local), localhost (l’hôte local lui-même). C’est tout ce qui est standard. Étant donné que l'accès depuis localhost est nécessaire pour de nombreux processus système internes.

Ce qui suit est ce qui compte pour vous.

Le Allow from pour 192.168 ainsi que 10 permettent l'accès à partir de n'importe quelle adresse réseau/de toutes les adresses de la plage réseau précédée de ces numéros.

Donc, en indiquant 192.168, cela signifie que si un utilisateur a une adresse comme 192.168.59.27 ou 192.168.1.123, il pourra voir le site Web.

De même, utiliser le préfixe Allow from pour le préfixe 10 garantit que si quelqu'un a une adresse IP de 10.0.1.2 ou même 10.90.2.3, il sera en mesure de voir le contenu.

Pratiquement tous les réseaux internes du monde utilisent la gamme 192.168 ou un autre élément de la gamme 10. Rien d'extérieur. En utilisant ce combo, vous obtiendrez ainsi votre objectif de bloquer l’accès au monde extérieur tout en autorisant uniquement l’accès depuis votre réseau local.

12
JakeGould

Personnes qui atterrissent dans cette réponse, veuillez noter que cela est spécifique à Apache 2.2.

Apache 2.4 a déconseillé ces directives.

La nouvelle méthode utilise les modules mod_authz_Host et les directives Require. ( lien )

Dans Apache 2.4, vous devriez faire

<Directory /var/www/ncp-web/>
  Require Host localhost
  Require ip 127.0.0.1
  Require ip 192.168
  Require ip 10
</Directory>

et supprimez toutes les directives Allow.

12
nachoparker

Ajoutez cette section dans votre directive d’hôte virtuel:

<Location /mypathurl>
    Order deny,allow
    Deny from all
    Allow from 192.168.1.10
</Location>

Remplacez votre IP ci-dessus. Cela ne devrait pas être utilisé pour la sécurité du niveau financier, FYI.

5
Chloe