Documentation : Sécurisation d'exécution de cron
Date de publication : 17.2.2005
Date de modification : 9.11.2005
|
|
But du document
L'exécution de scripts modifiable par un client d'un hébergement mutualisé peut poser des problèmes de sécurité. Cette documentation traitera de l'exécution de scripts cron de façon sécurisée.
Pré-requis
Un serveur sous linux
Un accès root
vixie-cron
Problématique
Prenons le cas d'école suivant :
Vous offrez des prestations d'hébergement php, cgi-bin à vos clients et ceux-ci désirent des tâches automatisées par le biais de CRON, ces tâches automatisées sont des scripts mis en place par les clients finaux dans leur répertoire web. Un administrateur système non conscencieu mettre ces tâches automatisées dans le crontab de l'utilisateur root.
C'est une grosse erreur ! Les répercutions de sécurité sont énormes et peuvent permettre à un de vos client malveillant, ou à un internaute malveillant, de compromettre votre système. Les tâches automatisées mise en place dans le crontab du root sont exécuté avec l'identitée de l'utilisateur root, ce qui veut dire que ce script ont un privilège haut sur le système, ce qu'il ne devraient pas avoir.
Résolution de la problèmatique
Par défault un serveur web d'hébergement php et cgi-bin devrait utilisé au minimum php-cgi (dont nous avons vu la mise en place dans notre documentation "Installation de PHP en mode CGI avec execution SuExec". Ce qui sous entend que chaque VirtualHost de votre serveur d'hébergement s'exécute en SuExec sous l'identitée unique (uid et gid) de vhost.
Vu que nous possédons un uid et gid unique pour chaque vhost, il est alors aussi possible d'exécuter des tâches automatisées sous ces identitées.
Pour ce faire, il nous suffit d'éditer le fichier /etc/crontab et d'y rajouter la ligne suivante, par exemple :
*/10 * * * * unstrustedwebuser1 /chemin/access/script/non/sure.php
L'exécution de ce script s'effectuera alors sous l'identitée de l'utilisateur untrustedwebuser1 et non pas sous celle du root.
Contributeur : Eric Romang