Comment protéger son site WEB des attaques DoS Layer 7 (DoS L7)

Les attaques par déni de services (DoS) sont des attaque visent à mettre hors de service un service internet.
Il existe différent type et mode d'attaque dont les attaquer DoS Layer 7 abrégé en DoS L7.

Cet article vous explique ce qu'est une attaque DoS L7, comment ça marche et comment protéger son site internet.

Comment protéger son site WEB des attaques DoS Layer 7 (DoS L7)

Qu'est-ce attaque DoS Layer 7 ?

Un article générique vous présente les différentes attaques DoS et DDoS.
Vous pouvez consulter ce dernier pour avoir une présentation générale de ces attaques :

On parle de Layer 7 pour faire référence à la couche 7 du modèle OSI et TCP/IP.
Le protocole HTTP étant le protocole application de niveau 7.

Voici les différences entre les modèles OSI et TCP/IP.

Différences modèles OSI et TCP/IP avec les couches
https://fr.wikipedia.org/wiki/Couche_r%C3%A9seau

Il s'agit donc d'utiliser le protocole application pour envoyer des requêtes vers un ou plusieurs serveurs pour les saturer.
Par exemple dans le cas d'un serveur SMTP, l'attaque DoS va envoyer d’innombrables emails pour bloquer le traitement des mails légitimes.
Ainsi le service de email sera interrompu.
Dans le cas d'un serveur WEB, le pirate tente d'envoyer des requêtes HTTP en continue vers un site pour submerger ce dernier.
Un autre exemple serait d'appeler une API encore et encore jusqu'à ce que le service plante. En règle générale, les attaques DDoS de couche 7 sont plus complexes que les autres types d'attaques DDoS.
Le serveur WEB (Apache, Nginx, lighttpd) peut répondre mais le protocole application (PHP, Java) ou même la base de données peut saturer.
A partir là, le site WEB ne pourra plus répondre aux requêtes légitimes pour afficher le contenu aux visiteurs.
De ce fait on peut parler de HTTP flood ou SMTP flood.

Comme les attaques DoS L7 sont au niveau applicatif, il est plus difficile de spoofer l'adresse IP ou amplifier l'attaque comme c'est le cas des attaques DoS SYN.
Il faut donc de véritables clients pour effectuer des requêtes vers le serveur WEB.
Cela nécessite de constituer des botnets de serveurs infectés, PC Windows ou d'IoT.

Il faut donc imaginer cela comme si des centaines de navigateurs WEB envoyaient des requêtes en continue sur un site internet.
On peut donc aussi parler de flood HTTP.

Les attaques DoS L7 sur un site WEB

Ci-dessous, le journal d'un serveur WEB avec une IP spécifique qui envoie plusieurs requêtes par secondes.

Exemple d'attaque DoS L7

Échapper aux limite de taux du serveur WEB

Ici c'est une attaque particulièrement inefficace, car elle est très simple à contrer et bloquer.
Un serveur WEB peut très facilement détecter trop de requêtes en un court laps de temps et bloquer l'accès au site.
On parle de taux de limite en anglais rate limit.
Il est même possible de bloquer entièrement l'IP avec fail2ban.
Bien entendu, cela peut fonctionner contre un site WEB mal préparé.

Ainsi une bonne attaque DoS L7 doit pouvoir fournir beaucoup d'IP et espacer les requêtes entre chaque IP pour que le serveur WEB ne la bloque.
Par exemple :

IP1
IP2
IP3
IP4

Puis on boucle là dessus.
Toutefois, il vaut mieux éviter de boucler dans un ordre particulier car on peut alors détecter automatiquement l'attaque à travers un modèle (pattern).

Ainsi pour une attaque DoS L7, il faut donc un botnet assez conséquent.

Viser les pages qui demandent des ressources

Ensuite, il faut viser les pages WEB qui demandent des ressources.
Il est assez idiot d'attaquer la page d'index d'un site WEB comme on le voit souvent.
Il vaut mieux par exemple viser le moteur de recherche du site puisque ce dernier effectue des interrogations SQL.
Ainsi, si vous ne parvenez pas à faire tomber le site WEB, vous pouvez mettre hors de service la base de données.
Le site va mal fonctionner.

Ce sont donc des emplacements du site à protéger en priorité car très vulnérables.

Contourner les caches

Certains sites internet ont de systèmes de cache.
On peut en installer sur WordPress ou utiliser en amont Varnish ou encore des CDN.
Jouer sur les paramètres URLs peuvent permettre de contourner les caches pour maximiser l'attaque DoS L7.

Attaque DoS L7 sur un site WEB

Protéger son site WEB des attaques DoS Layer 7 avec un WAF

Fail2ban

Fail2ban est un logiciel que l'on installe sur le système d'exploitation.
Il analyse les logs et journaux pour détecter des requêtes malveillantes et bloquer celle-ci avec iptables, ipset ou autres firewall.

Fail2ban peut aider pour bannir une adresse IP qui a dépassé le taux de limites.
Mais cela s'arrête là pour contrer les attaques DoS L7 bien pensées ou sophistiquées.

WAF : Cloudflare, Sucuri, Imperva

Le WAF (Web Access Firewall) est la meilleure solution pour se protéger des attaques DoS L7.
Il s'intercale entre le client et le serveur WEB pour le protéger.
Le WAF permet d'établir des règles d'accès pour autoriser ou bloquer des requêtes HTTP.

La protection Anti-DoS de Cloudflare

Quand on parle de protection, il faut prendre en compte plusieurs aspects :

  • détecter automatiquement et bloquer l'attaque entièrement
  • mitiger l'attaque DoS L7, soit donc limiter le portée de l'attaque. Au lieu que l'intégralité de l'attaque arrive sur le serveur WEB final, le WAF peut limiter la portée. Par exemple 20% de l'attaque n'arrive alors que sur le serveur final. Ainsi ce dernier peut tourner fonctionnement.

Les règles de blocage peuvent se faire :

  • sur les adresses IP, ASN du client
  • sur la localisation géographique. Par exemple on peut bloquer un pays.
  • réputation de l'adresse IP. Par exemple les IP des relais TOR de sortie peuvent avoir une mauvaise réputation et le WAF peut en limiter l'accès
  • détecter l'outil utilisé par l'attaque DoS comme SlowLoris, GoldenEye, etc
  • détecter automatique d'une utilisation inhabituelle du protocole HTTP qui peut indiquer une attaque

Les requêtes non légitimes peut être bloquées ou demander de résoudre un captcha.
Il aide aussi à trier les requêtes légitimes, des requêtes automatisées provenant de bots.
Ainsi le WAF peut aussi détecter les tentatives de piratages et de hacks du serveur WEB.

Le blocage de DoS L7 et d'attaques par le WAF de Cloudflare

Liens