abonnel-siteweb/data/pages/journal_geek/2023/20231127-blender-ddos-mitig...

170 lines
12 KiB
Plaintext
Raw Permalink Normal View History

2024-01-07 10:02:35 +01:00
====== Attaque DDOS chez Blender.org ======
{{ :journal_geek:2023:pasted:20231124-235735.png?400}}
En novembre 2023, le site blender.org a subi une attaque DDoS majeure, qui a provoqué des interruptions intermittentes. L'équipe a finalement résolu le problème en se déplaçant derrière un service de mitigation DDoS. Les responsables de l'attaque et leurs motivations sont inconnus, mais aucune donnée de projet ou d'utilisateur n'a été compromise.
Une attaque DDoS (Distributed Denial of Service) est une forme d'attaque informatique dans laquelle un grand nombre d'ordinateurs ou de dispositifs connectés, souvent rassemblés dans un **botnet**, envoient simultanément un grand volume de demandes de manière coordonnée vers un serveur ou un site web cible. L'objectif principal d'une attaque DDoS est de submerger la cible avec un trafic excessif, de sorte que les ressources du serveur sont épuisées, ce qui rend le service indisponible pour les utilisateurs légitimes. Cela peut entraîner des interruptions de service, des ralentissements ou même des pannes complètes du site web ou du serveur ciblé. Les attaques DDoS sont souvent utilisées pour perturber les services en ligne ou pour causer des nuisances à des organisations ou des individus.
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'atteigne le serveur cible. De nombreuses entreprises proposent des solutions de mitigation DDoS, et il est judicieux d'envisager leur utilisation.
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'activité : Élaborez un plan de continuité d'activité pour être prêt à réagir en cas d'attaque réussie. Ce plan devrait inclure des procédures pour restaurer rapidement les services après une interruption.
5. Limiter l'accès aux ressources : Restreignez l'accès aux ressources critiques en utilisant des pare-feu, des listes de contrôle d'accès et d'autres mécanismes de sécurité pour réduire la surface d'attaque potentielle.
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'impact des attaques en répartissant la charge de manière équilibrée.
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'attaque et prendre des mesures pour atténuer ses effets.
Aucune mesure de sécurité n'est totalement infaillible, mais en combinant plusieurs de ces stratégies, vous pouvez réduire considérablement le risque et l'impact des attaques DDoS sur des services en ligne.
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'autres solutions pour aider à atténuer les attaques DDoS dans une certaine mesure. Voici quelques méthodes que vous pourriez envisager :
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.
<code>
<IfModule mod_evasive20.c>
DOSHashTableSize 3097
DOSPageCount 5
DOSSiteCount 100
DOSPageInterval 1
DOSSiteInterval 1
DOSBlockingPeriod 10
</IfModule>
</code>
<code>
<IfModule mod_security2.c>
SecRuleEngine On
SecRule REMOTE_ADDR "@ipMatch 192.168.1.0/24" "phase:1,nolog,allow"
SecRule REQUEST_HEADERS:User-Agent "malicious_user_agent" "id:1001,deny"
</IfModule>
</code>
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'impact sur un seul serveur.
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 :
<code>
<VirtualHost *:80>
ServerName monsite.com
<Proxy balancer://mycluster>
BalancerMember http://backend1.example.com:8080
BalancerMember http://backend2.example.com:8080
BalancerMember http://backend3.example.com:8080
</Proxy>
ProxyPass / balancer://mycluster/
ProxyPassReverse / balancer://mycluster/
</VirtualHost>
</code>
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, backend2.example.com et backend3.example.com) sur le port 8080. Vous pouvez ajouter ou supprimer des serveurs backend en utilisant la directive BalancerMember.
Assurez-vous d'activer le module mod_proxy et mod_proxy_balancer en utilisant a2enmod si ce n'est pas déjà fait.
3. **Mise en cache (Caching)** : L'utilisation de mécanismes de mise en cache, tels que `mod_cache`, peut aider à réduire la charge sur le serveur en servant des copies mises en cache de pages web au lieu de générer dynamiquement chaque page à chaque demande.
<code>
<IfModule mod_cache.c>
CacheQuickHandler off
CacheLock on
CacheLockPath /tmp/mod_cache-lock
</IfModule>
</code>
<code>
sudo a2enmod evasive
sudo a2enmod security2
sudo a2enmod cache
sudo service apache2 restart
</code>
4. **Monitoring et alertes** : Vous pouvez mettre en place des outils de surveillance pour surveiller le trafic entrant et être alerté en cas d'augmentation soudaine du trafic. Cela peut vous permettre de réagir rapidement à une attaque DDoS.
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'activer :
<code>
<Location /server-status>
SetHandler server-status
Require ip 127.0.0.1
</Location>
</code>
Cette configuration permet d'accéder à la page de status en utilisant l'URL http://votre-serveur/server-status depuis **localhost**. Assurez-vous que le module ''mod_status'' est activé (utilisez ''a2enmod'' sous Debian/Ubuntu).
Pour une surveillance plus avancée et des alertes, vous pouvez utiliser des outils tiers tels que **Nagios**, **Zabbix**, **Munin**, ou d'autres solutions de monitoring. Ces outils permettent de surveiller les métriques du serveur Apache et de définir des alertes en fonction de seuils spécifiques. Par exemple, vous pouvez surveiller la charge CPU, l'utilisation de la mémoire, les requêtes par seconde, etc.
--
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, et un service de mitigation DDoS spécialisé est généralement mieux équipé pour faire face à de telles attaques.
Il existe plusieurs solutions open source de mitigation DDoS que vous pouvez envisager d'utiliser pour renforcer la sécurité de votre infrastructure en ligne. Voici quelques-unes d'entre elles :
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'activité malveillante. Par exemple, pour bloquer une adresse IP après un certain nombre de tentatives de connexion échouées, vous pouvez ajouter une règle dans le fichier de configuration de Fail2ban.
<code>
[Definition]
failregex = ^ <HOST> .*authentication failure
</code>
2. **ModSecurity** : ModSecurity est un pare-feu d'application web open source qui peut être utilisé pour détecter et bloquer les attaques DDoS au niveau de l'application web en utilisant des règles personnalisées.
ModSecurity utilise des règles pour détecter et bloquer les attaques au niveau de l'application web. Vous pouvez personnaliser ces règles en fonction de vos besoins. Par exemple, vous pouvez configurer des règles pour détecter des requêtes HTTP suspectes ou des tentatives d'injection SQL.
<code>
SecRule ARGS "(select|insert|update|delete|drop|alter)" \
"id:1000,phase:2,t:none,t:urlDecodeUni,t:htmlEntityDecode,t:lowercase,block,msg:'SQL injection detected'"
</code>
3. **Snort** : Snort est un système de détection d'intrusion (IDS) open source qui peut être configuré pour surveiller le trafic réseau à la recherche de comportements malveillants, y compris les attaques DDoS.
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'attaques DDoS spécifiques ou d'autres types de comportements malveillants.
<code>
alert udp any any -> $HOME_NET any (msg:"Possible UDP Amplification Attack"; dsize:>1000; sid:1000001;)
</code>
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.
<code>
limit_conn_zone $binary_remote_addr zone=conn_limit_per_ip:10m;
limit_conn conn_limit_per_ip 10;
</code>
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.
<code>
frontend web
bind :80
acl too_many_requests src_http_req_rate(web) ge 10
http-request deny if too_many_requests
</code>
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'adresse IP source, le port de destination, etc. Par exemple, pour limiter le nombre de connexions par seconde à un port spécifique, vous pouvez ajouter une règle iptables appropriée.
<code>
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
</code>
--- //[[user:cedricabonnel]] Édition initiale du Samedi 25 novembre 2023 //
Crédit image : //[[user:cpt]]//