Pages : 1
#1 Le 01/01/2006, à 13:57
- fkwink
Apache2+mod_chroot et les scripts CGI
Bonjour,
J'ai installé un serveur web sur ma machine (sous Ubuntu, bien sûr ) 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
Pages : 1