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?
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.
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.
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.