Différences
Ci-dessous, les différences entre deux révisions de la page.
journal_geek:2023:20231127-blender-ddos-mitigation [2023/11/24 23:10] – créée Cédric ABONNEL | journal_geek:2023:20231127-blender-ddos-mitigation [2023/11/24 23:10] (Version actuelle) – Cédric ABONNEL | ||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
+ | ====== Attaque DDOS chez Blender.org ====== | ||
+ | |||
+ | {{ : | ||
+ | |||
+ | En novembre 2023, le site blender.org a subi une attaque DDoS majeure, qui a provoqué des interruptions intermittentes. L' | ||
+ | |||
+ | Une attaque DDoS (Distributed Denial of Service) est une forme d' | ||
+ | |||
+ | Il est possible de mettre en place des mesures pour se prémunir contre les attaques DDoS (Distributed Denial of Service). Voici quelques mesures que l'on peut prendre pour se protéger contre les attaques DDoS : | ||
+ | |||
+ | 1. Utiliser des services de mitigation DDoS : Les services de mitigation DDoS sont conçus pour détecter et atténuer automatiquement les attaques DDoS en filtrant le trafic malveillant avant qu'il n' | ||
+ | |||
+ | 2. Surveillance du trafic réseau : Surveillez attentivement le trafic réseau pour détecter toute anomalie ou augmentation soudaine du trafic. Un système de détection des intrusions peut vous aider à repérer les signes d'une attaque en cours. | ||
+ | |||
+ | 3. Mise à jour des systèmes et logiciels : Assurez-vous que vos systèmes et logiciels sont à jour avec les derniers correctifs de sécurité pour réduire les vulnérabilités qui pourraient être exploitées lors d'une attaque. | ||
+ | |||
+ | 4. Plan de continuité d' | ||
+ | |||
+ | 5. Limiter l' | ||
+ | |||
+ | 6. Utilisation de la répartition de charge : Utilisez des solutions de répartition de charge pour distribuer le trafic entrant sur plusieurs serveurs, ce qui peut aider à atténuer l' | ||
+ | |||
+ | 7. Surveillance en temps réel : Mettez en place une surveillance en temps réel de vos systèmes et réseaux pour pouvoir réagir rapidement en cas d' | ||
+ | |||
+ | Aucune mesure de sécurité n'est totalement infaillible, | ||
+ | |||
+ | Apache HTTP Server n'est pas spécifiquement conçu pour fonctionner comme un mitigateur DDoS, mais il peut être utilisé en conjonction avec d' | ||
+ | |||
+ | 1. **Rate Limiting et mod_security** : Apache peut être configuré pour limiter le nombre de requêtes par seconde (Rate Limiting) en utilisant des modules tels que `mod_evasive` ou `mod_qos`. Vous pouvez également utiliser le module `mod_security` pour détecter et bloquer les comportements de requête malveillants en fonction de règles définies. | ||
+ | |||
+ | < | ||
+ | < | ||
+ | DOSHashTableSize 3097 | ||
+ | DOSPageCount 5 | ||
+ | DOSSiteCount 100 | ||
+ | DOSPageInterval 1 | ||
+ | DOSSiteInterval 1 | ||
+ | DOSBlockingPeriod 10 | ||
+ | </ | ||
+ | </ | ||
+ | |||
+ | < | ||
+ | < | ||
+ | SecRuleEngine On | ||
+ | SecRule REMOTE_ADDR " | ||
+ | SecRule REQUEST_HEADERS: | ||
+ | </ | ||
+ | </ | ||
+ | |||
+ | 2. **Répartition de charge (Load Balancing)** : Apache peut être configuré pour répartir la charge entre plusieurs serveurs backend. Cela peut aider à répartir la charge des attaques DDoS sur plusieurs serveurs et à réduire l' | ||
+ | |||
+ | Mod_proxy_balancer est un module Apache qui permet de mettre en place une répartition de charge entre plusieurs serveurs backend. Voici un exemple de configuration de base : | ||
+ | |||
+ | < | ||
+ | < | ||
+ | ServerName monsite.com | ||
+ | |||
+ | <Proxy balancer:// | ||
+ | BalancerMember http:// | ||
+ | BalancerMember http:// | ||
+ | BalancerMember http:// | ||
+ | </ | ||
+ | |||
+ | ProxyPass / balancer:// | ||
+ | ProxyPassReverse / balancer:// | ||
+ | </ | ||
+ | |||
+ | </ | ||
+ | |||
+ | Dans cet exemple, nous avons configuré un serveur virtuel (VirtualHost) qui écoute sur le port 80 et répartit la charge entre trois serveurs backend (backend1.example.com, | ||
+ | |||
+ | Assurez-vous d' | ||
+ | |||
+ | 3. **Mise en cache (Caching)** : L' | ||
+ | |||
+ | < | ||
+ | < | ||
+ | CacheQuickHandler off | ||
+ | CacheLock on | ||
+ | CacheLockPath / | ||
+ | </ | ||
+ | </ | ||
+ | |||
+ | < | ||
+ | sudo a2enmod evasive | ||
+ | sudo a2enmod security2 | ||
+ | sudo a2enmod cache | ||
+ | sudo service apache2 restart | ||
+ | </ | ||
+ | |||
+ | 4. **Monitoring et alertes** : Vous pouvez mettre en place des outils de surveillance pour surveiller le trafic entrant et être alerté en cas d' | ||
+ | |||
+ | Apache propose des modules qui permettent de surveiller les performances du serveur. L'un des modules les plus couramment utilisés est mod_status. Voici comment l' | ||
+ | |||
+ | < | ||
+ | < | ||
+ | SetHandler server-status | ||
+ | Require ip 127.0.0.1 | ||
+ | </ | ||
+ | </ | ||
+ | |||
+ | Cette configuration permet d' | ||
+ | |||
+ | Pour une surveillance plus avancée et des alertes, vous pouvez utiliser des outils tiers tels que **Nagios**, **Zabbix**, **Munin**, ou d' | ||
+ | |||
+ | -- | ||
+ | |||
+ | Cependant, ces mesures ne sont pas aussi robustes qu'un service de mitigation DDoS dédié. Les attaques DDoS peuvent être très sophistiquées et volumineuses, | ||
+ | |||
+ | Il existe plusieurs solutions open source de mitigation DDoS que vous pouvez envisager d' | ||
+ | |||
+ | 1. **Fail2ban** : Fail2ban est un outil de prévention des intrusions qui peut être utilisé pour surveiller les journaux de connexion et bloquer automatiquement les adresses IP qui génèrent un trafic malveillant ou excessif. | ||
+ | |||
+ | Vous pouvez créer des règles personnalisées dans le fichier de configuration de Fail2ban pour surveiller les journaux de connexion et définir des actions à prendre en cas de détection d' | ||
+ | |||
+ | < | ||
+ | [Definition] | ||
+ | failregex = ^ < | ||
+ | </ | ||
+ | |||
+ | |||
+ | 2. **ModSecurity** : ModSecurity est un pare-feu d' | ||
+ | |||
+ | ModSecurity utilise des règles pour détecter et bloquer les attaques au niveau de l' | ||
+ | |||
+ | < | ||
+ | SecRule ARGS " | ||
+ | " | ||
+ | </ | ||
+ | |||
+ | 3. **Snort** : Snort est un système de détection d' | ||
+ | |||
+ | Snort est configuré en utilisant des règles définies dans des fichiers de configuration. Vous pouvez créer ou personnaliser des règles pour détecter des signatures d' | ||
+ | |||
+ | < | ||
+ | alert udp any any -> $HOME_NET any (msg:" | ||
+ | </ | ||
+ | |||
+ | 4. **Nginx** : Bien que Nginx soit principalement un serveur web, il peut également être utilisé pour atténuer les attaques DDoS en limitant le nombre de connexions par adresse IP ou en utilisant des modules de sécurité tels que `limit_req` et `limit_conn` pour contrôler le trafic entrant. | ||
+ | |||
+ | < | ||
+ | limit_conn_zone $binary_remote_addr zone=conn_limit_per_ip: | ||
+ | limit_conn conn_limit_per_ip 10; | ||
+ | </ | ||
+ | |||
+ | 5. **HAProxy** : HAProxy est un équilibreur de charge et un proxy TCP/HTTP qui peut être configuré pour atténuer les attaques DDoS en limitant le nombre de connexions par IP, en utilisant des listes de blocage, et en distribuant la charge sur plusieurs serveurs. | ||
+ | |||
+ | Ces serveurs peuvent être configurés pour atténuer les attaques DDoS en limitant le nombre de connexions par adresse IP, en utilisant des listes de blocage, en configurant des seuils de débit, etc. Vous devrez modifier le fichier de configuration de Nginx ou HAProxy pour définir ces paramètres en fonction de vos besoins. | ||
+ | |||
+ | < | ||
+ | frontend web | ||
+ | bind :80 | ||
+ | acl too_many_requests src_http_req_rate(web) ge 10 | ||
+ | http-request deny if too_many_requests | ||
+ | </ | ||
+ | |||
+ | 6. **iptables** : Vous pouvez utiliser les règles iptables sur un serveur Linux pour filtrer et bloquer le trafic indésirable en fonction de certaines conditions, telles que le nombre de connexions par seconde. | ||
+ | |||
+ | Vous pouvez utiliser des règles iptables pour filtrer et bloquer le trafic en fonction de divers critères, tels que l' | ||
+ | |||
+ | < | ||
+ | iptables -A INPUT -p tcp --dport 80 -m conntrack --ctstate NEW -m recent --set | ||
+ | iptables -A INPUT -p tcp --dport 80 -m conntrack --ctstate NEW -m recent --update --seconds 1 --hitcount 10 -j DROP | ||
+ | </ | ||
+ | |||
+ | |||
+ | --- // | ||
+ | |||
+ | Crédit image : // | ||