# Mitigation de DDoS

La mitigation de DDoS est la pratique consistant à supprimer ou réduire l'impact d'attaques par déni de service distribuées (DDoS). Afin de pouvoir permettre aux services attaqués de rester disponibles, sa mise en place se décline en plusieurs mécanismes différant quant à leur angle de protection. Ces mécanismes se classent selon leur cible de protection, leur emplacement sur le réseau ainsi que l'instant auquel ils interviennent. Cette mitigation étant difficile à réaliser en se basant sur une seule technologie, plusieurs mécanismes de catégories différentes doivent parfois être utilisés dans le but de mener efficacement une mitigation de DDoS.

## Problématique

La croissance, tant en nombre qu'en puissance, des attaques par déni de service distribuées (DDoS) est devenue un problème considérable pour un grand nombre d'entités : en 2017, le nombre d'organisations ayant fait face à ce type d'attaque était estimé à 33 %, contre 17 % en 2016. Ces attaques, visant à envoyer un grand nombre de requêtes afin de perturber les performances d'un service$^,$, ne sont pas sans conséquences : en 2015, la part des victimes faisant face à des délais anormaux de chargement de page (pouvant nécessiter jusqu'à plusieurs jours) a été évaluée à 58 %, et à 24 % le nombre d'organisations ayant fait face à une coupure totale de leurs services.
Les victimes de ces attaques font communément face à des attaques volumétriques et/ou applicatives et les vecteurs d'attaque sont souvent similaires : inondation (flooding) UDP, ICMP et TCP et/ou exploitation abusive des protocoles applicatifs. Cependant, la défense face à ces attaques doit faire face à plusieurs problèmes :
* la difficulté de traçabilité, ceci du notamment à l'emploi de méthodes d'usurpation d'adresse IP par l'attaquant ;
* l'évolution en complexité de ces attaques avec le temps et l'apparition de nouveaux vecteurs, permettant d'outrepasser les mécanismes de mitigation mis en place ;
* la baisse des coûts de déploiement de telles attaques, les rendant accessibles à plus d'attaquants potentiels.
Bien qu'il n'existe à priori pas de solution à l'épreuve de tout DDoS, plusieurs mécanismes existent et peuvent être mis en place afin de tenter de contrer et mitiger ce type d'attaque.

## Classification des mécanismes de mitigation
### Cible à défendre
#### Défense d'infrastructure

La défense d'infrastructure vise à prévenir contre les attaques dirigées vers le matériel des couches basses du modèle OSI et ayant pour but le déni d'accès légitime aux ressources. Ces mécanismes de mitigation tentent d'empêcher la surcharge de la bande passante de la victime et la mise hors-service du matériel de routage.
Parmi les attaques contre lesquelles ces mécanismes tentent de protéger, on retient notamment les SYN-Flood (TCP-UDP) et les attaques par rebond (ICMP, TCP-UDP).

#### Défense d'application

La défense d'application vise à prévenir contre l'exploitation de vulnérabilités système et applicatives au niveau 7 du modèle OSI. Ces mécanismes tiennent compte du fait que l'attaquant imite un comportement lambda et tente de tirer parti de failles système, mises-à-jour non-effectuées et mauvaises configurations du serveur.
Le besoin de mécanismes de défense d'application est réel car de nombreux attaquants, s'étant heurtés aux mécanismes de défense d'infrastructure, se tournent vers l'attaque des couches logicielles et l'exploitation de faiblesses d'applications.
Les cibles à défendre sont principalement des services Web répondant à des requêtes HTTP et faisant face à des montées en charge anormales. De tels mécanismes empêchent la saturation de ces services, notamment en tentant d'identifier les canaux sources de ces attaques.

### Emplacement
#### Basé à la source

Les mécanismes de défense basés à la source visent à détecter et filtrer le trafic le plus près possible de l'attaquant. Ils sont toutefois peu efficaces face aux attaques de DDoS par inondation (flooding) pour plusieurs raisons. Tout d'abord, les sources de telles attaques peuvent être éclatées en plusieurs domaines, pouvant rendre la détection précise de flux anormaux à la source difficile. De plus, la différenciation du trafic légitime et anormal à la source est compliquée étant donné que ces attaques reposent sur un nombre de sources dispersées. De ce fait, le volume de l'attaque n'est détectable qu'à proximité de la victime, là où les attaques se rejoignent.
Pour finir, les motivations au déploiement à la source reposent sur des bases instables quant à qui paierait l'installation de tels mécanismes de défense. En effet, les FAI et systèmes autonomes à la source ont peu d'intérêt à allouer des ressources (et/ou perdre en performance) afin de protéger les victimes chez d'autres FAI$^,$$^,$.
L'endroit idéal pour mitiger une attaque DDoS reste néanmoins son point de départ, en empêchant l'attaquant de pouvoir atteindre sa cible et même d'autres réseaux. Ces filtres permettent ainsi d'empêcher le gaspillage de bande passante sur le chemin jusqu'à la cible.

#### Basé à la destination

Les mécanismes basés à la destination sont plus faciles à implémenter. En effet, de par leur localisation à proximité de la victime, ils sont capables de voir le trafic à destination de la cible dans son entièreté et mieux l'analyser pour détecter une attaque.
Toutefois, ces mécanismes n'entrant en jeu qu'à destination, certains considèrent que cette intervention tardive cause un gaspillage de bande passante sur le chemin jusqu'à la cible. Se trouvant également sur le chemin du flux agrégé, ils peuvent devenir eux-mêmes l'objet d'une attaque visant à saturer leurs liens réseau.

#### Basé dans le réseau

Le réseau, dans sa globalité, peut également constituer un point d'implantation de mécanismes de défense. Toutefois, le matériel de transport de paquets opère à la couche 2 et 3 du modèle OSI et ne permet donc pas un filtrage des flux visant le DDoS d'une application à la couche 7.

#### Hybrides

Chaque mécanisme à emplacement unique précédent possédant des inconvénients, leur mitigation ne constitue pas une défense efficace contre toutes les attaques, alors que l'approche visant à faire communiquer ces composants prétend offrir une meilleure efficacité$^,$.
La défense Hybride vise à combiner les points forts de chaque solution en déployant des mécanismes de défense à plusieurs endroits tels que la source, la destination ou le réseau intermédiaire et en les faisant interagir. Un mécanisme hybride consiste généralement en la combinaison d'un filtrage à hauteur de la source et une limitation de la bande passante pour le trafic attaquant à hauteur de la cible.
Les points en défaveur de cette organisation sont néanmoins similaires à ceux des mécanismes précédents : ajout de complexité et besoin supplémentaire de ressources afin de pouvoir communiquer entre les dispositifs placés, manque d'incitants à la coopération entre les points de déploiement et besoin de confiance envers les mécanismes placés par autrui.

### Instant d'intervention

L'intervention peut avoir lieu en trois temps. Cependant, en l'absence de solution à toute épreuve, une défense complète ne devrait pas se limiter à l'intervention en un seul temps pour contrer un DDoS.

#### Antérieur à l'attaque

Le meilleur moment pour interrompre une attaque DDoS est avant son lancement. En d'autres termes, la prévention est la meilleure défense contre le DDoS. La plupart des mécanismes de prévention visent à fixer les vulnérabilités de la cible (protocoles faillibles, authentifications vulnérables, failles système ou réseau...) qui pourraient être exploitées au lancement d'une attaque DDoS.

#### Durant l'attaque

L'étape suivante dans la défense contre une attaque DDoS est la détection de l'attaque, qui a lieu au moment où l'attaque survient. Certains mécanismes détectent des flux d'attaque lorsque les liens de communication atteignent un certain niveau de congestion. D'autres détectent des attaques par inondation (flooding) en constatant des comportements inhabituels sur les couches transport et applicatives.

#### Postérieur à l'attaque

Une fois l'attaque détectée, le mécanisme de défense doit pouvoir effectuer deux actions : trouver la source et entreprendre une réponse à l'attaque.
Les mécanismes visant à identifier la source doivent trouver un moyen de remonter le trafic. Ils tentent pour cela de traverser les routeurs en ordre inverse, et marquent les sources fiables (non-spoofées) de paquets afin de pouvoir identifier les paquets spoofés (usurpés) à l'aide de mécanismes comme le hop-count filtering.
Ceux visant à entreprendre une réponse ont pour objectif de mettre fin à l'attaque. La plupart des outils de mitigation de DDoS appliquent des politiques de limitation (throttling) ou mettent en place des filtrages de paquets le plus en amont possible afin de pouvoir bannir les sources de l'attaque (history-based IP filtering).

## Techniques proposées

Le tableau ci-dessous liste non-exhaustivement différentes techniques de mitigation existantes selon leurs critères de classification.
| Intitulé | Cible | Emplacement | Instant d'intervention | Situation OSI |
| Filtrage Ingress/Egress | Infrastructure | Source | Pendant l'attaque | Routeurs (Réseau) |
| D-WARD | Infrastructure | Source | Pendant l'attaque | Routeurs (Réseau) |
| MULTOPS | Infrastructure | Source | Pendant l'attaque | Routeurs (Réseau) |
| Pare-feu inversé | Infrastructure | Source | Pendant l'attaque | Pare-feu (Réseau) |
| Random Port Hopping | Application | Hybride (Source - Destination) | (Avant +) Pendant l'attaque | Applicatif |
| Challenge | Application | Destination | (Avant +) Pendant l'attaque | Applicatif |
| Patchs de sécurité | Application | Destination | Avant l'attaque | Applicatif |

### Techniques contre DDoS d'application
#### Random Port Hopping

La technique proposée par le Random Port Hopping consiste à forcer le client à utiliser des numéros de port spécifiques afin de pouvoir joindre le serveur, si le client n'utilise pas le bon port, le serveur jettera ses paquets. En pratique, le serveur envoie tout d'abord une clé cryptographique qui permet au client de déterminer le port sur lequel le contacter pour un certain laps de temps. Au-delà de ce laps de temps, le port change et le client doit le ré-obtenir via le calcul avec la clé du serveur$^,$. Les ports étant inconnus, ce mécanisme permet de se prémunir contre les botnets envoyant sans cesse des requêtes.

#### Challenge

Les protocoles de Défi-Réponse (PDR) ont pour but la confirmation de la présence d'un utilisateur légitime. La technique de prévention d'accès illégitime la plus commune consiste en un test de Turing sous la forme d'un CAPTCHA, cette méthode est dès lors devenue une catégorie de protocoles Défi-Réponse favorite. Ces puzzles doivent être incontournables et résolus en un temps imparti, et le serveur doit pouvoir vérifier la solution proposée en utilisant le moins de ressources possibles. Les PDRs peuvent prendre d'autres formes tels que des tests graphiques, également populaires et invitant l'utilisateur à réagir à la présentation d'une image au lieu de texte (qui pourrait être interprété). Ces images sont parfois distordues, incomplètes ou floutées afin de rendre la résolution du défi inaccessible à une machine participant au DDoS.
Les attaquants reposant souvent sur de larges réseaux de bots. De ce fait, un challenge, bien que simple en principe, constitue un moyen efficace de contrer les attaques basées sur des requêtes à haute fréquence comme le DDoS.

### Techniques contre DDoS d'infrastructure
#### Filtrage Ingress/Egress

Les mécanismes de filtrage Ingress/Egress ont été proposés afin de détecter et filtrer les paquets avec une IP usurpée (spoofed) au niveau des routeurs source sur base de groupes d'adresses IP internes marqués comme valides. Cette technique peut aisément être implémentée au niveau des FAI pour mitiger leur trafic sortant. Cependant, le filtre ne détectera pas les paquets usurpés si leur adresse source se trouve toujours dans la liste autorisée.
Avec la tendance visant à utiliser des botnets comme support d'attaque DDoS, les attaquants n'ont cependant pas à se soucier d'usurpation d'IP : ils peuvent en effet utiliser des zombies utilisant leur adresse IP authentique, ces zombies n'ayant pas le moyen de remonter jusqu'au maître.

#### D-WARD

Ce mécanisme, installé à la source, vise à détecter les inondations DDoS en surveillant à la fois le trafic entrant et sortant d'un ensemble d'adresses pour le comparer avec les caractéristiques d'un trafic normal prédéfini. D-WARD tente d'arrêter le trafic d'attaque en provenance d'un réseau interne à la bordure de ce réseau. Les flux d'attaque sont identifiés et filtrés et ralentis s'ils ne correspondent pas aux modèles prédéfinis. Il permet ainsi de protéger l'extérieur mais surtout de privilégier un trafic interne légitime lors d'une attaque.
Cependant, comme de nombreux mécanismes à la source, les FAI ne sont pas incités à déployer D-WARD afin de protéger d'autres réseaux que les leurs. De plus, D-WARD peut être contourné par des attaquants pouvant contrôler leur trafic pour satisfaire les règles du trafic normal prédéfini.

#### Pare-feu inversé

À l'inverse des pare-feu traditionnels qui protègent un réseau interne de paquets venant de l'extérieur, un pare-feu inversé protège l'extérieur d'attaques par inondation de paquets originaires d'un réseau interne. Ces pare-feu inversés limitent le ratio de paquets pouvant sortir et n'étant pas des réponses à d'autres paquets.
Cette solution présente le même inconvénient que les autres solutions basées à la source : le réseau source ne tire aucun bénéfice du fait de déployer un pare-feu inversé coûteux.

#### MULTOPS

La technique MULTOPS est placée sur les équipements réseaux de la source et se base sur des analyses heuristiques afin de détecter et filtrer les attaques DDoS. Lors de communications sur Internet, le matériel compare les quantités entrantes/sortantes et sortantes/entrantes. Si des ratios disproportionnés atteignent certaines limites, le mécanisme interprète que le réseau interne est soit la source soit la cible d'une attaque.
MULTOPS n'est cependant pas adapté à toutes les situations, le trafic des réponses serveur étant généralement supérieur à celui des requêtes. On peut penser aux flux de données multimédia qui, bien que légitimes, ont un ratio envoi/réception inégal. À ce haut taux de faux négatifs s'ajoute la vulnérabilité aux attaques visant l'épuisement de la mémoire du matériel dû à l'utilisation de structures de données dynamiques.

## Autres techniques
### Échelonnage des ressources

L'échelonnage dynamique des ressources constitue une fonctionnalité majeure des clouds. Il s'agit également d'un des meilleurs outil de mitigation d'attaque DDoS car il permet de garder une disponibilité des serveurs en modifiant l'allocation de ressources. L'échelonnage dynamique peut être fait horizontalement, en démarrant de nouvelles instances de service sur le même ou d'autres serveurs physiques afin de pouvoir répondre à davantage de requêtes jusqu'à surmonter l'attaque ; et peut également être fait verticalement, en allouant davantage de puissance de calcul, de mémoire vive ou de disque à une machine virtuelle. Ces accroissements de ressources permettent à la victime de faire face à l'attaque et continuer à proposer ses services.

### Utilisation de FPGA

Tout d'abord présenté en tant qu'étude, l'utilisation de FPGA en tant que filtre DDoS a montré sa capacité à faire face à une attaque sans précédent de 1 Tbit/s ayant atteint l'hébergeur français OVH en septembre 2016.
Les avantages présentés par les FPGA dans le cadre de la mitigation de DDoS, sont :
* leurs résultats : les expériences réalisées sur FPGA atteignent des taux de 100 % de détection, 0 % de faux négatif et maximum 0,41 % de faux positifs ;
* leur capacité à être reprogrammés en temps réel pour s'adapter aux attaques ;
* leur flexibilité permettant d'intégrer divers mécanismes de mitigation (Hop-count filtering et Ingress/Egress par exemple).

### DDoS Mitigation as a Service (DMaaS)

Afin de répondre au problème de coûts liés au déploiement de matériel de sécurité, certaines compagnies se spécialisent en offre de mitigation DDoS à travers leurs cloud et datacenters. Les clients souhaitant acquérir une protection DDoS redirigent alors leur trafic entrant vers ces services de mitigation, aussi appelés DMaaS (pour DDoS Mitigation as a Service). Le prestataire de service de mitigation renvoie ensuite un flux de données filtré par des mécanismes de mitigation.
Un grand nombre de ces solutions cloud se basent sur la technique d'échelonnage dynamique de ressources à l'aide du grand nombre de machines disponibles dans leurs datacenters.
Les inconvénients d'une telle solution existent néanmoins :
* certaines données à caractère sensible ou confidentiel peuvent poser problème quant à leur partage avec le prestataire de service ;
* le coût de telles solutions et la prévision de budgets permettant de faire face à des attaques parfois persistantes, occasionnelles ou répétitives$^,$ ;
* la redirection de trafic et son traitement entraîne une latence supplémentaire.