Auteur | Message |
---|---|
Rano
| Inscrit le : 13/04/2005 |
# Le 23/09/2009 à 20:42 Bonsoir, Floodmon est un petit daemon pour surveiller, alerter et mitiger les attaques SYN flood Sur mes serveurs, en heure de pointe, il me restait une ultime erreur incompréhensible qui provoquait, avec peut etre une requete sur 10000, aucun résultat d'apache. Après avoir absolument tout checké et vu le taux d'erreur j'avais abandonné depuis plusieurs mois et grâce à Floodmon j'ai identifié le problème ! Comme indiqué plus haut, toute application appelant la fonction listen() lui passe 2 paramètres, l'un étant la taille de la file d'attente, la backlog. Apache v2.x* ne déroge pas à la règle et utilise une backlog DEFAULT_LISTENBACKLOG dont la longueur est fixée à 511 (cf mpm_common.h). Cependant comme nous l'avons déjà vu, Linux réduit la taille de la backlog à la valeur de SOMAXCONN si elle lui est supérieure donc, lors de son lancement, Apache n'a plus une backlog de 511 mais uniquement de 128, valeur par défaut de SOMAXCONN. Cette disparité des valeurs par défaut Apache/Linux est plutôt problématique : lors d'une attaque SYN flood sur le port 80, très rapidement Apache ne semble plus répondre. En fait, ce n'est pas Apache mais le kernel qui rejette les nouvelles connexions, puisque la file d'attente des SYN et celle de l'application sont toutes les deux directement liées pour la gestion des nouvelles connexions et leur rejet. Il est important de comprendre que durant toute l'attaque, Apache n'est pas sollicité (il ne sait même pas qu'il y a une attaque en cours) car, et c'est le principe du SYN flood, aucune connexion n'est établie. Les SYN restent dans la file d'attente des connexions incomplètes du kernel. Heureusement, DEFAULT_LISTENBACKLOG peut être modifiée grace à la directive ListenBacklog qui doit être ajoutée au fichier apache2.conf (ou httpd.conf). Etant donné que floodmon donne des valeurs généreuses à SOMAXCONN et tcp_max_syn_backlog (minimum 10,000), il vous est conseillé d'augmenter largement la valeur de la backlog d'Apache tant que vous utilisez floodmon. Celle-ci dépendra de la puissance de votre serveur, du nombre de visiteurs et bien entendu d'une éventuelle attaque. Une valeur minimale de 5000 semble être assez confortable pour faire face à une attaque de moyenne envergure sur le port 80. Editez votre fichier apache2.conf ou httpd.conf et ajoutez la valeur que vous souhaitez utiliser. Exemple avec une backlog de 5000 : ListenBacklog 5000 Modifiez la valeur de SOMAXCONN (uniquement si floodmon ne tourne pas !) : echo 5000 > /proc/sys/net/core/somaxconn La mention "uniquement si floodmon ne tourne pas" c'est juste parceque floodmon s'occupe déjà de le régler tout seul Je ne connaissais absolument pas cette limitation et il s'avère que j'avais atteint cette limite sur mes serveurs, même en fonction normal, sans attaque ! |
flush
| Jean-Philippe Inscrit le : 09/05/2005 |
# Le 23/09/2009 à 21:11 Très intéressant, @+ Jean-Philippe |
Bool
| Olivier Inscrit le : 09/05/2005 |
# Le 23/09/2009 à 21:19 D'ailleurs Varnish indique 262144 comme valeur par défaut pour le somaxconn. |
Akarys
| Thierry Inscrit le : 19/01/2008 |
# Le 24/09/2009 à 06:48 Bonjour, $ cat /proc/sys/net/core/somaxconn C'est bien la valeur par défaut indiquée par Rano. A priori trop faible donc. Je vais l'augmenter et l'instrumenter pour voir... (Message édité le 24-09-2009 à 07h00 par Akarys) |
krucial
| Jean Christophe Inscrit le : 09/03/2005 |
# Le 24/09/2009 à 08:22 Ils doivent bosser grave tes serveurs Rano JC - Mes sites | Affiliation devis travaux | Cotes voitures anciennes |
Rano
| Jean Inscrit le : 13/04/2005 |
# Le 24/09/2009 à 10:22 Ouais, en heure de pointe ils ne glandent pas beaucoup |
Bool
| Olivier Inscrit le : 09/05/2005 |
# Le 04/10/2009 à 17:17 Rah merci Rano J'avais un problème de ce genre que je n'arrivais pas à résoudre, et en lisant la Doc de floodmon dans le doute je me suis rendu compte qu'NginX avait le même problème : il ne suis la recommandation somaxconn du système que sous FreeBSD, dans les autres cas il faut la spécifier à la main. C'est maintenant chose faite, et c'est tout bon. |
flush
| Jean-Philippe Inscrit le : 09/05/2005 |
# Le 04/10/2009 à 19:26 Je suis bien content d'être un client à Bool ^^ j'aurais jamais trouvé le problème !!! @+ Jean-Philippe |
Rano
| Jean Inscrit le : 13/04/2005 |
# Le 05/10/2009 à 21:15 Ouais je ne comprends pas que je ne sois jamais tombé sur une telle info avant. Ça semble pourtant être important comme réglage quand on commence a avoir un peu de trafic. |
Vous ne pouvez pas participer au forum, car votre inscription n'a pas été validée. Pour vous faire valider en tant que Membre, cliquez ici.
© MHN - Tous droits réservés | CNIL N°844440 | 24/11/2024 4:09:32 | Généré en 7.33ms | Contacts | Mentions légales |