IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Apache Discussion :

DOS sur Apache


Sujet :

Apache

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    50
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 50
    Points : 41
    Points
    41
    Par défaut DOS sur Apache
    Bonjour,

    Tout a commencé il y a quelques jours, alors que je faisais des F5 sur un site sur mon serveur, site utilisant joomla!

    J'ai rapidement constaté un ralentissement pour desservir les pages, et je suis mis donc connecté en SSH à mon Debian pour voir, avec la commande top, comment ça se passait. Je précise, que je consulte régulièrement mon serveur pour voir si tout se passe bien, je vérifie aussi la SWAP, car je n'ai que ... 256 Mo de RAM. Pour situer davantage le contexte, j'ai récemment augmenté la taille de la memoire limite pour les scripts PHP à 15 Mo, car Joomla! ne se contentait pas des 10 Mo que j'allouais (alors que je développe des applications avec moins). Par ailleurs, j'utilise le mode Prefork pour Apache-PHP.

    Donc, lors de ces dizaines de F5, les processus Apache se créait et se détruisait (en apparence, d'après les premiers processus listés par top), et la SWAP est monté progressivement jusqu'à plus de 1 Go, jusqu'à ce que j'interromps moi-même Apache pour arrêter ce qui a fini par être un test.

    Donc, d'après moi, ma configuration était mauvaise. J'ai successivement eu les réflexions suivantes :

    - Possibilité d'attaques DOS volontaires ou non, j'ai installé mod_evasive. Je l'ai testé, et malgré des paramètres qui aurait du bloquer même un visiteur normal, ça ne bloquait même pas mes F5. Cependant, je trouve l'idée bonne, car ça reste, même avec plus de RAM et des bons paramètres, une porte ouverte à de basiques attaques.

    - J'ai descendu les valeurs de Apache, MaxClients, etc à 5, et la vie d'un processus à 1000 au lieu de 0. En testant, j'ai "bizarrement" eu un affichage lent des sites. Donc ma première reflexion a été que même le chargement d'une image utilise un processus sur les 5. Pourquoi pas. Mais les processus s'enchainant "sans répis", quelle différence cela fait-il avec plus de processus ... Car en passant la valeur à 10, le problème a disparu. Avec 10, les attaques de F5 montait la SWAP à 65 Mo, mais elle ne semblait pas monter davantage.

    - Je n'ai pas trouvé de Doc vraiment clair sur le fonctionnement de Apache, et les choix à prendre. J'avais vu que Nginx était bien meilleur que Apache pour le statique parce que blabla, mais au fond, je n'ai jamais vu qu'un processus était utilisé par une url ... J'ai même vu un site en anglais qui semblait dire qu'un processus allouait x Mo de mémoire, en fonction de la configuration de PHP (c'est du moins mon interprétation cela ma traduction du document en anglais). Au final, j'ai donc réfléchis à passer par nGinx, soit lui tout seul soit en frontal, et à passer Apache en MPM Worker, sans avoir de réponses censées dans tout ce que j'ai pu lire. Je vais pas prendre de risque tant que je ne comprends pas ma propre démarche ...

    Parallèlement, en y réfléchissant, si on part du principe que je n'ai que 60 Mo à allouer à Apache pour ses ressources, et qu'un script peut utiliser jusqu'à 15 Mo, On peut donc fixer la valeur à 5. Ceci étant plutôt faux, car en situation réelle, les scripts php prennent moins de 15 Mo. Ceci est totalement faux, car, sauf allocation de mémoire par le processus, le chargement d'une image ne prend rien en RAM ... J'ose imaginer. Donc, je me retrouve avec deux extrêmes de situations qui sont que 5 images sont chargées simultanément (plus n'est pas possible) avec une utilisation nulle de la RAM, par rapport à 5 scripts PHP blindés en même temps. Une moyenne permettrait d'avoir un rapport convenable, et j'ai d'ailleurs actuellement fixé la valeur à 15 processus maximum.

    Au final, non seulement j'ai l'impression d'avoir un serveur vulnérable, et ce bêtement (par de simples F5 ...), mais en plus je n'arrive pas à cerner l'ensemble (un processus même pour une image ? Une allocation de mémoire ? différence avec MPM Worker, Utiliser Nginx avec "ressources illimitées" pour statiques et apache juste pour PHP avec du coup un bon contrôle des ressources, etc ...).

    Je me sens aussi bête de ne pas avoir réussi à faire tourner mod_evasive ... ^^

    Voilà. Avez-vous des tutos bien complets ? Des retours d'expérience ?

    Merci, a+

  2. #2
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    50
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 50
    Points : 41
    Points
    41
    Par défaut
    Bon,

    J'ai trouvé un article sur la limite de connexion par IP sur une durée déterminée avec IPTables. J'étais presque comblé, quand, lors des tests, alors qu'il indiquait "10 connexions par ip par 10 secondes", j'ouvrais un site sur mon serveur en sachant qu'avec les images, le css etc, 10 était largement dépassé. Je me suis rendu compte après que le Keep-Alive n'y était pas pour grand chose. Etant donné que le client peut l'activer ou le désactiver, il est difficile de compter sur le nombre de connexions par secondes ... Je l'ai quand même mis à 50 sur 2 secondes, mais j'ai surtout utilisé le mode pour les autres serveurs (FTP, etc).

    Il faudrait maintenant que je puisse controler plutot les processus, en fonction de l'ip. Mod_evasive est très intéressant, mais ne fonctionne pas chez moi, puisqu'il ne me bannit à peine, et que j'arrive, avec des scripts, à me faire bannir et 1/3 secondes après à ravoir les pages.

    En plus de ce mode, je serai ravis de mieux comprendre, comme je l'ai dis dans mon message précédant, le fonctionnement worker/prefork, et étant actuellement en prefork, de mettre sur table l'histoire de un processus par ressource (même image), de l'allocation de mémoire, etc. Bref, ce qu'il se passe dans sa petite tête, et de l'utilité, éventuellement, mais c'est presque un autre débat, et c'est déjà plus falcultatif, de l'utilité d'un serveur frontal pour le statique.

    Merci par avance !

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    50
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 50
    Points : 41
    Points
    41
    Par défaut
    C'est bon pour mod_evasive ! Il n'avait pas les droits pour loguer. Enfin ... il avait les droits sur le dossier, mais pas les droits de parcourir le dossier parent ...

    Il a l'air cette fois de fonctionner à peu près correctement ... Bon, avec le test Perl, des fois il bloque à 65 pages d'affilées, des fois à 45 ... Mais passons ...

    Par contre, si ces 45 étaient des pages PHP importantes, ça mettrait quand même pas la joie ... Donc les autres questions restent ...

Discussions similaires

  1. reload.js ne marche pas sur apache
    Par Leishmaniose dans le forum Général JavaScript
    Réponses: 10
    Dernier message: 19/08/2005, 15h36
  2. Appli XMLRAD sur Apache 2.00
    Par rgarnier dans le forum XMLRAD
    Réponses: 6
    Dernier message: 17/12/2004, 17h50
  3. Tomcat 5 => plusieurs Host et mappés sur Apache indépenda
    Par squal_13 dans le forum Tomcat et TomEE
    Réponses: 1
    Dernier message: 09/11/2004, 15h44
  4. [BATCH-DOS] Sur quel forum poster ?
    Par Beaunico dans le forum Scripts/Batch
    Réponses: 4
    Dernier message: 17/09/2004, 18h30
  5. Réponses: 2
    Dernier message: 13/05/2004, 21h53

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo