Accès Apache2 limité au réseau local
-
05-07-2019 - |
Question
Jusqu'à récemment, plusieurs sites virtuels étaient configurés comme suit:
<VirtualHost 127.0.0.1:1234>
...
Cela fonctionne très bien pour les tests sur ma machine locale, où j’utilise un bureau Linux. Afin de vérifier comment MS et Explorer affichent mes pages à partir de mon ordinateur portable Windows, je l’ai modifiée en
.<VirtualHost *:1234>
...
Ce qui fonctionne également très bien, en appelant le site à partir de http: // [mylinuxservername]: 1234 sur mon ordinateur portable. C'EST À DIRE. Cependant, je veux limiter ce caractère générique au réseau local. Le branchement de n'importe quelle adresse IP, comme 192.nnn.nnn.nnn ou 192. *. *. * Dans laquelle le caractère générique est indiqué ci-dessus entraîne 403 Interdit sur la machine Windows. Le serveur local fonctionne toujours correctement sur ma machine Linux:
<VirtualHost 127.0.0.1:1234 192.*.*.*:1234>
...
ou
<VirtualHost 127.0.0.1:1234 192.nnn.nnn.nnn:1234> #exact IP of laptop
...
Quoi qu'il en soit, je n'aime pas ce caractère générique dans le deuxième exemple de configuration ci-dessus. Fait-il allusion à quelqu'un?
La solution
Le (s) paramètre (s) de VirtualHost
sont les adresses locales que vous écoutez, pas les adresses distantes.
Dans Apache 2.4 et versions ultérieures, utilisez la Require
directive:
Require ip 127.0.0.0/8
Require ip 192.0.0.0/8
Si vous utilisez Apache 2.2 ou une version antérieure, utilisez la authz_host configuration:
Order Allow,Deny
Allow from 127.0.0.0/8
Allow from 192.168.0.0/16
Cela peut également fonctionner sur Apache 2.4, mais Commander
et Autoriser
sont obsolètes .
Autres conseils
Juste une note au cas où des noobs comme moi viendraient ici:)
Apache HTTP Server est configuré en plaçant des directives en texte brut. fichiers de configuration. Le fichier de configuration principal est généralement appelé httpd.conf. Fichiers de configuration principaux
Pour la version 2.4
Les directives Allow, Deny et Order fournies par mod_access_compat, sont obsolètes et disparaîtront dans une version ultérieure. Tu devrais éviter utilisez-les et évitez les tutoriels obsolètes qui en recommandent l’utilisation. Contrôle d'accès
Require ip 127.0.0.0/8
Require ip 192.0.0.0/8
ou (pas exactement pareil)
Require ip 127.0
Require ip 192.168
Utilisez iptables pour restreindre l’accès à la machine elle-même. La première commande autorisera le trafic HTTP à partir de n’importe quel réseau de la gamme 192 (notez que je pense que vous avez besoin que 192.168 soit réellement local, mais j’aurais peut-être tort.). La deuxième commande supprime simplement les paquets d’autres sources pour le port 80
iptables -I 1 INPUT -s 192.0.0.0/8 -p tcp --dport 80 -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT
iptables -I 2 INPUT -p tcp --dport 80 -m state --state NEW -j DROP
Ensuite, dans votre hôte virtuel, vous pouvez créer < VirtualHost *: 80 >