Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 01/01/2006, à 13:57

fkwink

Apache2+mod_chroot et les scripts CGI

Bonjour, smile

J'ai installé un serveur web sur ma machine (sous Ubuntu, bien sûr tongue) il y a quelques jours,
tout se passait bien, jusqu'au moment où j'ai voulu m'amuser en CGI...

Une petite page décrivant comment j'ai procédé, et incluant les fichiers modifiés, est disponible ici.

La racine du serveur est /var/www (qui est chrooté en /). J'ai du faire quelques modifications et liens symboliques auparavant (pid/lock/logs), mais là je bloque.


Les fichiers que j'ai utilisé pour tester :

* test.pl

#!/usr/bin/perl
print("Content-type: text/html\n\n");
print("hello !");

* test.php

#!/usr/bin/php-cgi
<?php
echo "hello !";
?>

Je précise que :

* Perl et PHP-CGI sont bien installés
* Le module CGI (mod_cgi.so) est activé
* J'ai rajouté dans les propriétés du répertoire /cgi-bin :

AddHandler cgi-script .cgi .pl .php

À chaque essai j'obtiens des erreurs 500 (les deux scripts sont en mode 777, own/grp root:root).


Les erreurs affichées dans error.log :

* [error] [client 127.0.0.1] (2)No such file or directory: exec of '/cgi-bin/test.pl' failed
* [error] [client 127.0.0.1] Premature end of script headers: test.pl
* [error] [client 127.0.0.1] (2)No such file or directory: exec of '/cgi-bin/test.php' failed
* [error] [client 127.0.0.1] Premature end of script headers: test.php

Il ne semble pas trouver l'interpréteur (ou l'interpréteur ne pas trouver le fichier), je me suis dit que #!... est bloqué dans le "jail".


Donc, voici ce que j'ai essayé :

* Inclure la directive ChrootDir / dans la balise <Directory "cgi-bin"> (à l'intérieur de <VirtualHost *>, /etc/apache2/sites-available/default) : non-reconnu.

* Lien symbolique: /var/www/usr/bin/perl -> /usr/bin/perl
  * [error] [client 127.0.0.1] (40)Too many levels of symbolic links: exec of '/cgi-bin/test.pl' failed
  * [error] [client 127.0.0.1] Premature end of script headers: test.pl
 

# ls -l /usr/bin/perl
    -rwxr-xr-x  2 root root 1061656 2005-12-12 15:10 /usr/bin/perl

(mh ça ne semble pas être un lien symbolique)

* Lien symbolique: /var/www/usr/bin/php-cgi -> /usr/bin/php-cgi
  * [error] [client 127.0.0.1] (40)Too many levels of symbolic links: exec of '/cgi-bin/test.php' failed
  * [error] [client 127.0.0.1] Premature end of script headers: test.php
 

# ls -l /usr/bin/php-cgi
    lrwxrwxrwx  1 root root 25 2005-12-30 19:19 /usr/bin/php-cgi -> /etc/alternatives/php-cgi

# ls -l /etc/alternatives/php-cgi
    lrwxrwxrwx  1 root root 17 2005-12-30 19:19 /etc/alternatives/php-cgi -> /usr/bin/php5-cgi

* Lien symbolique: /var/www/usr/bin/php-cgi -> /usr/bin/php5-cgi
  * [error] [client 127.0.0.1] (2)No such file or directory: exec of '/cgi-bin/test.php' failed
  * [error] [client 127.0.0.1] Premature end of script headers: test.php


---

Je ne sais pas si ma façon de procéder a été la meilleure, mais si vous avez des indices me permettant d'avancer je vous en serai très reconnaissant... (enfin sans utiliser une méthode trop bourrin à coup de cp -R hein)

Au passage, j'hésite à changer pour mod_security qui semble plus complet, si ça en vaut la peine dites-le. Enfin c'est surtout le chroot qui m'intéresse, pas l'IDS à la snort.


Bye.

Hors ligne

#2 Le 01/01/2006, à 14:55

LaTheix

Re : Apache2+mod_chroot et les scripts CGI

Je crois que le répertoire cgi-bin par défaut est installé dans /usr/lib.
Place tes scripts dans /usr/lib/cgi-bin et vois ce que cela donne ....

Hors ligne

#3 Le 01/01/2006, à 15:56

fkwink

Re : Apache2+mod_chroot et les scripts CGI

I know.

Mais à cause du chroot je ne peux pas sortir de /var/www.

J'ai aussi essayé :

* Lien symbolique: /var/www/cgi-bin -> /usr/lib/cgi-bin : Erreur 403
  * [notice] caught SIGTERM, shutting down
  * [notice] mod_chroot: changed root to /var/www.
  * [notice] Apache configured -- resuming normal operations

* ScriptAlias /cgi-bin "/usr/lib/cgi-bin" : Erreur 404
  * [notice] caught SIGTERM, shutting down
  * [notice] mod_chroot: changed root to /var/www.
  * [notice] Apache configured -- resuming normal operations


Ma configuration du répertoire /cgi-bin :

<Directory "/cgi-bin">
    AllowOverride None
    Options -Indexes +ExecCGI +MultiViews +FollowSymLinks
    AddHandler cgi-script .cgi .pl .php
    Order allow,deny
    Allow from all
</Directory>

---

bref, mod_chroot n'apprécie pas...

Dernière modification par fkwink (Le 01/01/2006, à 15:57)

Hors ligne