web-dev-qa-db-fra.com

Apache: Restreindre l'accès à une adresse IP source spécifique dans un hôte virtuel

J'ai plusieurs hôtes virtuels nommés sur le même serveur Apache. Pour l'un des hôtes virtuels, je dois m'assurer que seul un ensemble spécifique d'adresses IP est autorisé à accéder.

S'il vous plaît suggérer le meilleur moyen de le faire. J'ai examiné le module mod_authz_hosts mais il ne semble pas que je puisse le faire à l'intérieur de l'hôte virtuel.

35
frameworksnow

Le mod_authz_Host Les directives doivent être à l'intérieur d'un <Location> ou <Directory> bloc mais j'ai utilisé l'ancien au sein de <VirtualHost> comme ça pour Apache 2.2:

<VirtualHost *:8080>
    <Location />
    Order deny,allow
    Deny from all
    Allow from 127.0.0.1
    </Location>

    ...
</VirtualHost>

Référence: https://askubuntu.com/questions/262981/how-to-install-mod-authz-Host-in-Apache

43
Neil C. Obremski

Pour Apache 2.4, vous utiliseriez directive IP obligatoire . Donc, pour n'autoriser que les machines du réseau 192.168.0.0/24 (plage 192.168.0.0 - 192.168.0.255)

<VirtualHost *:80>
    <Location />
      Require ip 192.168.0.0/24
    </Location>
    ...
</VirtualHost>

Et si vous souhaitez simplement que la machine localhost ait accès, il existe une instruction spéciale Require local .

Le fournisseur local autorise l'accès au serveur si l'une des conditions suivantes est remplie:

  • l'adresse du client correspond à 127.0.0.0/8
  • l'adresse du client est :: 1
  • le client et l'adresse du serveur de la connexion sont les mêmes

Cela permet de faire correspondre les connexions provenant de l'hôte local:

<VirtualHost *:80>
    <Location />
      Require local
    </Location>
    ...
</VirtualHost>
23
Jeff Puckett

Si vous utilisez Apache 2.2 dans votre hôte virtuel, vous devez ajouter la directive suivante ( mod_authz_Host ):

Order deny,allow
Deny from all
Allow from 10.0.0.1

Vous pouvez même spécifier un sous-réseau

Allow from 10.0.0

Apache 2.4 semble un peu différent en tant que configuration. Mieux vaut peut-être préciser quelle version d'Apache utilisez-vous.

6
giuliox

Dans Apache 2.4, la syntaxe de configuration des autorisations a été modifiée et les directives Order, Deny ou Allow ne doivent plus être utilisées.

La nouvelle façon de faire serait:

<VirtualHost *:8080>
    <Location />
        Require ip 192.168.1.0
    </Location>
    ...
</VirtualHost>

Vous trouverez d'autres exemples d'utilisation de la nouvelle syntaxe dans la documentation Apache: Mise à niveau de la version 2.2 à partir de la version 2.2

3
vegarasmul