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 :

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):

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 ».

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).
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.
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 :
- /var/log/message : Logs système et de l’activité courante.
- /var/log/auth.log : Logs d’authentification.
- /var/log/kern.log : Logs Noyau.
- /var/log/cron.log : Logs des Cron jobs.
- /var/log/maillog : Logs des serveurs mail.
- /var/log/boot.log : Logs du boot système.
- /var/log/mysqld.log : Logs pour base de données MySQL.
- /var/log/secure : Logs d’authentification.
- /var/log/utmp ou /var/log/wtmp : Logs de login.
- /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.
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’affut 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é
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 s’auto-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 !















0 commentaires: