Attaque Slowloris pour saturer un serveur Web
Définition
Slowloris et une attaque développée en Perl. Elle vise à rendre indisponible un serveur Web en l'inondant de requêtes HTTP incomplètes. A l'instar des attaques de type DoS, l'objectif est de compromettre la disponibilité du serveur Web.
En effet, le script Perl automatise l'envoi des demi-requêtes HTTP au serveur Web et les maintient durant un temps déterminé. Cette opération fini par remplir le pool de requêtes du serveur qui sera contraint de rejeter toutes les autres requêtes entrantes. En faisant ceci, le serveur Web devient systématiquement indisponible.
Slowloris est une attaque de type Déni de Service (Denial of Service ou DoS). Bien qu'il existe beaucoup de variantes pour ce type d'attaques et qui peuvent également présenter un risque important vis-à-vis des serveurs Web (comme TCP SYN Flood, UDP Flooding, Packet Fragment...), Slowloris présente une attaque au niveau application (couche 7 du model OSI) qui cible exclusivement des Serveurs Web et qui ne nécessite qu'une toute petite bande passante et ses chances de réussite sont considérables même avec une seule machine source. Les autres variantes par contre sont plutôt efficaces dans le cas d'un Déni de Service Distribué (DDoS) et qui demande la mise en marche de centaines, voir des milliers de machines sources (qui peuvent aussi être des botnets ou machines zombies).
Comment s'en protéger
Au niveau du code PHP
Il n'y a pratiquement rien à faire pour palier cette attaque au niveau du code PHP, donc il faut surtout miser sur la configuration du serveur et la sécurisation du réseau qui abrite celui-ci.
Au niveau de la configuration du serveur et du réseau
Bonne configuration du serveur Web
Pour perfectionner la sécurité contre les DoS de manière générale on peut déjà commencer par bien configurer le serveur Web. Dans le cas du serveur Apache on peut revoir les directives suivantes (présentes dans le fichier de configuration principal
apache2.conf ou
httpd.conf):
- MaxConnPerIP: permet de définir le nombre maximal de connexions par adresse IP unique.
- MaxClients: définie le nombre maximal de requêtes simultanées.
- KeepAlive: Définissent si les requêtes multiples doivent être envoyées sur la même connexion TCP. Il se trouve que des fois, une page Web contient beaucoup d'éléments qui sont chargés indépendamment (images, vidéos...) et qui font chacune l'objet d'une nouvelle requête. Pour ne pas créer autant de connexion TCP que de requêtes on active cette directive avec la valeur On.
Mitigation des attaques DoS
Il s'agit d'un ensemble de techniques qui visent à atténuer l'impact des attaques DoS. La plupart des hébergeurs les utilisent au sein de leurs réseaux pour surmonter les risques d'une telle attaque.
Utilisation d'un Reverse Proxy
Un reverse Proxy sert d'intermédiaire entre le réseau externe et le réseau interne. Il est donc en mesure d'encaisser tous les coups à la place du serveur Web mais il est conçu pour être plus résistant à de tels aléas.
Utilisation d'IPS applicatifs
Les IPS applicatifs sont des modules pour le serveur Web (ou des logiciels indépendants) qui permettent de filtrer les requêtes et détourner les menaces. Ils sont en mesure de reconnaitre les requêtes incomplètes et les rejeter ensuite, libérant ainsi le pool du serveur.