Nous sommes le Lun 30 Juin, 2025 03:45
Supprimer les cookies

configuration apache2 avec suexec

Sur le logiciel libre en général ou un logiciel libre en particulier

Ven 17 Août, 2007 16:19

Bonjour,

je cherche à configurer sur une Debian Sarge (avec accès aux dépôts de Etch) un serveur Apache 2 avec le module suExec afin d'avoir pour chaque virtualhost un utilisateur associé. J'ai installé Apache 2 et activé le module suExec.
Dans mon fichier de configuration principal, j'ai configurer l'exécution d'Apache avec l'utilisateur nobody et le groupe nogroup:
Code: Tout sélectionner
User nobody
Group nogroup

le groupe et l'utilisateur existe bien sur mon serveur.

lorsque je configure mes virtualhosts, je met ce fichier de configuration:
Code: Tout sélectionner
   ServerAdmin webmaster@localhost
   ServerName wiki.framasoft.fr
   SuexecUserGroup framwiki users
   DocumentRoot /home/framwiki/www/

framwiki est bien un utilisateur, users est bien un groupe (qui contient d'ailleurs framwiki) et framwiki et users sont bien les propriétaire de /home/framwiki/www/
j'ai un deuxième virtualhost configuré de la même façon avec un utilisateur différent. Or lorsque je teste mon virtualhost (après avoir redémarré apache), il me met une erreur 403 (pas la permission d'afficher la page). Or le fichier que je teste existe bien et a bien les mêmes permission et propriétaire que mon dossier.

Maintenant, lorsque je modifie mon fichier de configuration principal d'apache en mettant en utilisateur l'un des utilisateurs de mes virtualhosts, mes deux virtualhots pointent sur le dossier de mon utilisateur.
Par exemple en mettant ceci:
Code: Tout sélectionner
User framwiki
Group users

mes deux virtualhots pointent sur /home/framwiki/www/ alors même que mon second virtualhost ne doit pas pointer sur ce répertoire.

Je ne teste que des pages html, cela excluant donc pour le moment les erreurs de droit lié à l'exécution de PHP

Si vous avez une petite piste pour moi chercher, je vous en serais reconnaissant.
Tous les propos n'appartiennent qu'à leur auteur et n'engagent personne d'autre.
La liberté ne peut être que toute la liberté ; un morceau de liberté n'est pas la liberté. (Max Stirner), donc 4 CC sur 6 ne sont pas libres :-)
leviathan

Avatar de l’utilisateur
Messages : 1415

Mer 22 Août, 2007 14:33

Bonjour,

leviathan a écrit:
mes deux virtualhots pointent sur /home/framwiki/www/ alors même que mon second virtualhost ne doit pas pointer sur ce répertoire.

Je ne teste que des pages html, cela excluant donc pour le moment les erreurs de droit lié à l'exécution de PHP

Si vous avez une petite piste pour moi chercher, je vous en serais reconnaissant.


Pourquoi faire pointer deux hôtes virtuels sur un même dossier ? (ca va engendrer des soucis avec suexec...)
Suexec n'est pas actif avec des pages html, tu ne peux donc pas vérifier son fonctionnement ;)

Es tu sûr de vouloir mettre suexec en place, car je suis obligé de passer par là et c'est pas la joie...
Je n'ai pas dit impossible et il faut bien cerner ton problème, il existe plusieurs façons de faire.

Un peu de lecture :
- http://www.generation-linux.net/recherc ... suexec+php
- http://httpd.apache.org/docs/2.0/suexec.html


++
meos

Messages : 3
Géo : /home/meos

Jeu 23 Août, 2007 14:21

Bonjour,

meos a écrit:Pourquoi faire pointer deux hôtes virtuels sur un même dossier ? (ca va engendrer des soucis avec suexec...)

Je me suis mal exprimé.
J'ai deux virtualhost qui pointent sur deux dossiers différents, mais lorsque je met dans mon fichier de configuration principal en utilisateur et en groupe les données de l'un de mes virtualhost alors, lorsque je teste mes deux virtualhost, les 2 pointent sur le virtualhost dont l'utilisateur est dans le fichier de configuration global d'apache.

meos a écrit:Suexec n'est pas actif avec des pages html, tu ne peux donc pas vérifier son fonctionnement ;)

ah, c'est bon à savoir :-) Mais ça n'explique pas mes problème de droits.

meos a écrit:Es tu sûr de vouloir mettre suexec en place, car je suis obligé de passer par là et c'est pas la joie...

c'est selon moi (et de mes faibles connaissance niveau apache), le meilleur moyen de sécuriser les applications web pour que si l'une d'entre elle a une faille, cela ne puisse pas avoir de conséquence sur les autres (car limité à son dossier utilisateur)


meos a écrit:Un peu de lecture :

merci, la doc d'apache je l'avais déjà parcouru, mais pour generation-linux, je ne connaissais pas.

Sinon, comment faites-vous pour sécuriser un minimum apache lorsqu'il est utilisé avec plusieurs virtualhost?

Cordialement,
Léviathan
Tous les propos n'appartiennent qu'à leur auteur et n'engagent personne d'autre.
La liberté ne peut être que toute la liberté ; un morceau de liberté n'est pas la liberté. (Max Stirner), donc 4 CC sur 6 ne sont pas libres :-)
leviathan

Avatar de l’utilisateur
Messages : 1415

Jeu 23 Août, 2007 15:52

Bonjour,

Je comprend pas trop l'explication pour les vhosts... Merci de poster la config les concernant, je verrais peut être plus clair ;)

Suexec est très titilleux sur les permissions des fichiers. Ils doivent être au maximum 755. Mais pour des fichiers html, ce n'est pas la question...

Pour sécuriser un minimum apache avec plusieurs utilisateurs, pas de solution miracle... S'il n'y a pas trop de contraintes : php en module sans suexec!
Faire attention aux dossiers (pas de 777) et coder correctement les scripts. Modifier aussi des options dans httpd.conf et php.ini (interdire fonction exec(), etc..)

++
meos

Messages : 3
Géo : /home/meos

Jeu 23 Août, 2007 15:57

Normalement, les permissions recommandées sont : 711 pour les répertoires, 644 pour les fichiers réguliers, et 755 pour les exécutables.

Sinon, vérifie que l'utilisateur peut bien traverser tous les répertoires parents à celui où se trouve les pages web, c'est-à-dire avoir le droit d'exécution sur :
- /home
- /home/framwiki
- /home/framwiki/www
boarf

Messages : 364

Ven 24 Août, 2007 00:15

meos a écrit:Je comprend pas trop l'explication pour les vhosts... Merci de poster la config les concernant, je verrais peut être plus clair ;)

Je sentais bien, que c'était pas encore très clair :-)

Donc:
mon fichier apache2.conf (ficher de configuration global):
Code: Tout sélectionner
User framwiki
Group users


mon fichier default dans le dossier sites-enabled:
Code: Tout sélectionner
<VirtualHost *>
        ServerAdmin webmaster@localhost
        SuexecUserGroup framasoft users
        DocumentRoot /home/framasoft/www/
        <Directory /home/framasoft/www/>
                Options Indexes FollowSymLinks MultiViews
                AllowOverride None
                Order allow,deny
                allow from all
        </Directory>
</VirtualHost>


mon fichier wiki.framasoft.fr dans sites-enabled:
Code: Tout sélectionner
<VirtualHost *>
        ServerAdmin webmaster@localhost
        ServerName wiki.framasoft.fr
        SuexecUserGroup framwiki users
        DocumentRoot /home/framwiki/www/
        <Directory /home/framwiki/www/>
               Options Indexes FollowSymLinks MultiViews
               AllowOverride None
               Order allow,deny
               allow from all
        </Directory>

</VirtualHost>


les permissions sur les fichiers, dossiers (les permissions sont récursives, donc à l'intérieur du dossier ce sont les mêmes):
Code: Tout sélectionner
/home# ls -l
total 12
drwxr-xr-x  3 framasoft users 4096 2007-08-16 22:48 framasoft
drwxr--r--  4 framwiki  users 4096 2007-08-16 23:23 framwiki


Dans ce cas là, lorsque je teste default et framwiki via mon navigateur, les deux pointent sur /home/framwiki/www
Si je modifie uniquement le fichier apache2.conf en mettant:
Code: Tout sélectionner
User nobody
Group nogroup

alors lorsque je teste default et framwiki via mon navigateur, les deux me renvoie l'erreur 403.

meos a écrit:Suexec est très titilleux sur les permissions des fichiers. Ils doivent être au maximum 755. Mais pour des fichiers html, ce n'est pas la question...

Pour sécuriser un minimum apache avec plusieurs utilisateurs, pas de solution miracle... S'il n'y a pas trop de contraintes : php en module sans suexec!
Faire attention aux dossiers (pas de 777) et coder correctement les scripts. Modifier aussi des options dans httpd.conf et php.ini (interdire fonction exec(), etc..)

Bon ok, je crois que je partir par là, car il faut bien avancer (en fait ma première configuration).

boarf a écrit:Sinon, vérifie que l'utilisateur peut bien traverser tous les répertoires parents à celui où se trouve les pages web, c'est-à-dire avoir le droit d'exécution sur :
- /home
- /home/framwiki
- /home/framwiki/www

:shock: L'utilisateur framwiki aurait les droits sur /home, pour moi, ce n'est pas pensable au niveau de la sécurité. S'il y a un trou de sécurité sur une application dans framwiki alors il aura accès à tous les répertoire de /home

merci encore à vous.
Tous les propos n'appartiennent qu'à leur auteur et n'engagent personne d'autre.
La liberté ne peut être que toute la liberté ; un morceau de liberté n'est pas la liberté. (Max Stirner), donc 4 CC sur 6 ne sont pas libres :-)
leviathan

Avatar de l’utilisateur
Messages : 1415

Ven 24 Août, 2007 08:28

Bonjour,

J'ai compris les vhots ;)

Suexec ne va pas être sollicité avec cette config. Ou du moins, il ne sera pas utile !

Code: Tout sélectionner
User framwiki
Group users


Le processus Apache tourne sous l'uid framwiki:users, ok.
Ici, ça ne va pas :

Code: Tout sélectionner
SuexecUserGroup framasoft users


Suexec fait tourner le processus Apache sous un autre uid/gid que tu précises (SuexecUserGroup) Or tu forces le groupe users... C'est en contradiction avec l'utilisation de Suexec.
Je ne pense pas qu'il soit actif (comment est installé PHP : en module ?) et je vois où est le problème de pointage pour les domaines...

Dans la config apache remettre user nobody et Group nogroup

Permettre l'accès aux répertoires (toujours dans apache) :

Code: Tout sélectionner
AllowOverride All
Order allow,deny


Normalement, il n'y aura plus de 403.

Bonne journée :D
Dernière édition par meos le Ven 24 Août, 2007 09:13, édité 1 fois au total.
meos

Messages : 3
Géo : /home/meos

Ven 24 Août, 2007 08:59

leviathan a écrit:
meos a écrit:
boarf a écrit:Sinon, vérifie que l'utilisateur peut bien traverser tous les répertoires parents à celui où se trouve les pages web, c'est-à-dire avoir le droit d'exécution sur :
- /home
- /home/framwiki
- /home/framwiki/www

:shock: L'utilisateur framwiki aurait les droits sur /home, pour moi, ce n'est pas pensable au niveau de la sécurité. S'il y a un trou de sécurité sur une application dans framwiki alors il aura accès à tous les répertoire de /home


Oui, mais si framwiki veut accéder à son home, il est logique qu'il doit traverser /home, autrement dit avoir un droit d'exécution dessus. S'il n'a pas le droit de lecture et écriture, alors il ne pourra pas voir le contenu du répertoire. Il n'aura accès aux autres répertoires de /home que si framwiki a un droit d'exécution dessus, ce qui est inutile de lui donner, c'est sûr.
boarf

Messages : 364

Jeu 06 Nov, 2008 08:13

Salut,
il existe un tutoriel parlant de ça:
http://wiki.generation-linux.yi.org/dok ... ule:suexec
dexinou

Messages : 1

Qui est en ligne ?

Utilisateur(s) parcourant actuellement ce forum : Aucun utilisateur inscrit