IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Apache Discussion :

Problème de sécurité des VirtualHosts


Sujet :

Apache

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Inscrit en
    Novembre 2005
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 2
    Par défaut Problème de sécurité des VirtualHosts
    Bonjour,
    J'ai un problème de configuration des VirtualHosts sur mon serveur (CentOS 5). Je veux restreindre les script PHP ou PERL de lister les fichiers dans un autre VirtualHost ou sur le système.

    Apache roule sous apache:apache et il est propriétaire du répertoire /var/www/sites et des répertoires enfants.

    Fichier: httpd.conf
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
     ...
    <Directory />
    Order Deny,Allow
    Deny from all
    Options None
    AllowOverride None
    </Directory>
     
    <Directory "/var/www/sites/aaa">
    Order Allow,Deny
    Allow from all
    </Directory>
     
    <Directory "/var/www/sites/bbb">
    Order Allow,Deny
    Allow from all
    </Directory>
     
    ... 
     
    <VirtualHost *:80>
    ServerAdmin support@aaa.local
    DocumentRoot /var/www/sites/aaa
    ServerName www.aaa.local
    ErrorLog logs/aaa_error_log
    CustomLog logs/aaa_access_log combined
    </VirtualHost>
     
    <VirtualHost *:80>
    ServerAdmin support@bbb.local
    DocumentRoot /var/www/sites/bbbb
    ServerName www.bbb.local
    ErrorLog logs/bbb_error_log
    CustomLog logs/bbb_access_log combined
    </VirtualHost>
    Voici le script qui liste les fichiers sous le virtualhost, sous le DocumentRoot ou sou n'importe quel répertoire sur mon sytème.

    Fichier : /var/www/sites/bbb/test.php
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    <?
     
    //define the path as relative
    printdir('.'); // liste le contenu de /var/www/sites/bbb
    printdir('/'); // liste le contenu de répertoire principal / (/dev, /home, /root, /etc,...)
    printdir('..'); // liste le contenu de  /var/www/sites
    // maintenant je pourrais imprimer le contenu de  /var/www/sites/aaa si je le désire. 
     
    function printdir($path){
    //using the opendir function
    $dir_handle = @opendir($path) or die("Unable to open $path");
     
    echo "Directory Listing of $path<br/>";
     
    //running the while loop
    while ($file = readdir($dir_handle)) 
    {
    echo "<a href='$file'>$file</a><br/>";
    }
     
    //closing the directory
    closedir($dir_handle);
    }
    ?>

    Connaissez-vous une configuration qui pourrait prévenir un script à l'intérieur d'un VirtualHost de lister les fichiers de d'autres VirtualHost ou du système ?

    Merci ,

    Francis

  2. #2
    Rédacteur
    Avatar de _Mac_
    Profil pro
    Inscrit en
    Août 2005
    Messages
    9 601
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 9 601
    Par défaut
    Les deux seuls moyens que je vois c'est soit de coder dans le script un certain nombre de répertoires à exclure (ou à inclure) pour le listing, soit utiliser un truc du style SuPhp pour faire tourner les scripts des différents VH sous des utilisateurs systèmes différents et utiliser les droits Unix pour verrouiller les accès à ces différents utilisateurs.

  3. #3
    Membre expérimenté

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Par défaut
    Avec PHP qui fonctionne en module, vous pouvez déjà lui limiter les accès aux fichiers via des directives de configuration open_basedir définies à chaque virtualhost. Elle permet ainsi d'indiquer le ou les répertoires où il peut les manipuler (inclut les enfants) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    <VirtualHost *:80>
    ServerAdmin support@aaa.local
    DocumentRoot /var/www/sites/aaa
    ServerName www.aaa.local
    ErrorLog logs/aaa_error_log
    CustomLog logs/aaa_access_log combined
    php_admin_value open_basedir "/var/www/sites/aaa/:/tmp/"
    </VirtualHost>
    
    <VirtualHost *:80>
    ServerAdmin support@bbb.local
    DocumentRoot /var/www/sites/bbbb
    ServerName www.bbb.local
    ErrorLog logs/bbb_error_log
    CustomLog logs/bbb_access_log combined
    php_admin_value open_basedir "/var/www/sites/bbb/:/tmp/"
    </VirtualHost>
    Par la même occasion il serait probablement plus intéressant de redéfinir les répertoires temporaires (session notamment, à moins d'utiliser un gestionnaire non fichier) afin que l'un ne puisse pas altérer ceux de l'autre VH.

    A noter, qu'il existe également le mpm itk (peruser ne sera pas compatible) qui permet d'exécuter les ressources sous un utilisateur attribué au VH. Mais ce sera bien moins performant et tous les autres modules Apache ne sont pas nécessairement compatibles.

  4. #4
    Candidat au Club
    Inscrit en
    Novembre 2005
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 2
    Par défaut
    Merci à tous, j'ai considéré la réponse de julp avec l'utilisation de php_admin_value open_basedir. Merci cela fonctionne à merveille pour PHP. Mais je dois faire un test avec des CGI, je pense bien qu'il va être en mesure d'aller lire répertoire

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 0
    Dernier message: 05/02/2014, 19h10
  2. problème avec include / require sur des virtualhost
    Par e-m.guillaume dans le forum Apache
    Réponses: 4
    Dernier message: 17/11/2013, 18h32
  3. [XL-2007] Problème avec la sécurité des XLSM
    Par siuol dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 19/10/2009, 14h23
  4. Problème de sécurité des données.
    Par blastmind dans le forum Administration et Installation
    Réponses: 5
    Dernier message: 18/09/2009, 16h22
  5. Réponses: 8
    Dernier message: 16/06/2006, 01h57

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo