The ZATAZ network :: ZATAZ.com :: ZATAZ.net


Documentation : Sécurisation d'exécution de cron

Date de publication : 17.2.2005
Date de modification : 9.11.2005

Contributeur : Eric Romang

Société : ZATAZ / http://www.zataz.net

Eric Romang co-fondateur de ZATAZ, avec Damien Bancal, supervise la direction technique de ZATAZ.

Situé au Luxembourg, Eric Romang a eu l'occasion au cours de ses années d'expériences dans le domaine au sein de datacenter de développer une expertise dans la haute disponibilité d'infrastructure, la mise en place de cluster MySQL, de solutions de stockages, de sauvegardes et de sécurisation d'environnement Linux.


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.

contentRight


valider