Serveur Apache HTTP Version 2.4
Le contr�le d'acc�s fait r�f�rence � tout concept de contr�le d'acc�s � une ressource quelconque. Il est distinct du processus d'authentification et d'autorisation.
Plusieurs modules peuvent intervenir dans le contr�le d'acc�s.
Les plus importants sont mod_authz_core
et
mod_authz_host
. Ce document illustre aussi comment
utiliser mod_rewrite
pour le contr�le
d'acc�s.
Si vous souhaitez restreindre l'acc�s � certaines parties de votre
site web en fonction de l'addresse de l'h�te de vos visiteurs, le
plus simple pour y parvenir consiste � utiliser le module
mod_authz_host
.
La directive Require
permet d'accorder ou
d'interdire l'acc�s � certaines ressources de diff�rentes mani�res.
Ces crit�res d'acc�s, en conjonction avec les directives RequireAll
, RequireAny
, et RequireNone
, peuvent �tre
combin�s d'une mani�re suffisamment complexe pour
satisfaire votre politique de contr�le d'acc�s.
Les directives Allow
, Deny
, et Order
fournies par le module
mod_access_compat
sont obsol�tes, et sont appel�es �
dispara�tre dans les versions futures. Il est donc d�conseill� de
les utiliser, et de se fier aux tutoriels qui recommandent leur
utilisation.
Les directives Require s'utilisent comme suit :
Require host address Require ip ip.address
Dans la premi�re forme, nom-h�te est un nom de domaine pleinement qualifi� (fqdn), ou un nom de domaine partiel ; vous pouvez sp�cifier plusieurs noms de domaines, si vous le d�sirez.
Dans la seconde forme, adresse-ip est une adresse IP compl�te, une adresse IP partielle, une paire r�seau/masque de sous-r�seau ou une sp�cification CIDR de la forme r�seau/nnn. Il est possible de sp�cifier des adresses IPv4 ou IPv6.
Voir la documentation de mod_authz_host pour d'autres exemples de cette syntaxe.
Vous pouvez ins�rer le mot-cl� not
pour inverser un
crit�re particulier. Notez que le mot not
�tant la
n�gation d'une valeur, il ne peut pas �tre utilis� pour autoriser
ou interdire une requ�te, car non vrai ne
sera pas interpret� par httpd comme faux. Ainsi, pour interdire la
visite d'une page � l'aide d'une n�gation, le bloc doit contenir un
�l�ment �valu� � vrai ou faux.
Par exemple, si quelqu'un est en train d'inonder
votre forum de messages ind�sirables, vous pouvez ajouter cette ligne pour lui refuser
l'acc�s :
<RequireAll> Require all granted Require not ip 10.252.46.165 </RequireAll>
Les visiteurs poss�dant cette adresse (10.252.46.165
) ne pourront pas voir le
contenu concern� par cette directive. Si vous voulez interdire
l'acc�s � une machine en fonction de son nom, vous pouvez ajouter
ceci :
Require not host host.example.com
Et si vous voulez interdire l'acc�s � un domaine particulier, vous pouvez sp�cifier des adresses IP partielles ou des noms de domaine, comme ceci :
Require not ip 192.168.205 Require not host phishers.example.com moreidiots.example Require not host gov
Les directives RequireAll
, RequireAny
, et RequireNone
permettent �galement de pr�ciser des
crit�res d'acc�s plus complexes.
Vous pouvez accorder ou refuser l'acc�s en fonction de variables
d'environnement arbitraires ou de valeurs d'en-t�tes de la requ�te
en utilisant la directive <If>
. Par exemple, pour interdire l'acc�s en
fonction du user-agent (le type de navigateur), vous pouvez
sp�cifier ceci :
<If "%{HTTP_USER_AGENT} == 'BadBot'"> Require all denied </If>
La syntaxe expr
de la directive Require
permet de r��crire
l'exemple pr�c�dent de la mani�re suivante :
Require expr %{HTTP_USER_AGENT} != 'BadBot'
Contr�ler l'acc�s en fonction de l'en-t�te
User-Agent
n'est pas une technique fiable, car cet
en-t�te peut �tre d�fini � une valeur quelconque, selon le bon
vouloir de l'utilisateur.
Voir le document � propos des expressions pour une description plus approfondie des syntaxes d'expressions et des variables disponibles.
Le drapeau [F]
de la directive RewriteRule
permet d'envoyer une
r�ponse de type 403 Forbidden. Il vous permet donc d'interdire
l'acc�s � une ressource en fonction d'un crit�re arbitraire.
Par exemple, pour bloquer l'acc�s � une ressources entre 20h et
6h du matin, vous pouvez utiliser mod_rewrite
:
RewriteEngine On RewriteCond "%{TIME_HOUR}" ">=20" [OR] RewriteCond "%{TIME_HOUR}" "<07" RewriteRule "^/fridge" "-" [F]
Toute requ�te arrivant apr�s 20h ou avant 7h du matin provoquera l'envoi d'une r�ponse de type 403 Forbidden. Vous pouvez utiliser cette technique pour v�rifier toutes sortes de crit�res. En outre, si vous le pr�f�rez, vous pouvez rediriger ou r��crire la requ�te.
Notez que la directive <If>
, introduite � partir de la version 2.4,
permet de remplacer le module mod_rewrite
dans de
nombreuses situations o� il �tait traditionnellement utilis�, et
il sera probablement pr�f�rable pour vous de tenter de l'utiliser
avant de vous tourner vers mod_rewrite.
Le moteur d'expressions vous fournit une grande puissance d'action en fonction de variables du serveur arbitraires, et il vous est conseill� de consulter le document correspondant pour plus de d�tails.
De m�me, vous devez lire la documentation du module
mod_authz_core
pour des exemples de combinaison de
crit�res d'acc�s multiples, et en particulier la mani�re dont ces
derniers interagissent.
Voir aussi le How-To Authentification and autorisation.