<-
Apache > Serveur HTTP > Documentation > Version 2.4 > Modules

Module Apache mod_privileges

Langues Disponibles:  en  |  fr 

Description:Support des privil�ges de Solaris et de l'ex�cution des serveurs virtuels sous diff�rents identifiants utilisateurs.
Statut:Exp�rimental
Identificateur�de�Module:privileges_module
Fichier�Source:mod_privileges.c
Compatibilit�:Disponible depuis la version 2.3 d'Apache sur les plates-formes Solaris 10 et OpenSolaris

Sommaire

Ce module permet l'ex�cution de diff�rents serveurs virtuels sous diff�rents identifiants Unix User et Group, et avec diff�rents Privil�ges Solaris. En particulier, il apporte au probl�me de s�paration des privil�ges entre les diff�rents serveurs virtuels la solution que devait apporter le module MPM abandonn� perchild. Il apporte aussi d'autres am�liorations en mati�re de s�curit�.

� la diff�rence de perchild, mod_privileges n'est pas un module MPM. Il travaille au sein d'un mod�le de traitement pour d�finir les privil�ges et les User/Group pour chaque requ�te dans un m�me processus. Il n'est donc pas compatible avec les MPM thread�s, et refusera de s'ex�cuter en cas d'utilisation d'un de ces derniers.

mod_privileges traite des probl�mes de s�curit� similaires � ceux de suexec ; mais � la diff�rence de ce dernier, il ne s'applique pas seulement aux programmes CGI, mais � l'ensemble du cycle de traitement d'une requ�te, y compris les applications in-process et les sous-processus. Il convient particuli�rement � l'ex�cution des applications PHP sous mod_php, qui est lui-m�me incompatible avec les modules MPM thread�s. Il est �galement bien adapt� aux autres applications de type script in-process comme mod_perl, mod_python, et mod_ruby, ainsi qu'aux applications en langage C telles que les modules Apache pour lesquels la s�paration des privil�ges constitue un probl�me.

Directives

Sujets

top

Consid�rations � propos de s�curit�

mod_privileges introduit de nouveaux probl�mes de s�curit� dans les situations o� du code non s�r peut s'ex�cuter � l'int�rieur du processus du serveur web. Ceci s'applique aux modules non s�rs, et aux scripts s'ex�cutant sous des modules comme mod_php ou mod_perl. Les scripts s'ex�cutant en externe (comme par exemple les scripts CGI ou ceux s'ex�cutant sur un serveur d'applications derri�re mod_proxy ou mod_jk) ne sont pas concern�s.

Les principaux probl�mes de s�curit� que l'on rencontre avec mod_privileges sont :

La directive PrivilegesMode vous permet de s�lectionner soit le mode FAST, soit le mode SECURE. Vous pouvez panacher les modes en utilisant par exemple le mode FAST pour les utilisateurs de confiance et les chemins contenant du code enti�rement audit�, tout en imposant le mode SECURE o� un utilisateur non s�r a la possibilit� d'introduire du code.

Avant de d�crire les modes, il nous faut pr�senter les cas d'utilisation de la cible : "Benign" ou "Hostile". Dans une situation "Benign", vous voulez s�parer les utilisateurs pour leur confort, et les prot�ger, ainsi que le serveur, contre les risques induits par les erreurs involontaires. Dans une situation "Hostile" - par exemple l'h�bergement d'un site commercial - il se peut que des utilisateurs attaquent d�lib�r�ment le serveur ou s'attaquent entre eux.

Mode FAST
En mode FAST, les requ�tes sont trait�es "in-process" avec les uid/gid et privil�ges s�lectionn�s, si bien que la surcharge est n�gligeable. Ceci convient aux situations "Benign", mais n'est pas s�curis� contre un attaquant augmentant ses privil�ges avec un module ou script "in-process".
Mode SECURE
Une requ�te en mode SECURE g�n�re un sous-processus qui supprime les privil�ges. Ce comportement est tr�s similaire � l'ex�cution d'un programme CGI avec suexec, mais il reste valable tout au long du cycle de traitement de la requ�te, avec en plus l'avantage d'un contr�le pr�cis des privil�ges.

Vous pouvez s�lectionner diff�rents PrivilegesModes pour chaque serveur virtuel, et m�me dans un contexte de r�pertoire � l'int�rieur d'un serveur virtuel. Le mode FAST convient lorsque les utilisateurs sont s�rs et/ou n'ont pas le privil�ge de charger du code "in-process". Le mode SECURE convient dans les cas o� du code non s�r peut s'ex�cuter "in-process". Cependant, m�me en mode SECURE, il n'y a pas de protection contre un utilisateur malveillant qui a la possibilit� d'introduire du code supportant les privil�ges avant le d�but du cycle de traitement de la requ�te.

top

DTracePrivileges Directive

Description:D�termine si les privil�ges requis par dtrace sont activ�s.
Syntaxe:DTracePrivileges On|Off
D�faut:DTracePrivileges Off
Contexte:configuration du serveur
Statut:Exp�rimental
Module:mod_privileges
Compatibilit�:>Disponible sous Solaris 10 et OpenSolaris avec les modules MPM non-thread�s (prefork ou MPM personnalis�).

Cette directive qui s'applique � l'ensemble du serveur permet de d�terminer si Apache s'ex�cutera avec les privil�ges requis pour ex�cuter dtrace. Notez que la d�finition DTracePrivileges On n'activera pas � elle-seule DTrace, mais que DTracePrivileges Off l'emp�chera de fonctionner.

top

PrivilegesMode Directive

Description:Fait un compromis entre d'une part l'efficacit� et la vitesse de traitement et d'autre part la s�curit� � l'encontre des codes malicieux supportant les privil�ges.
Syntaxe:PrivilegesMode FAST|SECURE|SELECTIVE
D�faut:PrivilegesMode FAST
Contexte:configuration du serveur, serveur virtuel, r�pertoire
Statut:Exp�rimental
Module:mod_privileges
Compatibilit�:Disponible sous Solaris 10 et OpenSolaris avec des modules MPMs non thread�s (comme prefork ou un module personnalis�).

Cette directive permet de faire un compromis entre les performances et la s�curit� � l'encontre des codes malicieux supportant les privil�ges. En mode SECURE, chaque requ�te est trait�e dans un sous-processus s�curis�, ce qui induit une d�gradation sensible des performances. En mode FAST, le serveur n'est pas prot�g� contre l'augmentation de privil�ge comme d�crit plus haut.

Cette directive est sensiblement diff�rente selon qu'elle se trouve dans une section <Directory> (ou Location/Files/If) ou au niveau global ou dans un <VirtualHost>.

Au niveau global, elle d�finit un comportement par d�faut dont h�riteront les serveurs virtuels. Dans un serveur virtuel, les modes FAST ou SECURE agissent sur l'ensemble de la requ�te HTTP, et toute d�finition de ces modes dans une section <Directory> sera ignor�e. Le pseudo-mode SELECTIVE confie le choix du mode FAST ou SECURE aux directives contenues dans une section<Directory>.

Dans une section <Directory>, elle ne s'applique que lorsque le mode SELECTIVE a �t� d�fini pour le serveur virtuel. Seuls FAST ou SECURE peuvent �tre d�finis dans ce contexte (SELECTIVE n'aurait pas de sens).

Avertissement

Lorsque le mode SELECTIVE a �t� d�fini pour un serveur virtuel, l'activation des privil�ges doit �tre report�e apr�s la d�termination, par la phase de comparaison du traitement de la requ�te, du contexte <Directory> qui s'applique � la requ�te. Ceci peut donner � un attaquant l'opportunit� d'introduire du code via une directive RewriteMap s'ex�cutant au niveau global ou d'un serveur virtuel avant que les privil�ges n'aient �t� supprim�s et l'uid/gid d�fini.
top

VHostCGIMode Directive

Description:D�termine si le serveur virtuel peut ex�cuter des sous-processus, et d�finit les privil�ges disponibles pour ces dernier.
Syntaxe:VHostCGIMode On|Off|Secure
D�faut:VHostCGIMode On
Contexte:serveur virtuel
Statut:Exp�rimental
Module:mod_privileges
Compatibilit�:Disponible sous Solaris 10 et OpenSolaris avec les modules MPM non-thread�s (prefork ou MPM personnalis�).

D�termine si le serveur virtuel est autoris� � ex�cuter fork et exec, et d�finit les privil�ges requis pour ex�cuter des sous-processus. Si cette directive est d�finie � Off le serveur virtuel ne disposera d'aucun privil�ge et ne pourra ex�cuter ni des programmes ou scripts CGI classiques via le module traditionnel mod_cgi, ni des programmes externes similaires tels que ceux cr��s via le module mod_ext_filter ou les programmes de r��criture externes utilis�s par la directive RewriteMap. Notez que ceci n'emp�che pas l'ex�cution de programmes CGI via d'autres processus et sous d'autres mod�les de s�curit� comme mod_fcgid, ce qui est la solution recommand�e sous Solaris.

Si cette directive est d�finie � On ou Secure, le serveur virtuel pourra ex�cuter les scripts et programmes externes cit�s ci-dessus. D�finir la directive VHostCGIModeSecure a pour effet suppl�mentaire de n'accorder aucun privil�ge aux sous-processus, comme d�crit dans la directive VHostSecure.

top

VHostCGIPrivs Directive

Description:Assigne des privil�ges au choix aux sous-processus cr��s par un serveur virtuel.
Syntaxe:VHostPrivs [+-]?nom-privil�ge [[+-]?nom-privil�ge] ...
D�faut:Aucun
Contexte:serveur virtuel
Statut:Exp�rimental
Module:mod_privileges
Compatibilit�:Disponible sous Solaris 10 et OpenSolaris avec les modules MPM non-thread�s (prefork ou MPM personnalis�) et lorsque mod_privileges est construit avec l'option de compilation BIG_SECURITY_HOLE.

La directive VHostCGIPrivs permet d'assigner des privil�ges au choix aux sous-processus cr��s par un serveur virtuel, comme d�crit dans la directive VHostCGIMode. Chaque nom-privil�ge correspond � un privil�ge Solaris tel que file_setid ou sys_nfs.

nom-privil�ge peut �tre �ventuellement pr�fix� par + ou -, ce qui va respectivement accorder ou refuser le privil�ge. Si nom-privil�ge est sp�cifi� sans + ni -, tous les autres privil�ges pr�alablement assign�s au serveur virtuel seront refus�s. Cette directive permet de construire ais�ment votre propre jeu de privil�ges en annulant tout r�glage par d�faut.

S�curit�

L'utilisation de cette directive peut ouvrir d'immenses trous de s�curit� dans les sous-processus Apache, jusqu'� leur ex�cution avec les droits de root. Ne l'utilisez que si vous �tes absolument s�r de comprendre ce que vous faites !

top

VHostGroup Directive

Description:D�finit l'identifiant du groupe sous lequel s'ex�cute un serveur virtuel.
Syntaxe:VHostGroup identifiant-groupe-unix
D�faut:H�rite de l'identifiant du groupe sp�cifi� par la directive Group
Contexte:serveur virtuel
Statut:Exp�rimental
Module:mod_privileges
Compatibilit�:Disponible sous Solaris 10 et OpenSolaris avec les modules MPM non-thread�s (prefork ou MPM personnalis�).

La directive VHostGroup permet de d�finir l'identifiant du groupe unix sous lequel le serveur va traiter les requ�tes par l'interm�diaire d'un serveur virtuel. L'identifiant du groupe est d�fini avant le traitement de la requ�te, puis restaur� � sa valeur de d�part via les Privil�ges Solaris. Comme la d�finition s'applique au processus, cette directive est incompatible avec les modules MPM thread�s.

Unix-group peut �tre :

Un nom de groupe
Fait r�f�rence au groupe donn� par son nom.
# suivi d'un num�ro de groupe.
Fait r�f�rence au groupe donn� par son num�ro.

S�curit�

Cette directive ne peut pas �tre utilis�e pour ex�cuter Apache en tant que root ! Elle est tout de m�me susceptible de poser des probl�mes de s�curit� similaires � ceux d�crits dans la documentation de suexec.

Voir aussi

top

VHostPrivs Directive

Description:Assigne des privil�ges � un serveur virtuel.
Syntaxe:VHostPrivs [+-]?nom-privil�ge [[+-]?nom-privil�ge] ...
D�faut:Aucun
Contexte:serveur virtuel
Statut:Exp�rimental
Module:mod_privileges
Compatibilit�:Disponible sous Solaris 10 et OpenSolaris avec les modules MPM non-thread�s (prefork ou MPM personnalis�) et lorsque mod_privileges est construit avec l'option de compilation BIG_SECURITY_HOLE.

La directive VHostPrivs permet d'assigner des privil�ges au choix � un serveur virtuel. Chaque nom-privil�ge correspond � un privil�ge Solaris tel que file_setid ou sys_nfs.

nom-privil�ge peut �tre �ventuellement pr�fix� par + ou -, ce qui va respectivement accorder ou refuser le privil�ge. Si nom-privil�ge est sp�cifi� sans + ni -, tous les autres privil�ges pr�alablement assign�s au serveur virtuel seront refus�s. Cette directive permet de construire ais�ment votre propre jeu de privil�ges en annulant tout r�glage par d�faut.

S�curit�

L'utilisation de cette directive peut ouvrir d'immenses trous de s�curit� dans Apache, jusqu'au traitement de requ�tes avec les droits de root. Ne l'utilisez que si vous �tes absolument s�r de comprendre ce que vous faites !

top

VHostSecure Directive

Description:D�termine si le serveur s'ex�cute avec une s�curit� avanc�e pour les serveurs virtuels.
Syntaxe:VHostSecure On|Off
D�faut:VHostSecure On
Contexte:serveur virtuel
Statut:Exp�rimental
Module:mod_privileges
Compatibilit�:Disponible sous Solaris 10 et OpenSolaris avec les modules MPM non-thread�s (prefork ou MPM personnalis�).

D�termine si les serveurs virtuels traitent les requ�tes avec une s�curit� avanc�e en supprimant les Privil�ges rarement requis par un serveur web, mais disponibles par d�faut pour un utilisateur Unix standard, et donc susceptibles d'�tre demand�s par des modules et des applications. Il est recommand� de conserver la d�finition par d�faut (On), sauf si elle emp�che une application de fonctionner. Comme la d�finition s'applique au processus, cette directive est incompatible avec les modules MPM thread�s.

Note

Le fait que la directive VHostSecure emp�che une application de fonctionner peut constituer un signal d'avertissement indiquant que la s�curit� de l'application doit �tre revue.

top

VHostUser Directive

Description:D�finit l'identifiant utilisateur sous lequel s'ex�cute un serveur virtuel.
Syntaxe:VHostUser identifiant-utilisateur-unix
D�faut:H�rite de l'identifiant utilisateur sp�cifi� par la directive User
Contexte:serveur virtuel
Statut:Exp�rimental
Module:mod_privileges
Compatibilit�:Disponible sous Solaris 10 et OpenSolaris avec les modules MPM non-thread�s (prefork ou MPM personnalis�).

La directive VHostUser permet de d�finir l'identifiant utilisateur unix sous lequel le serveur va traiter les requ�tes par l'interm�diaire d'un serveur virtuel. L'identifiant utilisateur est d�fini avant le traitement de la requ�te, puis restaur� � sa valeur de d�part via les Privil�ges Solaris. Comme la d�finition s'applique au processus, cette directive est incompatible avec les modules MPM thread�s.

identifiant-utilisateur-unix peut �tre :

Un nom d'utilisateur
Fait r�f�rence � l'utilisateur donn� par son nom.
# suivi d'un num�ro d'utilisateur.
Fait r�f�rence � l'utilisateur donn� par son num�ro.

S�curit�

Cette directive ne peut pas �tre utilis�e pour ex�cuter Apache en tant que root ! Elle est tout de m�me susceptible de poser des probl�mes de s�curit� similaires � ceux d�crits dans la documentation de suexec.

Voir aussi

Langues Disponibles:  en  |  fr 

top

Commentaires

Notice:
This is not a Q&A section. Comments placed here should be pointed towards suggestions on improving the documentation or server, and may be removed again by our moderators if they are either implemented or considered invalid/off-topic. Questions on how to manage the Apache HTTP Server should be directed at either our IRC channel, #httpd, on Freenode, or sent to our mailing lists.