Difference between revisions of "Security/Fr"

From TuxFamilyFAQ
Jump to navigationJump to search
(Created page with "Cette page à pour but de fournir les conseils de sécurité que vous devriez suivre en tant qu'hébergé chez TuxFamily. Nous rappellerons que l'équipe de TuxFamily essaie de g...")
 
Line 1: Line 1:
Cette page à pour but de fournir les conseils de sécurité que vous devriez suivre en tant qu'hébergé chez TuxFamily. Nous rappellerons que l'équipe de TuxFamily essaie de garantir et de définir vos responsabilités concernant vos données en général et vos sites web en particulier.
+
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èremebt vos sites web.
Cette page se concentre principalement sur la gestion de vos espaces web. En effet, la possibilité de générer des pages dynamiquement (en exécutant différents scripts) est aussi bien souvent la cible facile des attaquants.
+
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 cela semble fastidieux ou ennuyeux, et bien… essayer d'imaginer à quel point c'est ennuyeux quand votre site est modifier par un "pirate" et à quel point c'est fastidieux de tout nettoyer/réinstaller.
+
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 cruel loi de l'hébergement ou Pourquoi la sécurité dépend de vous… ==
+
== La cruelle loi de l'hébergement ou Pourquoi la sécurité ne dépend que de vous... ==
  
En tant qu'hébergeur, TuxFamily vous laisse générer votre site web avec la plupart des outils disponibles du moment qu'ils utilisent l'interface "CGI". Malgré ceci, la plupart d'entre vous continuerons de penser que TuxFamily ne fournit que PHP.
+
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.
Une fois que vous avez choisit PHP, vous êtes comme n'importe quel développeur web voulant construire un site web par lui-même (utilisant peut-être un framework comme Zend par exemple) ou un non développeur qui préfère confier cela à un système de gestion de contenu (CMS), comme MediaWiki, WordPress, Drupal, Joomla, phpBB, etc.
+
À 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.
Dans les deux cas, cela donne un site fonctionnel très facilement, mais cela ne guarantie en aucun cas sa sécurité. Les erreurs typiques sont :
+
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:
* mauvais développement : oublie de nettoyer les entrées et sorties des données, injections SQL, XSS, CSRF, etc.
+
* 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, ...
* fichiers sensibles laissés en lecture pour tout le monde (un fichier config.php avec les identifiants de la base de données par exemple)
+
* 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)
* CMS ou bibliothèques que vous utilisez '''NON''' mise à jour et contenant donc des failles de sécurités connues : rien de plus simple alors pour un attaquant de modifier votre site ou pire, de placer une porte dérobée (backdoor) dans votre espace web.
+
* '''NE PAS''' mettre à jour les bibliothèques et/ou CMS utilisés: le temps passe, les problèmes de sécurités connus s'accumulent et votre site web devient de plus en plus facile à attaquer, jusqu'à ce qu'un jour vous le retrouviez "defacé" ou pire, que vous découvriez une forme de backdoor dans votre espace web.
Nous rencontrons très souvent ces erreurs qui pourraient facilement être éviter, c'est pourquoi nous les rappelons.
+
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 ==
 
== Ce que TuxFamily fournit ==
  
 
=== D'un point de vue technique ===
 
=== D'un point de vue technique ===
Les fichiers que vous envoyez sont créés avec votre uid, le gid avec le groupe de votre projet, et les permissions spécifiques avec votre umask. Si cela ne veut rien dire pour vous, alors vous avez le devoir de lire et d'apprendre [http://en.wikipedia.org/wiki/Filesystem_permissions#Traditional_Unix_permissions Unix permissions].
+
Les fichiers que vous uploadez sont créés avec votre uid, le gid du group 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 [http://en.wikipedia.org/wiki/Filesystem_permissions#Traditional_Unix_permissions les permissions Unix].
  
TuxFamily utilise PHP fournit par Debian stable, avec eAccelerator et suPHP. Ainsi (pas comme la plupart des installations Apache+PHP) les scripts '''ne''' sont '''pas''' exécutés par l'utilisateur Apache, ils sont lancés par le propriétaire du fichier, ce qui la plupart du temps signifie… votre compte.
+
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 ajoute des méchanismes de sécurité supplémentaires qui vous empêchent (et vos scripts) de lire des fichiers appartenant à d'autres groupes/projets.
+
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.
Cela vous empêche aussi de mettre vos fichiers en lecture pour tout le monde (o+w).
+
Ils vous empêchent également de rendre vos fichiers "world-writable" (o+w).
  
Dans un espace web, TuxFamily fournit deux répertoires intéressants :
+
Au sein d'un espace web, TuxFamily fournit deux dossiers intéressants:
* htdocs: le répertoire racine (DocumentRoot) délivré par Apache. Il peut être utilisé pour stocker des fichiers statiques ainsi que des points d'entrée comme index.php. Les fichiers .htaccess dans ce répertoire sont interprétés par Apache.
+
* 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 contenir tous les fichiers qui ne seront jamais délivrés directement par Apache (bibliothèques, includes, etc). Noté que le nom php-includes est resté pour des raisons historiques mais il n'est pas réservé qu'aux sites web utilisant 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.
Ainsi, TuxFamily permet de séparer votre espace web en deux, les fichiers délivrés par Apache et les autres.
+
Par conséquent, TuxFamily vous permet de séparer le contenu de votre espace web en fichiers servis et non-servis.
Note: notre démon Apache est capable de lire n'importe quel fichier qui est en lecture pour tout le monde (o+w).
+
Note : notre service Apache a la possibilité de lire tout fichier "world-readable".
  
=== En résumé : votre responsabilité en tant qu'hébergé ===
+
=== En résumé : vos responsabilités en tant qu'hébergé ===
  
TuxFamily fait de son mieux pour séparer les données entre hébergés malgré un hébergement mutualisé.
+
TuxFamily fait de son mieux pour séparer les hébergés tout en restant un hébergement mutualisé.
En appliquant les conseils ci-dessous, vous ferez en sorte de bénéficier de ces mesures de sécurités.
+
Appliquer les conseils ci-dessous vous permettra de bénéficier de ces mesures de sécurité.
Si vous ne les suivez pas, vous serez entièrement responsable en cas de fuites de données, de vol d'identifiants ou de problèmes dus aux pourriels(spam), hameçonnage(phishing) ou autres attaques faites à partir d'un espace web corrompu.
+
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 ==
 
== Conseils ==
*Lisez ceci [http://en.wikipedia.org/wiki/Filesystem_permissions#Traditional_Unix_permissions Unix permissions]. Sérieusement, ça prend une page pour connaitre les permissions Unix, pas besoin d'un BAC+8.
+
* Apprenez à gérer [http://en.wikipedia.org/wiki/Filesystem_permissions#Traditional_Unix_permissions 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.
* Quand vous travaillez sur votre espace web, mettez les bonnes permissions aux fichiers :
+
* Lorsque vous travaillez sur votre site web, ajustez les permissions sur les fichiers :
** vos ressources statiques (images, scripts, CSS…) devraient être en lecture pour tout le monde (o+r) -- En fait vous devriez les placer dans un espace de téléchargement pour bénéficier de meilleurs performances mais ce n'est pas le propos ici.
+
** vos ressources statiques (images, scripts, CSS) doivent être world-readable (o+r) -- en fait, vous pourriez les placer dans un espace de téléchargement pour de meilleurs performances, mais cela sort du cadre abordé par cette page.
** Les scripts agissants comme points d'entrée (i.e : index.php) devraient être en lecture pour tout le monde (assurez-vous qu'ils ne contiennent pas de données sensibles)
+
** 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 importants)
** les fichiers inclus par les points d'entrées devraient être en lecture pour tout le monde pour peu qu'ils ne contiennent rien de sensibles. Mais n'hésitez pas à les mettre non lisible pour tout le monde quand même.
+
** 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 fichies (.php, ini, etc.) contenant des données sensibles (mot de passe, etc) ne devraient '''JAMAIS''' être en lecture pour tout le monde ; chmod o-rwx est votre ami.
+
** les fichiers (.php, ini, etc.) contenant des mots de passe ne doivent '''JAMAIS''' être world-readable; chmod o-rwx est votre ami.
* Vous devez mettre à jour votre CMS régulièrement, c'est à dire dès la publication d'un correctif pour une faille de sécurité.
+
* Vous devez régulièrement mettre à jour votre CMS, c-à-d dès que possible après la publication d'un correctif.
** Certains CMS intègrent des systèmes d'alertes, utilisez-les.
+
** Pour ce faire, certains CMS comportent un système d'alerte que vous pouvez exploiter.
** Vous devriez aussi suivre les mailing listes ou les flux RSS du CMS que vous utilisez pour rester informer.
+
** Vous pouvez aussi suivre la liste de diffusion et/ou le flux RSS du projet pour rester informé.
** Comme les mises à jour et correctifs peuvent comporter des régressions ou des bugs qui peuvent casser votre site nous vous recommandons fortement de le faire d'abord dans un environnement de test sur votre propre ordinateur (de préférence distinct de votre environnement de développement, vous permettant ainsi de tester votre procédure de déploiement au moins une fois).
+
** 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 faire des backup facilement : utilisez rsync via SSH pour automatisez les sauvegardes de vos espaces web, espaces de téléchargement et vos bases de données (vos bases de données sont exportées dans un fichier SQL chaque nuit) et snvsync pour sauvegarder vos dépots SVN. Garder en tête que ces sauvegardes sont extrêmement utiles pour récupérer ses données après une attaque.
+
* 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.

Revision as of 06:36, 23 May 2012

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èremebt 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és connus s'accumulent et votre site web devient de plus en plus facile à attaquer, jusqu'à ce qu'un jour vous le retrouviez "defacé" 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 group 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, scripts, CSS) doivent être world-readable (o+r) -- en fait, vous pourriez les placer dans un espace de téléchargement pour de meilleurs 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 importants)
    • 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.