Quelle est la manière appropriée et sûre d'effectuer un test DDoS sans planter toute l'infrastructure?
Quels sont les différents types d'attaques DDoS et quels éléments devraient être envisagés pour effectuer un tel test?
Aussi, où pouvez-vous louer un "botnet" ou un service similaire (cloud) pour effectuer un test réaliste?
Si vous effectuez des tests de charge à des taux de paquets élevés, le moyen le plus sûr consiste à l'isoler complètement du reste du réseau. Par exemple, vous pouvez connecter deux serveurs par une liaison directe de 10 Go/s sans commutateur et utiliser une autre connexion LAN sur le serveur d'analyse comparative pour ssh
vers un serveur pour exécuter le test.
Une autre façon consiste à provisionner des serveurs dans le cloud public comme AWS pour une courte période et à les exécuter là-bas. Vous ne risquez pas d'avoir un impact sur votre infrastructure. C'est OK pour le faire, les infrastructures cloud sont résilientes donc si vous inonder votre serveur avec des paquets c'est juste un peu plus dans le trafic. Bien sûr, il serait bon de fournir une grande machine rapide ou même une machine dédiée afin que vous puissiez vraiment voir la charge de votre logiciel.
En ce qui concerne les logiciels, vous pouvez utiliser le générique ab
qui est "Apache Bench" et qui fait partie des packages Apache. Vous pouvez tester la résilience de votre serveur Web (fichiers statiques de httpd) et serveur d'applications (dynamiques de PHP, Ruby, Java). Vous pouvez rechercher d'autres logiciels de test de charge professionnels pour des protocoles spécifiques qui peuvent inclure des tests d'API et de streaming vidéo. Il y en a beaucoup selon le protocole que vous utilisez (comme REST etc).
Ensuite, procédez à l'optimisation de la pile réseau habituelle ainsi qu'à l'optimisation des applications pour obtenir plus de performances (idem côté client comme ulimit
). Gardez une trace de vos résultats. Et aussi, essayez d'analyser correctement les journaux avec un logiciel gratuit comme AWStats ou une scierie commerciale. Évitez d'utiliser grep ;-) Analytics est ce qui vous montrera de vrais résultats. Notez également que ab
est bon pour httpd
mais a parfois des problèmes avec d'autres serveurs Web. Et dans AWS, vous pouvez utiliser Load Balancer qui affiche également des statistiques en temps réel. Enregistrez les statistiques du réseau avec Nagios, Zabbix, etc. pour voir comment la pile réseau s'est comportée (par exemple, les connexions interrompues, le taux de paquets, l'utilisation du processeur, etc.).
N'embauchez jamais d'attaques DDoS car ce sont des gangs criminels et vous risquez beaucoup, non seulement légalement pour vous mais aussi pour votre FAI, votre entreprise et vos clients.
Le meilleur plan n'est pas de le faire. Cela sert rarement à quelque chose, car DDoS fonctionnera contre vous. C'est une évidence. Il est si facile de créer une attaque à volume élevé maintenant, cela ne vaut même pas la peine d'essayer de faire plus que les tests de charge habituels.
Vous êtes bien mieux servi en implémentant l'atténuation DDoS.
Si, toutefois, vous devez tester, essayez ce qui suit:
Fondamentalement, le fonctionnement d'un déni de service distribué consiste à inonder la bande passante d'une entreprise avec trop de trafic. Les attaques réelles peuvent différer en termes de source et de style, mais elles partagent le même objectif. Il est inutile de tester une attaque DDoS, car quelle que soit la bande passante dont vous disposez, il est toujours possible qu'elle soit dépassée. Cela dépend entièrement des capacités physiques du matériel.
Maintenant, cela ne veut pas dire qu'il n'y a aucun moyen d'atténuer un DDoS. Vous pouvez acheter des services auprès de diverses sociétés capables de détecter un DDoS et d'envoyer votre trafic vers un centre de nettoyage pour ne laisser passer que le trafic légitime. Cependant, ces services sont toujours limités par la quantité de bande passante qui circule dans leur équipement. Contrairement à d'autres attaques par déni de service, il n'existe aucun correctif logiciel pour un DDoS.
N'essayez pas de louer des services pour DDoS votre réseau. Ces services sont au mieux légalement contestables et, au pire, le crime organisé. Si vous insistez pour tester votre réseau, d'autres réponses fournissent des moyens parfaitement raisonnables de s'y prendre.
En plus de demander au comment vous devriez envisager de demander au pourquoi .
Cas 1: vous voulez vérifier comment votre service sera affecté par un DDoS - c'est probablement une chose raisonnable à faire. Je dirais que ce sont des tests de charge poussés à l'extrême.
Dans ce cas, vous devez tester un clone de l'ensemble de votre service, y compris l'infrastructure. Vous ne savez pas ce qui échouera entre votre frontend de service dans un DMZ et la base de données backend dans un LAN. Il peut s'agir de l'application, d'un pare-feu en chemin, de la base de données, ... vous pouvez imaginer, ce ne sera pas une tâche simple et le résultat peut être intéressant ou non.
Vous n'avez pas besoin d'un DoS [~ # ~] d [~ # ~] pour cela - un DoS multiple suffira (vous n'êtes intéressé que par la charge)
Cas 2: vous souhaitez évaluer vos capacités à réinstaller un DDoS - dans ce cas le test est inutile.
Si l'attaque est basée sur le volume (par opposition à quelque chose comme SLOWLORIS ), au moment où vous détectez un paquet entrant, il est trop tard. Il y a des entreprises qui vendront des appareils vaporeux qui règlent comme par magie le problème mais ils ne fonctionnent pas*.
Vous devez bloquer cette attaque en amont, donc
*l'idée est qu'ils seront assez rapides (= bien plus rapides que vos capacités de traitement de service) pour décider si un paquet est "assez bon" ou non pour être accepté. Outre la capacité de décider correctement, la prémisse se brise lorsque votre canal réseau est plein.