Apache optimisation et sécurisation (attaques DoS)

Discussion dans 'Administration d'un site Web' créé par flipou, 4 Mai 2011.

  1. flipou
    flipou Nouveau WRInaute
    Inscrit:
    6 Septembre 2007
    Messages:
    17
    J'aime reçus:
    0
    bonjour à tous,

    voila ont a un Dédié chez Dedibox "PRO R210 4x 1.86GHz, 64 Bits, 16 Go DDR3 ECC",

    quelques stats : environs 7 000 visiteurs / jours, jusqu'à 230 visiteurs simultané
    CPU load averages : 0.12(1 mins) , 0.15 (5 mins) , 0.09 (15 mins)

    1) voila ma configuration Apache, pensez-vous quelle est bien adapté ?

    Timeout 120
    KeepAlive Off
    MaxKeepAliveRequests 100
    KeepAliveTimeout 15

    <IfModule prefork.c>
    StartServers 8
    MinSpareServers 5
    MaxSpareServers 20
    ServerLimit 256
    MaxClients 256
    MaxRequestsPerChild 4000
    </IfModule>

    <IfModule worker.c>
    StartServers 2
    MaxClients 150
    MinSpareThreads 25
    MaxSpareThreads 75
    ThreadsPerChild 25
    MaxRequestsPerChild 0
    </IfModule>

    2) Ont a connu des gros ralentissement du systeme surement du à des attaques et je voulais installer le mod_evasive est ce une bonne idée sur une boutique en ligne ?


    Merci à tous pour vos remarques !
     
  2. benz69fr
    benz69fr WRInaute occasionnel
    Inscrit:
    2 Mars 2006
    Messages:
    260
    J'aime reçus:
    0
    Salut,

    De mon point de vue la conf' apache importe peu par rapport à la conf mysql et l’optimisation du code alliée à la mise en cache d'un maximum de chose. Concernant ton extrait de conf, il me semble que apache est compilé en prefork ou en worker mais pas les deux donc tu ne peux jouer que sur l'un des deux tableaux.
     
  3. flipou
    flipou Nouveau WRInaute
    Inscrit:
    6 Septembre 2007
    Messages:
    17
    J'aime reçus:
    0
    en fait si j'attire l'attention sur apache c'est que lorsque qu'on a connu des plantages KeepAlive était sur On et les Process Apache explosaient jusqu'a occuper toutes les ressources machine, et Mysql ne fermait plus ses Proccess, (un Pb souvent évoqué sur le Web, mais sans vrai Soluces...) j'ai deja rencontré le PB à 8h00 du matin avec 25 visiteurs, et sans souci avec 200, c'est pour cela que j'essai de verouiller tous ca...
     
  4. benz69fr
    benz69fr WRInaute occasionnel
    Inscrit:
    2 Mars 2006
    Messages:
    260
    J'aime reçus:
    0
    KeepAlive à On permet généralement d'améliorer les performances mais peut-être un goulet d'étranglement en cas de forte charge, à mon avis, si ton site tourne sans, c'est bien comme ça. (d'autant que ton "top" montre que le serveur est serein) sinon, avec KeepAlive à On tu devrais baisser timeout de 15s qui est le temps par défaut mais qui peut-être ramené à 5 par exemple
     
  5. jcaron
    jcaron WRInaute accro
    Inscrit:
    13 Février 2004
    Messages:
    2 593
    J'aime reçus:
    0
    Avant de changer quelque chose, il serait utile de déterminer quel est le problème. Si un serveur est lent, ça peut venir de plusieurs choses différentes:
    - tu n'as pas assez de RAM, ça swappe (cf top)
    - tu as trop d'accès à tes disques durs et ils saturent
    - tu est bloqué par des limites "soft" (nombre de processus...)

    Pas assez de RAM c'est en général lié à un problème de config Apache. Trop d'accès disque c'est en général lié à des requêtes SQL mal optimisées. Les limites "soft" c'est lié essentiellement à la config Apache, éventuellement des paramètres système.

    S'il y avait une config Apache idéale, il n'y aurait pas de fichier de config :)

    Les valeurs idéales des paramètres que tu indiques dépendent beaucoup du reste de ta config Apache, en particulier la façon dont php est configuré (mod_php, suphp, etc.).

    Les deux problèmes les plus classiques concernant le nombre de processus et les keep-alives sont:
    - que tu te retrouves avec Apache+php qui bouffe plus de RAM que tu n'en as dans ta machine
    - que tu satures le nombre de processus à cause des keep-alives.

    Pour configurer Apache de façon idéale, il te faut:
    - un top complet
    - un ps axl
    - un statut Apache (il faut que mod_status soit activé)
    Il te faut ces infos "en temps normal" et au moment où ton serveur te semble le plus chargé.

    Top t'indiquera tout plein d'autres paramètres que juste le load average, en particulier la RAM utilisée, si la machine swappe, etc. top et ps te permettent de mesurer le nombre de processus et surtout leur taille. Le statut Apache te permettra de voir l'utilisation des processus.

    Si la machine swappe, la première chose à faire consiste à limiter le nombre de processus total en fonction de la RAM dispo (en n'oubliant pas de garder de la marge pour l'OS, mysql, le cache de l'OS, etc.) et de la taille des processus (Apache + php). Si par exemples tu utilises mod_php et que chaque processus Apache fait 100 Mo après quelques requêtes, alors 256 processus c'est 256 x 100 = 25.6 Go, ce qui ne rentre pas dans 16 Go. C'est plus ou moins compliqué dans les autres cas (suphp etc.).

    Si tu satures ta table de processus Apache, ça peut venir des keepalives qui risquent de "bloquer" un slot pendant de longues secondes pour rien. Plutôt que de désactiver complètement, il suffit souvent de réduire le KeepAliveTimeout (15 secondes c'est très long).

    Dans certains cas de figure, il peut être pertinent d'avoir deux serveurs http: l'un pour servir les requêtes dynamiques (gros processus, nombre limité, pas de keepalives), l'autre pour les requêtes statiques (processus allégé au maximum, nombre plus élevé, keepalives).

    Evidemment, il peut y avoir beaucoup d'autres problèmes possibles (mysql, attaques...), mais sans plus d'infos, c'est difficile voire impossible à diagnostiquer.

    Jacques.
     
  6. flipou
    flipou Nouveau WRInaute
    Inscrit:
    6 Septembre 2007
    Messages:
    17
    J'aime reçus:
    0
    Merci pour cette réponse qui donne des pistes...,
    comme tu l'indiques les PB peuvent etres lié à bcp de choses diffierentes et surtout qu'il n'y pas de conf Apache idéal :).

    s'il y a un prochain plantage je ferais un copier collé du Top.


    Merci,

    Franck
     
  7. jcaron
    jcaron WRInaute accro
    Inscrit:
    13 Février 2004
    Messages:
    2 593
    J'aime reçus:
    0
    Le top complet c'est important, mais un ps axl complet et surtout le statut apache aussi. Et les observer même "en temps normal" permet déjà d'avoir des indications...

    Jacques.
     
  8. _Soul
    _Soul WRInaute impliqué
    Inscrit:
    26 Avril 2011
    Messages:
    626
    J'aime reçus:
    0
    Salut,

    Ce serais pas plus simple de stopper l'attaque avant la couche logicielle, c'est à dire avec les iptables? Il y a moyen de limite le nombre de requête par ip ;) Apache est beaucoup plus lent et c'est pas vraiment les même ressources utilisé. Sinon, au pire prend un firewall mais ça va te coûter relativement cher...
     
  9. jcaron
    jcaron WRInaute accro
    Inscrit:
    13 Février 2004
    Messages:
    2 593
    J'aime reçus:
    0
    Avant de chercher à se protéger contre des attaques, il faudrait commencer par être sûr qu'il y en a... Il y a quelque chose dans les logs qui confirme ces attaques?

    Jacques.
     
  10. flipou
    flipou Nouveau WRInaute
    Inscrit:
    6 Septembre 2007
    Messages:
    17
    J'aime reçus:
    0
    je n'ai pas la preuve que ces plantages sont dû à des attacks, rien de particulier des les logs à ces moments la...
    Mais tres souvent je vois des tentatives ds les log erreur apache avec des Ip de Roumanie, Pologne Chine....

    et comment un serveur peux tourner comme une horologe pendant des jours avec le même trafic et les même requetes Sql,

    et planter(machine très occuper presque inaccessible) pendant 5 minutes à 8h00 du matin ? il se passe forcement des choses louche et ce n'est pas les taches Crons :wink:
     
  11. _Soul
    _Soul WRInaute impliqué
    Inscrit:
    26 Avril 2011
    Messages:
    626
    J'aime reçus:
    0
    Une attaque (D)Dos, sa dure pas 5min et ça mettrais ton serveur en rade à mon avis.

    Il y a des softs -sous linux- de détection de faille sur un site (le tiens légalement ^^), je te conseille de rechercher un peu sur google, il y en a un en 4 lettres avec 1 chiffre qui fonctionne plutôt bien :)

    Sinon avant que ça plante tu peux nous faire voir les logs en bouillant les ips s'tu veux.
     
Chargement...
Similar Threads - Apache optimisation sécurisation Forum Date
Mod d'optimisation Google pour apache , qu'en pensez vous ? Référencement Google 12 Octobre 2012
monitoring apache2 ? Développement d'un site Web ou d'une appli mobile 28 Octobre 2019
Incohérences stats de crawl et logs apache Crawl et indexation Google, sitemaps 25 Juillet 2019
Renewal letsencrypt plante Apache Administration d'un site Web 12 Avril 2019
Coupure intempestive apache Développement d'un site Web ou d'une appli mobile 14 Mars 2019
Apache et QUIC (http/3) Administration d'un site Web 14 Novembre 2018
Tracer le fonctionnement d'Apache (2.2.15) Administration d'un site Web 23 Avril 2018
Tuto http->https pour apache Administration d'un site Web 9 Mars 2018
Redirection de page avec virtualhost d'apache Développement d'un site Web ou d'une appli mobile 6 Février 2017
Charset apache / php ? Administration d'un site Web 6 Juin 2016