Serveur Apache HTTP Version 2.4
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 |
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.
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.
Vous pouvez s�lectionner diff�rents
PrivilegesMode
s 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.
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.
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).
<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.
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
VHostCGIMode
� Secure a pour effet
suppl�mentaire de n'accorder aucun privil�ge aux sous-processus,
comme d�crit dans la directive
VHostSecure
.
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.
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 !
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
|
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 :
#
suivi d'un num�ro de groupe.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.
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.
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 !
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.
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.
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
|
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 :
#
suivi d'un num�ro d'utilisateur.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.