Solutions pour la sécurité

Comment ne pas perdre tous les efforts de création du site ?

24/04/2021

Sommaire du dossier


Pourquoi parler de sécurité ?

La performance ou l'accessibilité sont directement liées au Numérique Responsable car elles ont des impacts directs sur le niveau de maturité.

Mais qu'en est-il de la sécurité ? Elle est liée de deux manières avec le Numérique Responsable.

Le Numérique Responsable influe sur la sécurité

En effet, un des objectifs du Numérique Responsable est de se concentrer sur les fonctionnalités utiles, utilisables et utilisées et sur la gestion en fin de vie. Or en faisant cela, la surface d'exposition aux menaces est non seulement réduite, mais les bugs divers sont également remontés plus fréquemment car les fonctionnalités sont toutes utilisées par le plus grand nombre. De plus les fonctionnalités et données en fin de vie soit par évolution soit par abandon sont intégralement supprimées ne laissant donc aucun code mort qui pourrait être mis à profit par des hackers.

La sécurité impacte indirectement le Numérique Responsable

Si aucun investissement sur la sécurité n'est réalisé lors de la conception d'un site ou de toute application, toute attaque nécessitera une réaction pour corriger non seulement l'origine de la brèche de sécurité mais aussi ses impacts. Et il est bien connu que la correction de tout bug, quel qu'il soit, est beaucoup plus onéreuse (en euros, en charge) que de le prévenir.

Mais en plus, tout le travail qui a été réalisé pour que les internautes viennent grâce à un contenu de qualité, un bon référencement, un bon réseau de liens, peut tomber à l'eau si l'impact touche par exemple des données personnelles ou immobilise le site trop longtemps.

Par où commencer ?

Quelques rappels

Il est possible d'avoir une vision complète sur la sécurisation d'un site Web en recherchant sur Internet(1); toutefois, ces quelques notions seront intéressantes à (re)voir pour pour mieux apréhender la suite de l'article.

Pare-feu ou firewall

Un pare-feu (ou firewall en anglais) protège simplement un ordinateur ou un réseau d’ordinateurs des intrusions en provenance d’un réseau tiers ou externe.
Source et information complémentaire : Le pare-feu matériel : le système de sécurité externe ⎋(2)

Web Application Firewall

Un Web Application Firewall (WAF) est un type de pare-feu qui protège le serveur d'applications Web dans le backend contre diverses attaques. Le WAF garantit que la sécurité du serveur Web n'est pas compromise en examinant les paquets de requête HTTP / HTTPS et les modèles de trafic Web.
Source et information complémentaire : Web Application Firewall ⎋(3)

Quelques types d'attaque

Une cyberattaque est tout type d’action offensive qui vise des systèmes, des infrastructures ou des réseaux informatiques, ou encore des ordinateurs personnels, en s’appuyant sur diverses méthodes pour voler, modifier ou détruire des données ou des systèmes informatiques.
Les 10 types de cyberattaques les plus courants :

Source et information complémentaire : Les 10 types de cyberattaques les plus courants ⎋(4)

Et donc, pour mon site ?

De base, mon site n'en a pas. Ni de JavaScript. Voilà donc des sources potentielles de vulnérabilités éliminées.(5)

Mais comme je fais mon site moi-même, je dois être vigilant ; je n'ai pas de culture de développement et donc je ne bénéficie ni de l'expérience ni du fait que le code est testé par d'autres développeurs. Mais j'ai des connaissances générales issues de mon long passé de production.

On ferme tout !

Et la base est de tout interdire et de n'ouvrir que ce qui est nécessaire. Tiens, cela ne vous rappelle pas l'esprit du Numérique Responsable ? Seules les fonctionnalités utiles sont à implémenter. Il en est de même pour la sécurité.

On met à jour !

Une autre base de la sécurité est d'avoir un système à jour pour toutes ses composantes. La moindre obsolescence se transforme en potentielle vulnérabilité. Les pirates sont inventifs et plein de ressources et sont à la recherche permanente de nouvelles failles à exploiter.

Et l'être humain dans tout ça ?

La dernière base de la sécurité est la plus importante en terme de probabilité. Il en va de même pour la détection des bugs d'une application.
Le plus grand risque se trouve toujours entre la chaise et le clavier, donc vous ou moi. C'est pour cela que les bases précédentes sont vitales, car on ne maîtrise pas ce qu'une personne peut faire. Malgré les formations, les présentations de bonnes pratiques, nous faisons toujours une erreur et sans une politique stricte pour protéger le site, la catastrophe est à notre porte, prête à frapper.

La sécurité comme un oignon

En effet, la sécurité va s'appliquer couche par couche et on va les éplucher une après l'autre pour passer en revue tous les axes de sécurisation.

Côté box

Pour rappel, j'héberge mon site chez moi sur un Raspberry Pi sous Raspberry Pi OS ⎋(6) à jour en permanence. Il est donc connecté derrière ma box qui n'autorise à entrer que les protocoles http (80) et https (443) vers le serveur. Tout le reste concernant les connexions entrantes d'internet vers mon réseau interne est bloqué sur la box si elles ne sont pas issues d'une connexion sortante.

Côté serveur

Système d'exploitation

Il s'agit d'un système Debian adapté au Raspberry Pi. Il est systématiquement à jour afin que toutes les corrections de sécurité soient prises en charge dès que possible.

Afin de limiter les accès au serveur, un firewall basé sur iptables ⎋(7) est mis en place pour tout bloquer et n'ouvrir que ce qui est nécessaire pour que je puisse utiliser les fonctionnalités de mon serveur et l'administrer.

À ce firewall, s'ajoute une couche de bannissement basée sur les adresses IP ayant généré des erreurs répétées d'accès au site Web : erreur 404 notamment. Il s'agit de fail2ban ⎋(8).
Toute adresse IP ayant généré des erreurs se voir bannir pendant quelques heures et en cas de récidive, la durée est portée à plusieurs jours.

Serveur Apache

Le serveur Apache ⎋(9) est protégé avec un Web Application Firewall ; il s'agit du module mod_security ⎋(10) qui a pour objectif de bloquer les flux lorsque ceux-ci correspondent à des règles identifiées d'attaque.

Côté site Web lui-même

La sécurité est déclinée à deux niveaux.

Le premier est réalisé avec un fichier .htaccess ⎋(11) dont les règles que j'ai mises en place sont issues de bonnes pratiques que l'on retrouve par exemple avec des extensions de sécurité associées à WordPress.

Le deuxième est lié aussi au fichier .htaccess mais pourrait être mis en directive dans le serveur Apache ou dans les headers des pages. Il s'agit de la Content Security Policy ⎋(12) qui permet de restreindre l'origine du contenu dans une page web à certains sites autorisés. Dans mon cas, les restrictions sont maximales vu que je n'ai pas de Javascript ni de feuilles de styles externes.

Comment contrôler ?

Les outils que j'utilise se déclinent à trois niveaux :

Cet ensemble d'outils est un exemple de ce qui peut se faire, sachant que les meilleurs audits se feront avec des outils payants qui se basent sur des bases de données bien plus complètes que celles disponibles avec les outils basiques.

En conclusion

Je n'ai parlé ici que des problèmes de sécurité liés aux vulnérabilités et non à la sécurisation du site qui passe aussi par des sauvegardes. Pensez-y et ayez toujours la capacité à revenir en arrière lorsque cela est nécessaire.

Tout est en place, les notes sont très bonnes pour tous les outils de mesure (entre A et A+).
Faut-il se reposer sur ses lauriers ? Loin s'en faut ! La sécurité est un processus continu car les menaces évoluent, se renouvellent, se diversifient et le site va aussi évoluer. Il faut toujours contrôler le site, mettre à jour les logiciels avec leur configuration et prendre en compte les dernières menaces lorsque la protection est dépendante d'une configuration comme le fichier .htaccess.

Un dernier point avant de finir cet article. Mon site n'a aucune raison de répondre au Réglement Général de la Protection des Données ⎋(18).
En effet, aucune donnée personnelle n'est collectée. Toutefois, si le sujet vous intéresse vous pouvez utiliser le logiciel open source PIA ⎋(19) ; il facilite la conduite et la formalisation d’analyses d’impact relatives à la protection des données (AIPD) telles que prévues par le RGPD.



Notes et renvois

(1) : Voir l'excellent document très technique Sécuriser un site Web, de l'ANSSI dans un autre onglet. Il permet de se faire une idée assez exhaustive de tout ce qu'il faut entreprendre. ┃ retour au texte, note (1) ䷀
(2) : lien envoyant dans un autre onglet sur le site de IONOS ┃ retour au texte, note (2) ䷀
(3) : lien envoyant dans un autre onglet sur le site de WikiPedia ┃ retour au texte, note (3) ䷀
(4) : lien envoyant dans un autre onglet sur le site de NetWrix ┃ retour au texte, note (4) ䷀
(5) : Voir l'article La sécurité d'un site Web, qui fournit des explications techniques sur le sujet sur le site de mozilla, dans un autre onglet ┃ retour au texte, note (5) ䷀
(6) : lien envoyant dans un autre onglet en anglais sur le site de Raspberry ┃ retour au texte, note (6) ䷀
(7) : lien envoyant dans un autre onglet sur le site de WikiPedia ┃ retour au texte, note (7) ䷀
(8) : lien envoyant dans un autre onglet sur le site de IONOS ┃ retour au texte, note (8) ䷀
(9) : lien envoyant dans un autre onglet sur le site de Hostinger ┃ retour au texte, note (9) ䷀
(10) : lien envoyant dans un autre onglet sur le site de Ubuntu FR ┃ retour au texte, note (10) ䷀
(11) : lien envoyant dans un autre onglet sur le site de IONOS ┃ retour au texte, note (11) ䷀
(12) : lien envoyant dans un autre onglet sur le site de WikiPedia ┃ retour au texte, note (12) ䷀
(13) : lien envoyant dans un autre onglet sur le store en anglais des extensions de Chrome ┃ retour au texte, note (13) ䷀
(14) : lien envoyant dans un autre onglet sur le site en anglais de Qualys ┃ retour au texte, note (14) ䷀
(15) : lien envoyant dans un autre onglet sur le site en anglais de Immuniweb ┃ retour au texte, note (15) ䷀
(16) : lien envoyant dans un autre onglet sur le site de Mozilla ┃ retour au texte, note (16) ䷀
(17) : lien envoyant dans un autre onglet sur le site en anglais de wfuzz ┃ retour au texte, note (17) ䷀
(18) : lien envoyant dans un autre onglet sur le site de la CNIL ┃ retour au texte, note (18) ䷀
(19) : lien envoyant dans un autre onglet sur le site de la CNIL ┃ retour au texte, note (19) ䷀