Security/Fr

From TuxFamilyFAQ
Jump to: navigation, search


Cette page vise à fournir des conseils de sécurité que vous devriez suivre en tant qu'hébergé. Elle rappellera ce que l'équipe TuxFamily s'efforce de garantir et définira vos responsabilités concernant vos données et plus particulièrement vos sites web. Cette page se concentrera principalement sur la gestion de vos espaces web. En effet, leur capacité de générer des pages dynamiquement (en exécutant des règles Apache personnalisées et/ou divers scripts) en fait souvent une cible facile pour un attaquant. Si par hasard cela vous semble fastidieux et/ou ennuyeux, ... eh bien, essayez simplement d'imaginer à quel point vous serez ennuyé quand votre site web aura été "défacé" et ô combien sa remise sur pied sera fastidieuse. NdT: les termes anglophones "world-readable" (lisible par tous) et "world-writable" (accessible en écriture par tous) seront utilisés sur cette page pour faire référence au vocable utilisé dans le monde Unix.

La cruelle loi de l'hébergement ou Pourquoi la sécurité ne dépend que de vous...

En tant qu'hébergeur générique, TuxFamily vous permet de générer vos sites web avec quasiment n'importe quel outil de votre choix du moment qu'il parle "CGI". Toutefois, la plupart d'entre vous se contenteront de TuxFamily en tant qu'hébergeur PHP. À partir du moment où vous avez choisi PHP, vous êtes soit un développeur web désireux de construire son site par lui-même (potentiellement en se basant sur des frameworks déjà existants comme Zend) soit un non-développeur ayant l'intention de s'appuyer sur un CMS (Content Management System), comme MediaWiki, WordPress, Drupal, Joomla, phpBB, etc, etc, etc. On peut facilement obtenir un site web fonctionnel dans les deux cas, mais cela ne garantit en rien sa sécurité. Les erreurs les plus classiques incluent:

  • de mauvais développements perso : oublier de vérifier les entrées et sorties de données, être sujet à des injections SQL, des XSS, des CSRF, ...
  • laisser des fichiers sensibles lisibles par tous ("world-readable") (ex. : un fichier config.php contenant le mot de passe de votre base de données)
  • NE PAS mettre à jour les bibliothèques et/ou CMS utilisés : le temps passe, les problèmes de sécurité connus s'accumulent et votre site web devient de plus en plus facile à attaquer, jusqu'à ce qu'un jour vous le retrouviez "défacé" ou pire, que vous découvriez une forme de backdoor dans votre espace web.

Tout cela est suffisamment courant pour que nous écrivions (et traduisions, Ndt) cette page. Nous n'avons pas l'intention de dresser une liste exhaustive des conseils pour les développements perso ; toutefois, les deux erreurs restantes peuvent être facilement évitées.

Ce que TuxFamily fournit

D'un point de vue technique

Les fichiers que vous uploadez sont créés avec votre uid, le gid du groupe de votre projet et les permissions spécifiées par votre umask. Si rien de tout cela ne vous parle, vous avez gagné le droit de vous renseigner sur les permissions Unix.

TuxFamily utilise PHP tel que fourni en Debian stable, conjointement avec eAccelerator et suPHP. Contrairement à la plupart des installations Apache + PHP, les scripts ne sont pas exécutés par l'utilisateur Apache ; au lieu de cela, ils sont exécutés par le propriétaire du fichier exécuté, ce qui dans la plupart des cas signifie... votre propre utilisateur.

TuxFamily a mis en place des mécanismes de sécurité supplémentaires qui empêchent votre utilisateur (et donc vos scripts) de lire des fichiers rattachés à des groupes/projets auxquels vous n'appartenez pas. Ils vous empêchent également de rendre vos fichiers "world-writable" (o+w).

Au sein d'un espace web, TuxFamily fournit deux dossiers intéressants:

  • htdocs : le DocumentRoot servi par Apache. Les fichiers .htaccess sous ce dossier sont pris en compte par Apache. Il peut être utilisé pour stocker les ressources statiques ainsi que les points d'entrée comme index.php.
  • php-includes: ce dossier peut héberger n'importe quel fichier (comme par exemple des bibliothèques, des fichiers inclus, ...) qui ne sera pas servi directement par Apache ; à noter que le nom mentionne PHP pour des raisons historiques : son utilisation n'est pas restreinte aux sites PHP.

Par conséquent, TuxFamily vous permet de séparer le contenu de votre espace web en fichiers servis et non-servis. Note : notre service Apache a la possibilité de lire tout fichier "world-readable".

En résumé : vos responsabilités en tant qu'hébergé

TuxFamily fait de son mieux pour séparer les hébergés tout en restant un hébergement mutualisé. Appliquer les conseils ci-dessous vous permettra de bénéficier de ces mesures de sécurité. Ne pas les appliquer ou les appliquer de manière erronée impliquera votre responsabilité pour tout ce qui touche aux données dévoilées, aux comptes et mots de passe dérobés et aux problèmes de spam/phishing/autre-attaque induits par l'exploitation de votre espace web compromis.

Conseils

  • Apprenez à gérer les permissions Unix. Sérieusement, tout le savoir nécessaire sur ce point tient en une page, vous n'avez pas besoin d'un doctorat, promis.
  • Lorsque vous travaillez sur votre site web, ajustez les permissions sur les fichiers :
    • vos ressources statiques (images, javascripts, CSS) doivent être world-readable (o+r) -- en fait, vous pourriez les placer dans un espace de téléchargement pour de meilleures performances, mais cela sort du cadre abordé par cette page.
    • vos scripts faisant office de points d'entrées (ex. : index.php) devraient également être world-readable (assurez-vous qu'ils ne contiennent pas de code ou de données importantes)
    • les fichiers inclus par les points d'entrées peuvent être mis world-readable du moment qu'ils ne contiennent rien de pertinent. N'hésitez toutefois pas à leur ôter cet attribut.
    • les fichiers (.php, ini, etc.) contenant des mots de passe ne doivent JAMAIS être world-readable; chmod o-rwx est votre ami.
  • Vous devez régulièrement mettre à jour votre CMS, c-à-d dès que possible après la publication d'un correctif.
    • Pour ce faire, certains CMS comportent un système d'alerte que vous pouvez exploiter.
    • Vous pouvez aussi suivre la liste de diffusion et/ou le flux RSS du projet pour rester informé.
    • Comme les correctifs de sécurité et les mises à jour peuvent impliquer des régressions, des bugs et des indisponibilités de votre site, nous vous recommandons fortement d'avoir un environnement de pré-production sur une machine personnelle (de préférence distinct de celui de développement, afin que vous puissiez éprouver votre procédure de déploiement au moins une fois).
  • TuxFamily vous permet de sauvegarder vos données facilement : utilisez rsync over SSH pour automatiser la sauvegarde de vos espaces web, espaces de téléchargement et bases de données (ces dernières sont dumpées dans un fichier SQL chaque nuit) et svnsync pour sauvegarder votre dépôt Subversion. Gardez à l'esprit que des sauvegardes efficaces sont très précieuses pour se remettre d'une attaque sur vos sites web.