En poursuivant votre navigation sur le site, vous acceptez l'utilisation de cookies pour votre confort et pour réaliser des statistiques de visite. En savoir plus

Paroles d'experts
Retrouvez ici notre série d’articles répondant à vos problématiques

Optimiser sa défense face aux attaques DDoS

On dénombre des attaques DDoS tous les jours. Certaines d’entre-elles sont considérables et puissantes. Les éditeurs de protection ou les cibles en profitent alors pour communiquer sur leur réussite, ce qui nous permet d’obtenir des données chiffrées.
C’est ainsi que Amazon a communiqué sur une attaque DDoS de 2,2 Tb/s subie en février 2020, ou encore la société française OVH qui subissait en 2016 une attaque dépassant le Tb/s.

Sommaire :

  1. Introduction
  2. DDoS des couches réseau et transport
  3. DDoS applicatif
  4. Récapitulatif des bonnes pratiques
  5. Glossaire

Introduction

DDoS signifie en anglais Distributed Denial of Service, déni de service distribué en français. C’est une attaque qui a pour objectif de rendre indisponible un service pour les utilisateurs légitimes.

Le principe de base de l’attaque est de rendre indisponible une ressource, un service, un serveur ou un lien réseau par un volume important de trafic envoyé ou un nombre élevé de connexions établies. L’attaque est dite distribuée quand elle est menée depuis plusieurs sources, par exemple depuis plusieurs ordinateurs ou serveurs.

Illustration d'une attaque DDoS


Historiquement, ces attaques ciblaient surtout la surcharge de la bande passante. Ainsi, un réseau important pouvait facilement submerger un réseau plus modeste. Cependant, les attaquants ne possédaient pas nécessairement un réseau avec une bande passante importante. C’est pourquoi ils se sont appuyés sur des botnets, leur apportant également le bénéfice de l’anonymat. Un botnet est un réseau de machines infectées prêtes à envoyer des requêtes vers une cible sur simple demande d’un serveur de contrôle.

Les attaques ont ensuite beaucoup évolué et se sont complexifiées, devenant au fur et à mesures plus conséquentes en nombre et en termes de trafic grâce à l’exploitation de vulnérabilités et d’effets de levier.

Évolution des attaques DDoS selon Google

Source : Google, Exponential growth in DDoS attack volumes, 16 octobre 2020


Sur ce graphique, on peut voir trois types d’attaques DDoS différentes :

  • En rouge le débit des attaques, avec pour objectif de saturer la bande passante ;
  • En bleu le nombre de paquet par seconde afin saturer les équipements réseaux ;
  • En vert le nombre de requête par seconde pour saturer l’applicatif.

La suite de cet article détaillera les différentes attaques DDoS et les moyens à mettre en œuvre pour s’en prémunir.

DDoS des couches réseau et transport

Tout d’abord, voici un rappel des couches 3 et 4 du modèle OSI mises à mal dans le cadre des attaques DDoS.

Couches réseaux du modèle OSI

Source : Image du domaine public issue de Wikipedia


La couche 3 est la couche de réseau dédiée au routage des paquets IP, ICMP et ARP. La couche 4 est la couche de transport qui gère les couches 1 à 3 et qui assure une transmission sans erreur grâce à TCP et UDP.

Sur ces couches, les attaques de déni de service sont de deux types, volumétriques et protocolaires et peuvent avoir différents effets :

  • La surcharge de la bande passante d’un réseau ou d’un lien réseau ;
  • La surcharge des capacités d’un équipement réseau ;
  • Le dépassement du nombre de connexions simultanées d’un équipement réseau ou d’un serveur.

Il existe différentes méthodes utilisées pour mener ces attaques, voici les plus répandues :

ICMP Flood

ICMP Flood ou Ping Flood est une attaque DDoS qui tire avantage du protocole ICMP, normalement utilisé pour tester la connectivité entre deux machines. Lorsqu’une requête est envoyée à une machine distante, celle-ci répond toujours avec la même quantité et la même taille de paquet.
Pour cette attaque, l’attaquant doit donc posséder une bande passante plus importante que sa cible.

Smurf Attack

La smurf attack emploie également le protocole ICMP et partage des similarités avec l’attaque précédente. Cependant, celle-ci est une attaque par rebond et par amplification, c’est-à-dire qu’elle se sert de machines tierces pour réaliser l’attaque afin de la rendre plus importante.

L’attaquant envoie une requête ICMP en usurpant l’adresse IP de sa cible afin de rediriger la réponse de la requête vers celle-ci. La requête est émise en broadcast d’un réseau tiers, l’ensemble des machines de ce réseau répond alors vers la cible. Plus le réseau est grand et peuplé de machine, plus l’attaque aura de l’envergure.

Illustration de la Smurf Attack


TCP SYN Flood

Cette attaque se base sur le protocole TCP. Pour rappel, l’initialisation d’une connexion TCP fonctionne en trois temps :

Déroulement d'une connexion TCP


L’attaque SYN Flood envoie de nombreux paquets SYN à la cible depuis des IP différentes (il s’agit des IP d’un botnet ou d’IP usurpées). La cible reçoit en apparence des requêtes légitimes auxquelles elle renvoie un paquet SYN-ACK et attend la réponse ACK. L’attaquant ne renvoie jamais cette réponse, laissant des connexions entre-ouvertes en attente qui saturent le nombre de connexions concurrentes que la cible peut gérer.

Illustration d'une attaque SYN Flood


Une machine possède 65535 ports. Un client utilise un port par connexion ouverte et est donc rapidement limité. Mais un serveur est capable d’en gérer davantage. En effet, un service écoute sur un port précis du serveur. Il identifie ses clients grâce à leur IP et à leur port de communication permettant alors de dépasser la limite des 65535 connexions simultanées.
Le nombre maximum de connexions entrantes concurrentes d’une machine est le nombre maximum de handle réseau pour Windows et le nombre maximum de descripteur de fichier pour Linux.

Pour Windows, cette valeur est configurée par défaut à 16 777 214 connexions, dans la clé de registre :
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Tcpip\Parameters\TcpNumConnections

Pour Linux, la valeur dépend de la configuration et des performances du serveur. La commande suivante permet d’obtenir cette valeur :
# sysctl fs.file-max

Attention, cette valeur peut être définie par la distribution ou calculée par rapport à la mémoire RAM de la machine. Une valeur différente peut-être attribuée pour chaque utilisateur, valeur qu’il est possible d’obtenir avec :
$ ulimit -Hn

Comment s'en protéger ?

Les attaques DDoS basées sur ICMP sont aisément déjouées grâce à certaines bonnes pratiques sont devenues les configurations par défaut dans les équipements et ce depuis de nombreuses années. Voici les plus importantes :

  • Désactiver le protocole ICMP provenant du WAN ;
  • Limiter la taille des paquets ICMP ;
  • Imposer une limitation de débit ou de quantité de paquet ;
  • Désactiver la transmission et la réponse aux paquets ICMP en broadcast.

D’autres bonnes pratiques s’ajoutent pour contenir les attaques TCP SYN FLOOD :

  • Allocation de « Micro-Blocks » afin de diminuer la consommation de mémoire : pour chaque requête SYN, le serveur alloue un espace mémoire de quelques octets seulement, qu’il transformera en objet réseau complet une fois l’initialisation validée ;
  • Utilisation de « SYN Cookies » pour vérifier la légitimité des clients et leur allouer la mémoire suffisante ;
  • Mise en place du « Stack Tweaking », une amélioration de la configuration de la stack IP visant à réduire temporairement le timeout des connexions bloquantes.

À ces moyens s’ajoute d’autres solutions comme les « Scrubbing Center », des solutions anti-DDoS propriétaires. Elles sont capables d’assumer des volumes importants de trafic généré par des attaques (plusieurs Térabits par seconde) puis de l’analyser afin de rediriger l’ensemble du trafic malveillant vers un trou noir et de renvoyer le trafic légitime au client. Cette méthode s’appelle le Blackholing.
Ces systèmes de protection fonctionnent sous plusieurs modèles : à la demande en manuel ou en détection automatique.

Les attaques DDoS sur les couches 3 et 4 ont toujours cours mais sont désormais contrecarrées par les fournisseurs d'environnements cloud vers lesquels se tournent de plus en plus d'entreprises. C’est pourquoi elles ont évolué vers la couche 7, la couche applicative, pour passer outre ces protections et parfois être encore plus efficaces.

DDoS applicatif

Les attaques DDoS applicatives ont le même objectif que les attaques précédemment décrites : rendre un service indisponible, mais les méthodes employées sont différentes. Ces dernières se déroulent sur la couche 7 du modèle OSI, la couche applicative avec notamment les protocoles HTTP, FTP, SMTP, etc.

Ici, l’usage des protocoles réseaux, de transport et d’application ne sont pas détournés afin d’établir une connexion valide jusqu’à leur cible. Les clients et les applications échangent entre eux légitimement, ce qui complique la détection des attaques.

Pour répondre aux requêtes de leurs clients, les applications vont consommer plusieurs types de ressources : Le CPU, la RAM, le réseau, etc. L’objectif lors d’une attaque sur la couche 7 est de requêter une application afin d’augmenter l’usage de ces ressources jusqu’à en saturer l’une d’elle et rendre l’application indisponible.

Surcharge d’une ressource critique

Comme pour les attaques sur les couches 3 et 4, les attaquants cherchent à optimiser leurs offensives pour les amplifier. C’est pourquoi certaines ressources sont plus intéressantes que d’autres, mais elles sont spécifiques à chaque cibles et applications.

Pour les applications web, via le protocole HTTP, voici les ressources sensibles types :

  • Chargement de fichiers volumineux, souvent des médias, par exemple des PDF, des vidéos ;
  • Téléchargement de fichiers volumineux ;
  • Chargement d’une page ou des données d’une API nécessitant des calculs complexes ou de nombreuses requêtes en bases de données, par exemple des statistiques, une simulation scientifique ;
  • Validation d’un formulaire.

Lorsque ces ressources critiques sont requêtées par de nombreux clients, le serveur de traitement verra sa charge augmenter considérablement, jusqu’à devenir indisponible si ses capacités de traitement ne sont pas suffisantes.

Cas d’exemple : un serveur web requête un serveur de base de données avec de nombreuses associations de données dans plusieurs tables de la base, appelées jointures. Le serveur web peut absorber une certaine charge de requêtes, mais chaque requête HTTP donne lieu à une ou plusieurs requêtes en base de données avec plusieurs milliers ou millions de lignes, démultipliées par la quantité de jointures.

Au-delà de la disponibilité, ces attaques peuvent avoir d’autres conséquences. Par exemple, lorsqu’une application est hébergée sur une offre cloud où le coût est calculée au regard de la consommation des ressources. Une attaque DDoS fera alors excessivement croître les métriques de consommation qui seront répercutées sur la facture.

Credential Stuffing

Le Credential Stuffing n’est pas une attaque par déni de service, mais son mode opératoire est identique et les protections à employer similaires.

Cette attaque tire parti des fuites de données pour découvrir des identifiants fonctionnels sur d’autres plateformes. L’attaquant alimente son réseau de bots avec les bases d’identifiants volées. Puis ses bots vont tester un à un tous ces identifiants sur les services ciblés qui répondent alors de nombreuses requêtes illégitimes.

Illustration d’une attaque par Credential Stuffing


Comme pour les attaques DDoS, il est important de pouvoir mettre en évidence ces attaques pour les interrompre.

Comment s’en protéger ?

Pour les attaques DDoS et le Credential Stuffing, plusieurs moyens de protection sont à mettre en place. Ils sont plus ou moins efficace selon l’environnement et le contexte des applications à protéger :

  • Mise en cache des ressources : fichiers volumineux, résultats de calculs complexe, génération de rapport, etc ;
  • Distinguer les demandes malveillantes via la réputation des IP, empreinte unique des navigateurs ou encore via un CAPTCHA ;
  • Supervision des applications pour identifier les attaques en cours grâce à l’analyse du nombre de requêtes dans un laps de temps, de la consommation de ressources ou du temps de réponse des ressources critiques ;
  • Activation de l’authentification à multiples facteurs ;
  • Limiter ou ne pas traiter le trafic identifié comme malveillant.

Ces différents moyens de protection peuvent être portées par l’applicatif lui-même ou par des solutions dédiées mises en coupure devant les applications. C’est le cas des WAF (Web Application Firewall) qui peut porter une partie des protections sus-citées.

Certains fournisseurs de protection anti-DDoS protègent également des attaques menées sur la couche applicative. Comme pour les couches 3 et 4, ils sont capables de détecter et rediriger les flux malveillants pour maintenir la disponibilité de vos services.

Récapitulatif des bonnes pratiques

Pour l’infrastructure et notamment les équipements réseaux, vérifiez les paramètres pour le protocole ICMP. Sur les serveurs, vérifiez la configuration TCP (timeout, taille de la table de connexion) et le comportement adopté en cas de DDoS.

Sur les applications, assurez-vous d’avoir en cache les fichiers et données couteuses en ressources. Imposez un CAPTCHA ou une authentification à multiples facteurs lorsque c’est nécessaire. Déployez un WAF avec les modules adéquats activés permettant le filtrage du trafic non légitime pour compléter la protection des applications.

Attention, toutes les solutions anti-DDoS ne protègent pas pour les attaques sur les couches applicatives. Étudiez les solutions pour adopter celle qui convient le mieux à l’environnement des applications à protéger.

Voici un tableau avec les différentes mesures de protections, leurs avantages et leurs inconvénients :

Solutions DDoS L3-4 DDoS L7 Brute Force Credential Stuffing Avantages Inconvénients
Scrubbing Center Oui Non / Partiel Non Non
  • Efficace
  • Évolutif
  • Managé
  • Couteux
WAF on premises Non Oui / Partiel Oui Oui
  • Peu de latence
  • Configurable
  • Prix maitrisé (paiement à l'équipement)
  • Nécessite des compétences pour assurer une protection efficace
  • Couteux si les compétences ne sont pas en interne
  • Pas d'IA pour faciliter la détection des botnets
  • Traitement des logs et alertes à la charge des équipes internes
WAF SaaS Sur contrat Oui Oui Oui
  • Multitude de fonctionnalités pour la détection et la réponse
  • Managé par des équipes SOC du fournisseur
  • Latence induite par le réseau
  • Couteux, facturation à l’application protégée et au trafic géré
CDN Oui Oui / Partiel Oui / Partiel Non
  • Économique
  • Managé
  • Fournit de base par les principaux fournisseurs de cloud
  • Combinable avec d’autres mesure de protection en interne par exemple
  • Limité en termes de fonctionnalités
  • Recouvrement des fonctionnalités par les WAF SaaS

Glossaire

  • IP : Internet Protocol
    C’est une famille de protocoles de communication de réseaux informatiques conçus pour être utilisés sur Internet.
  • ICMP : Internet Control Message Protocol
    Il est utilisé pour véhiculer des messages de contrôle et d’erreur pour cette suite de protocoles, par exemple lorsqu’un service ou un hôte est inaccessible.
  • ARP : Address Resolution Protocol
    C’est un protocole utilisé pour traduire une adresse de protocole de couche réseau (typiquement une adresse IPv4) en une adresse de protocole de couche de liaison (typiquement une adresse MAC).
  • TCP : Transmission Control Protocol
    C’est un protocole de transport fiable, en mode connecté,
  • Handle réseau
    Identifiants de ressources numériques dans un système Windows.

Vous avez des questions à ce propos ? Les experts de CNPP Cybersecurity vous répondent ici.

Auteur :

Damien Leroy

Damien LEROY
Consultant en sécurité des systèmes d'information