web-dev-qa-db-fra.com

Comment puis-je empêcher une attaque DDOS sur Amazon EC2?

L'un des serveurs que j'utilise est hébergé sur le cloud Amazon EC2. Tous les quelques mois, nous semblons avoir une attaque DDOS sur ce serveur. Cela ralentit considérablement le serveur. Après environ 30 minutes, et parfois un redémarrage plus tard, tout revient à la normale.

Amazon dispose de groupes de sécurité et d'un pare-feu, mais que dois-je avoir d'autre sur un serveur EC2 pour atténuer ou empêcher une attaque?

De questions similaires que j'ai apprises:

  • Limitez le taux de requêtes/minute (ou secondes) à partir d'une adresse IP particulière via quelque chose comme des tables IP (ou peut-être UFW?)
  • Avoir suffisamment de ressources pour survivre à une telle attaque - ou -
  • Construire éventuellement l'application Web de manière à ce qu'elle soit élastique/possède un équilibreur de charge élastique et puisse évoluer rapidement pour répondre à une demande aussi élevée)
  • Si vous utilisez mySql, configurez les connexions mySql afin qu'elles s'exécutent séquentiellement afin que les requêtes lentes n'entravent pas le système

Que manque-t-il d'autre? J'aimerais beaucoup d'informations sur des outils spécifiques et des options de configuration (encore une fois, en utilisant Linux ici), et/ou tout ce qui est spécifique à Amazon EC2.

ps: Des notes sur la surveillance de DDOS seraient également les bienvenues - peut-être avec nagios? ;)

47
cwd

Un DDOS (ou même un DOS), dans son essence, est un épuisement des ressources. Vous ne pourrez jamais éliminer les goulots d'étranglement, car vous ne pouvez que les repousser plus loin.

Sur AWS, vous avez de la chance car le composant réseau est très puissant - il serait très surprenant d'apprendre que la liaison amont était saturée. Cependant, le CPU, ainsi que les E/S des disques, sont beaucoup plus faciles à inonder.

Le meilleur plan d'action serait de démarrer une surveillance (locale comme SAR, à distance avec Nagios et/ou ScoutApp) et quelques installations de journalisation à distance (Syslog-ng). Avec une telle configuration, vous serez en mesure d'identifier les ressources saturées (socket réseau en raison de Syn flood; CPU en raison de mauvaises requêtes ou robots d'exploration SQL; ram en raison de…). N'oubliez pas d'avoir votre partition de journal (si vous n'avez pas activé la journalisation à distance) sur un volume EBS (pour étudier plus tard les journaux).

Si l'attaque passe par les pages Web, le journal d'accès (ou l'équivalent) peut être très utile.

36
CloudWeavers

Vous pouvez également isoler davantage vos instances EC2 en les plaçant derrière un Elastic Load Balancer et en acceptant uniquement le trafic provenant de l'instance ELB. Cela incite davantage Amazon à gérer les attaques DDOS.

Je suppose que SSH sera toujours ouvert à tous, il est donc probable que vous verrez toujours du trafic non autorisé, sauf si vous pouvez verrouiller ce port sur certaines adresses IP statiques. Vous pouvez changer le port SSHd en quelque chose de plus obscur (c'est-à-dire autre chose que 22) pour réduire davantage les hits DDOS (la plupart des bots ne vérifient que les ports connus).

Je mentionnerai également fail2ban, qui peut surveiller les journaux et modifier temporairement vos tables ip pour bloquer des adresses IP spécifiques (par exemple, s'il y a eu 6 tentatives infructueuses de SSH dans votre hôte à partir d'une seule adresse IP, il peut bloquer cette IP pendant 30 minutes environ). Gardez à l'esprit que (comme Jordan l'a astucieusement commenté) fail2ban n'est probablement pas approprié pour bloquer le trafic proxy (par exemple, celui d'un ELB) car il bloquera l'IP du proxy, pas nécessairement l'IP distante d'origine.

Je ne l'ai pas utilisé, mais Apache mod_evasive peut également valoir la peine d'être étudié; cependant, il peut avoir la même faiblesse que fail2ban en ce qui concerne le blocage basé sur IP.

24
jstell

Si vous utilisez Apache, je vous suggère d'utiliser mod_security . Emballé par la plupart des fournisseurs, l'ensemble de règles de base fait un travail fantastique.

Une autre étape de durcissement consiste à limiter les demandes au niveau du serveur Web. Nginx ., Apache peut limiter et limiter les demandes entrantes.

5
Shyam Sundar C S

La solution que j'utilise pour bloquer les IP de mauvaise activité en temps réel provenant d'AWS et d'autres est la suivante ... Dans mon pare-feu CSF dans la configuration des listes de blocage LFD, j'utilise une liste trouvée ici - http://myip.ms/ parcourir/liste noire/Liste noire_IP_Blacklist_IP_Addresses_Live_Database_Real-time

Télécharger la liste noire pour le pare-feu CSF " http://myip.ms/files/blacklist/csf/latest_blacklist.txt

Plus de trafic AWS scandaleusement désagréable.

2
UlyssesGrump

Je suis partisan, car je travaille pour un réseau de diffusion de contenu en tant qu'ingénieur de sécurité avant-vente.

Cependant, tirer parti d'une solution d'atténuation Ddos sur un réseau de diffusion de contenu garantit que vous ne manquerez jamais de ressources à l'origine. Cela revient à placer un équilibreur de charge F5 devant votre site, mais il se propage à des milliers d'emplacements dans le monde.

Un bon cdn vous permettra de masquer l'Origin avec une liste blanche que vous installerez sur le pare-feu aws. Ainsi, lorsque les attaquants effectueront leur reconnaissance sur Amazon, votre adresse IP sera vide car tout sera bloqué.

Ainsi, les attaques Ddos sont bloquées lorsque le trafic atteint un nœud aussi proche que possible de l'attaquant. Cela vous permet d'atténuer les attaques Ddos aussi loin de l'actif que vous essayez de protéger.

Un bon CDN peut également effectuer des vérifications de l'état et le trafic de basculement vers d'autres emplacements, par exemple un autre ego activé dans le cul, Azure, l'espace rack, la couche souple, un contrôleur de domaine physique, etc. RUDY, slowpost, slowloris ainsi que sqli, xss, rfi, lfi etc.

Par défaut, le cdn bloque également les attaques de couche réseau comme les larmes, les attaques icmp, les synfloods, etc. Un cdn est capable d'atténuer les attaques Ddos car trey a une grande capacité pour accepter les demandes, filtrer le mauvais trafic et transmettre le bon trafic. Ainsi, les attaques d'amplification telles que les attaques volumétriques ntp, DNS, ssdp, chargen et snmp peuvent être bloquées.

La plus grande attaque que j'ai vue à ce jour a été de 321 Gbps en juillet 2014. Au cours de cette attaque, il y a également eu une attaque de protocole DNS à 20 Gbps. Vous devrez donc vous assurer que votre infrastructure DNS est également résiliente pour résister à un grand nombre de demandes.

D'après la description que vous avez fournie, il semble que vous ayez été soumis à une attaque d'épuisement, où l'attaquant a ouvert de nombreux threads de sorte que tous les threads ont été consommés sur le serveur Web, le serveur d'applications ou le pare-feu. C'est similaire à quelque chose comme un slowpost, slowloris ou RUDY.

Pour bloquer contre les attaques d'épuisement de la couche application, vous devrez obtenir un pare-feu d'application Web (WAF). Un pare-feu réseau typique (y compris le pare-feu Amazon et les pare-feu de nouvelle génération) ne pourra pas le bloquer. De nos jours, les pare-feu de travail envoyés ne peuvent bloquer qu'environ 30% de toutes les attaques (novembre 2014).

2
James

Voici un outil que j'ai fait pour ceux qui cherchent à utiliser Fail2Ban sur des aws avec Apache, ELB et ACL: https://github.com/anthonymartin/aws-acl-fail2ban

Il est utile pour détecter et prévenir les attaques DoS et les abus des instances ec2.

1
Anthony Martin

Le pare-feu du serveur de configuration est le meilleur que j'ai vu pour l'atténuation des DDoS dans les machines virtuelles basées sur logiciel dans EC2. Si vous combinez la fonction syslog, elle peut vous protéger contre un environnement à charge équilibrée.

http://configserver.com/cp/csf.html

0
Jeff