Il existe déjà beaucoup d’articles concernant la création de sites web, je ne vais donc pas en faire un de plus là-dessus.

Mais je vais aujourd’hui me focaliser sur la création d’un site web sécurisé, et ce type de tutoriel n’existe pas vraiment.

Prenons l’ordre logique suivant :créer un site web sécurisé

1. Créer un site Internet c’est pas mal.

2. Si le site a en plus un bon design c’est bien.

3. Si le site est optimisé côté référencement c’est très bien.

4. Si en plus le site est sécurisé c’est parfait.

Nous allons donc ici nous focaliser sur la dernière partie.

Je vais écrire cet article sous forme de ressources à suivre et à noter pour y revenir ultérieurement mais je ne vais pas prendre toute la création d’un site dans les détails.

Si ce dernier point vous intéresse, dites-le moi et je ferai un article différent, plus ciblé.

Comment créer un site web sécurisé ?

Commençons par le commencement, pour créer un site web, il faut déjà un hébergement et un nom de domaine.

Nous ne parlerons pas du nom de domaine car il ne sera pas très utile côté sécurité.

Il y a deux possibilités pour l’hébergement, soit il est mutualisé, soit il est dédié.

Un hébergement mutualisé est un hébergement sur un serveur commun, vous êtes donc sur le même serveur que d’autres personnes.

Voilà par exemple plusieurs sites qui sont sur le même serveur (l’adresse IP est la même pour chacun d’eux, mais les propriétaires sont différents):

hebergement mutualisé

Les avantages des hébergements mutualisés sont les suivants :

  • Le prix.
  • La facilité de mise en place.
  • La sécurité du serveur gérée par les administrateurs sécurité de l’entreprise qui vous fournit le service.

Les inconvénients sont les suivants :

  • Peu de flexibilité.
  • Partage de ressources entre les sites hébergés.

Un hébergement dédié quant à lui est un hébergement sur un serveur qui n’appartient qu’à vous. Vous êtes donc le seul propriétaire de cette adresse IP.

Pour 20€ par mois vous obtenez un 8 cœurs avec 16Go de RAM, de quoi satisfaire tous vos besoins sans problèmes.

Petite note en passant : Si un ancien propriétaire détenait votre serveur avant vous et que maintenant vous en êtes le propriétaire, il se peut qu’il existe toujours des traces de l’ancienne activité.

L’exemple typique est celui du serveur mail (serveur qui sert donc uniquement à envoyer des e-mails) : Si l’ancien propriétaire spammait avec le serveur, vous aurez donc potentiellement toujours votre serveur inscrit sur des listes noires.

Ce cas reste cependant rare et il est toujours possible de contacter les gestionnaires de ces listes en prouvant que le propriétaire a changé.

Les avantages des hébergements dédiés sont les suivants :

  • Flexibilité, vous êtes propriétaire et faîtes donc ce que vous voulez avec tout le serveur.
  • Vitesse, toutes les ressources vous sont réservées.

Les inconvénients sont les suivants :

  • Sécurité à gérer soi-même.
  • Prix.

Lorsque je dis que la sécurité est à gérer soi-même, ce n’est pas toujours le cas à 100%. En effet certains hébergeurs proposent tout de même des protections minimales, comme la protection anti-ddos de ovh, ainsi que d’autres services comme la présence de techniciens prêt à agir rapidement.

À partir de maintenant, soit vous débutez et vous choisissez donc l’hébergement mutualisé, soit vous vous sentez prêt et vous souhaitez migrer vers un serveur plus rapide dont vous allez gérer la sécurité vous-même.

Vous êtes donc concerné par le paragraphe suivant si vous êtes dans le second cas, sinon vous pouvez directement passer à la partie « Création du site ».security

Sécurité du serveur dédié

La sécurité d’un serveur prend un livre entier à elle seule, je ne vais pas en parler en détail dans cet article.

Sachez que les principes de bases sont les suivants :

Retirer les services non utiles

Beaucoup d’attaques reposent sur des vulnérabilités contenues dans les services.

Un service est une application qui tourne en permanence en arrière plan et attend pour exécuter des tâches, comme votre antivirus sur votre PC personnel.

Admettons cette fois un service pour l’imprimante réseau qui contient une faille. Ce service écoute sur des ports.

Il est possible pour un pirater de scanner une machine à la recherche de tous les ports ouverts et ainsi d’accéder à notre imprimante pour exploiter la faille. Résultat : Il entre dans le serveur.

Pour scanner vos ports vous pouvez utiliser cette commande Nmap :

sudo nmap -T Aggressive -A -v 127.0.0.1 -p 1-65000

Attention : Scanner les ports d’une machine qui ne vous appartient pas est illégal, vous êtes prévenu.

Les services non utilisés ou vulnérables doivent donc être désactivés.

Voici également un script Bash pour connaisseurs qui fait office de pare-feu pour bloquer tous les ports sauf ceux de base (80, 22, 53, etc…) :

Accéder au serveur en local

Ou au moins utiliser des connexions chiffrées.

À chaque fois que vous communiquez avec votre serveur, les données transmises peuvent être récupérées. Exemple de capture de mot de passe avec WireShark.

Si vous ne vous connectez pas en local sur le serveur lui-même, evitez donc les connexions non chiffrées comme HTTP, FTP, Telnet. Et préférez les connexions chiffrées comme HTTPS, SFTP (Secure FTP) et SSH (Secure Shell).

Vous pouvez également utiliser PGP/GPG pour le chiffrement des communications.

Installer les patchs de sécurité et les mises à jour

Il y a même pas un mois, un bug dans le noyau de Linux datant d’il y a cinq ans vient d’être trouvé. Ce bug permet d’exécuter du code malveillant ou de faire crasher le système.

Voir : http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2014-0196

Ce petit exemple suffit à affirmer que des failles de sécurité sont découvertes tous les jours, et non pas que des petites failles sans dangers. Il est donc indispensable de mettre son système et ses services à jour dès que possible.

HeartBleed est aussi un bon exemple sur le fait que même dans les services soit-disant très sécurisés, il y a des failles.

Gérer les comptes utilisateurs

Chaque utilisateur doit avoir des droits spécifiques et restreints à un dossier personnel.

On conseille également de ne pas se connecter en root, mais avec compte restreint et de faire très attention lors de l’exécution de commandes avec des privilèges d’administrateur.

Chaque administrateur devrait avoir son propre compte, chaque nom d’utilisateur de base devrait être renommé, et ces comptes ne doivent bien sûr pas être partagés.

Vérifier les logs

Les logs contiennent beaucoup d’informations sur les problèmes et accès infructueux. Vous pouvez utiliser des utilitaires comme Fail2Ban pour les scanner et bannir automatiquement les attaquants potentiels ou vérifier les logs manuellement.

Voici les principaux répertoires de logs :

  1. /var/log/message : Logs système et de l’activité courante.
  2. /var/log/auth.log : Logs d’authentification.
  3. /var/log/kern.log : Logs Noyau.
  4. /var/log/cron.log : Logs des Cron jobs.
  5. /var/log/maillog : Logs des serveurs mail.
  6. /var/log/boot.log : Logs du boot système.
  7. /var/log/mysqld.log : Logs pour base de données MySQL.
  8. /var/log/secure : Logs d’authentification.
  9. /var/log/utmp ou /var/log/wtmp : Logs de login.
  10. /var/log/apache2/error.log : Logs Apache.

Vous pouvez également afficher les fichiers modifiés durant les dernières 48h avec la commande :

find . -mtime -1 -print | more

Faire des sauvegardes régulières

En cas de problème il est toujours plus agréable de se remettre sur pied en deux clics que de tout refaire à partir de zéro.

Sauvegardez donc régulièrement vos fichiers, vos informations utiles, vos bases de données, etc…

Voir une liste des logiciels spécialisés dans la sauvegarde (en anglais) : http://en.wikipedia.org/wiki/List_of_backup_software.

Utiliser des outils de sécurité

Vous pouvez utiliser des systèmes de détection d’intrusion pour automatiquement détecter (et bloquer) les attaquants.

Vous pouvez utiliser des infrastructures de sécurité comme SeLinux pour contrôler les accès aux éléments du système.

Vous pouvez aussi utiliser des pots de miel pour piéger les attaquants.

Choisir des mots de passe sécurisés

Un mot de passe n’est pas un mot de passe si il s’appelle « 0123456 ». On recommande habituellement de choisir un mot de passe long avec au moins une lettre et un caractère spécial.

Plus d’informations sur les mots de passe ici et . Ah et .

Se tenir informé

Les programmes et mises à jour ne font pas tout, surtout pas lorsque vous donnez votre mot de passe à votre collègue.

Restez à l’affût des informations sur la sécurité et soyez prêt à réagir.

Voici diverses ressources pour vous tenir informé :

http://www.openwall.com/ : Publications et discussion autour de la sécurité des systèmes libres.

https://www.owasp.org/index.php : Communauté de sécurité informatique.

http://security.stackexchange.com/ : Base de connaissances et forum concernant la sécurité informatique (en anglais).

http://www.php.net/manual/fr/security.php : Principes de sécurité en PHP.

http://doc.ubuntu-fr.org/securite : Principes de sécurité pour Ubuntu.

http://www-desir.lip6.fr/~gonzales/teaching/systeme/cours6_poly.pdf : Sécurité minimale sous Unix.

http://httpd.apache.org/docs/2.4/misc/security_tips.html : Principes de sécurité pour Apache.

http://www.debian.org/doc/manuals/securing-debian-howto/index.fr.html : Principes de sécurité pour Debian.

Vous pouvez bien entendu apprendre l’attaque pour mieux vous défendre (hacking éthique), notamment via des distributions spécialisées pour le tests comme Damn Vulnerable Linux.

Création du site

À partir de maintenant, j’estime que vous avez un hébergement dédié ou mutualisé ainsi qu’un nom de domaine.

Il nous faut une base à notre site, et même si vous êtes programmeur expérimenté, je recommande d’utiliser un système de gestion de contenu.

Vous pouvez également vous orienter vers des offres de créations de site web faciles qui prennent en charge directement les noms de domaines, adresses mail, réseaux sociaux, référencement etc…très pratique pour vous simplifier la tâche si vous débutez.

Un système de gestion de contenu (CMS en anglais pour Content Management System) est un ensemble d’outils permettant de publier, éditer et maintenir du contenu tout en étant régulièrement amélioré et mis à jour via une communauté de développeurs.

Si vous ne pouvez ou devez pas utiliser de CMS, il faudra donc faire particulièrement attention aux bonnes pratiques de programmation, passez directement à la partie suivante de cet article.

Choisir un CMS est efficace pour trois raisons principales :

  • Cela vous simplifie énormément la vie en évitant de tout faire seul (ce qui prendrait 10 ans, littéralement).
  • La communauté autour des CMS propose un tas de fonctionnalités pour votre site, et vous aide aussi à résoudre les problèmes.
  • Une grande importance est attribuée à la sécurité : Des mises à jour de sécurité sont régulièrement publiées.

Il y a cependant un double tranchant côté sécurité, car si un pirate trouve une faille dans un site ayant un certain CMS, il est probable que votre site contient lui-aussi cette faille si vous utilisez ce même CMS.

Parmi les CMS les plus populaires, j’utilise et je recommande WordPress, qui permet de créer pratiquement tous les types de sites possibles.

Il est plutôt orienté blogging, mais permet grâce à ses multiples thèmes de créer des versions très personnalisées de sites web.

Vous pouvez directement télécharger WordPress ici : http://fr.wordpress.org/.

Les étapes d’installation et les documentations sont très bien expliquées, la célèbre installation se fait en 5 minutes !

(Pour le cas des hébergement mutualisés, on vous propose souvent d’installer WordPress directement dès l’achat)

Si vous avez installé WordPress, je vous invite ensuite à lire l’article : Sécuriser son site WordPress. Vous pouvez aussi lire Comment Sécuriser son Blog.

Si vous utilisez un autre CMS, je n’aurai malheureusement pas la possibilité de vous faire un guide complet.

Programmer de façon sécurisée

Si on admet que votre serveur est convenablement protégé ainsi que votre installation WordPress, il reste à s’assurer d’avoir en tête les bonnes pratiques de sécurité en programmation.

Ces bonnes pratiques incluent notamment toute la prévention côté failles web :

Gare au plugins !

Les plugins c’est bien, mais il y a un mais !

Je parle notamment des plugins pour les CMS qui une fois installés contiennent des failles.

Cela arrive encore trop souvent car les développeurs ne s’intéressent pas tous à la sécurité de leur plugins et ne les mettent pas à jour régulièrement.

Faire des audits de sécuritésite internet sécurisé

Un site web sécurisé demande beaucoup de tests.

Il est possible de faire un audit de sécurité par des professionnels pour repérer les failles possibles d’un site ou serveur et générer un rapport avec les moyens de correction.

Vous pouvez également scanner votre propre site à la recherche de vulnérabilités via des scanners comme Nikto ou Acunetix.

Attention : Là encore, ce n’est pas légal de scanner les sites qui ne vous appartiennent pas.

Se renseigner et se former

Il s’agit d’un élément essentiel car le constat est le suivant :

Beaucoup d’attaques réussies sont dues à la faute humaine.

Il est donc indispensable, lorsqu’on veut créer un site web sécurisé, de se former un minimum concernant la sécurité de son site et de son serveur.

Cette auto-formation est notamment possible via les ressources en ligne, dont les articles que vous trouverez ici.

Je ne peux malheureusement pas tout expliquer dans les détails dans un seul article, cela dit j’éditerai l’article au besoin, notamment si vous avez quelque chose à ajouter !

Articles similaires

15 Commentaires
Cliquez ici pour ajouter un commentaire

  • Un bon article qui aidera sans aucun doute les personnes voulant sécuriser leur site web.
    Merci Michel !

    Répondre
  • LeHackerDesBois
    25 juin 2014 11 h 42 min

    merci Michel pour ces informations qui je pense en aideront plus d’un ^^

    Répondre
  • merci Michel,article bien détaillé et éfficace.

    Répondre
  • j’aimerai etre un grand hacker !!

    Répondre
  • en fin un lamdar grace a ton site j’ais trouve tout ce que je cherchais merci infiniment pour ce tuto ceci ma beaucoup apporter de surplus à ma connaissance

    Répondre
  • Répondre
  • conseil en infrastructure web
    18 avril 2018 11 h 17 min

    Excellent article. Justement, la conception d’un site web ne s’arrête pas sur le graphisme ou bien l’ergonomie, la sécurité est aussi un critère primordial.

    Répondre
  • 8 ans après ca donne quoi ?:)

    Répondre
  • bonne soirée michel pour les gens qui souhaite protéger leur site est que beaucoup de gens qui débute oublie.

    il ne semple important de prendre cela en contre. sri contrôle d’intégrité des ressources web externes.
    ici nous allons parler du subresource integrity sri.

    un mécanisme de sécurité qui permet de s’assurer que les ressources provenant de sites externes n’ont pas
    été modifiées.

    le danger des ressources externes. l’utilisation de ressources externes lorsque l’on développe une application web
    est devenue monnaie courante. que ce soit pour l’affichage. l’inclusion d’image la mise en place de trackers.

    ou simplement pour utiliser des fonctions java script prés développées. ce faisant nous déléguons à d’autres sites
    web une partie de la sécurité. de notre propre application.

    que se passerait-il en effet si le site web externe depuis lequel je télécharge un fichier java script est compromis. ?

    la réponse est simple l’attaquant sera en mesure de modifier le fichier java script téléchargé par tous mes visiteurs
    via mon site.

    et de leur faire exécuter des instructions java script.

    pour rappel le java script est un langage très pratique et puissant utilisé par les navigateurs pour rendre
    les pages web dynamiques.

    lorsqu’un attaquant peut faire exécuter à ses victimes du code java script sous son contrôle il peut
    rediriger les utilisateurs vers d’autres sites web. voler les jetons de sessions et identifiants des utilisateurs.

    ou simplement modifier de manière importante la façon dont notre site web s’affiche on parle de défiguration.

    le risque de l’utilisation de ressources externes est aisé à comprendre lorsque l’on parle de fichiers java script.
    insérés grâce à une balise telle que celle-ci.

    mais d’autres ressources externes peuvent également être impactées comme les fichier css ou les icônes
    au travers la balise html link . donc juste un petit conseil regarder de t’elle façon sri peut vous aidée dans la sécurité
    de votre site afin de mieux vous protéger ainsi que vos visiteurs .

    Répondre
    • Très bonne remarque ! Et un peu de documentation à ce sujet : https://developer.mozilla.org/fr/docs/Web/Security/Subresource_Integrity
      C’est quelque chose assez technique et relativement peu utilisé à l’heure actuelle (à part pour certains CDN). Mais définitivement à prendre en compte !

      Répondre
      • bonne soirée michel encore un grand merci pour le lien que tu n’a donner
        vraiment très bon. bien que certaine parti sont pas facile

        par contre pour une petite remise a niveau sûr la sécurité rien de t’elle.
        cela n’a fait voir des chose super intéressante très loin des connaissance

        que je peut avoir. surtout niveau cdn donc pour les gens que cela peut intéresser
        je conseil de voir . est encore merci pour cela michel

        Répondre
  • bon soir michel merci beaucoup pour le lien https://developer.mozilla.org/fr/doc/web/security/subresource_integrity très bon mais dur pour comprendre certaine
    parti mais très bien vue de ta part très intéressant de voir cela je conseil
    de voir pour les gens merci beaucoup pour cela michel
    pour les problème matériel la source vient bien comme tu le dit du monde
    informatique bien vue aussi bon de voir cela pour les gens

    Répondre

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Vous devez remplir ce champ
Vous devez remplir ce champ
Veuillez saisir une adresse e-mail valide.

Menu