Attaque DOS - Apache

Attaque DOS - Apache - Sécurité - Systèmes & Réseaux Pro

Marsh Posté le 13-10-2007 à 12:04:14    

Mon server apache ne réplond plus aux requetes 20 secondes après que je le lance.
 
Le log m'indique :  
 
[Sat Oct 13 11:09:11 2007] [error] server reached MaxClients setting, consider raising the MaxClients setting
 
Et effectivement le nombre de thread qu'apache lance atteind le maxClient (256) indique dans la configuration d'apache.
Puisque j'atteind 256 clients en moins de 20 secondes j'assimile ca à une attaque dos.
 
Comment puis-je solutionner ce problème assez rapidement ?


---------------
---- www.photonization.com ----
Reply

Marsh Posté le 13-10-2007 à 12:04:14   

Reply

Marsh Posté le 13-10-2007 à 12:52:01    

si tu regarde le server-status tu as quoi ?

Reply

Marsh Posté le 13-10-2007 à 13:27:56    

server-status ?
Peux-tu detailler ? :P je ne suis pas expert en administration web :D
 
J'ai augmenté les variables des paramètres de connexion dans la configuration apache. Et même s'il y a toujours 256 threads executé en simultanné, l'accès au site semble être d'aussi bonne qualité qu'avant que je ne découvre cette attaque.
 
Je n'en explique pas la raison et d'ailleurs j'aimerais la connaitre :)
 
Je m'y connais très peu dans le domaine des attaque sur server mais dites-moi si je m trompe, ce type d'attaque est généralement temporaire de la part de la personne qui en est responsable ?


---------------
---- www.photonization.com ----
Reply

Marsh Posté le 13-10-2007 à 13:49:39    

http://httpd.apache.org/docs/2.0/mod/mod_status.html
 
et perso je pense pas que se soit une attaque, juste une mauvaise configuration mais bon je peux me tromper

Reply

Marsh Posté le 13-10-2007 à 15:04:03    

Ok, je connaissais pas :P
 
Voilà le rapport :
 

Code :
  1. Server Version: Apache/2.2.3 (Debian) PHP/4.4.4-8+etch4
  2. Server Built: Jun 17 2007 20:24:06
  3. Current Time: Saturday, 13-Oct-2007 15:03:41 CEST
  4. Restart Time: Saturday, 13-Oct-2007 11:58:15 CEST
  5. Parent Server Generation: 3
  6. Server uptime: 3 hours 5 minutes 25 seconds
  7. 63 requests currently being processed, 99 idle workers
  8. ___G___G___GGGG__GG_G_GG_G_G_G__GG_WGG_GGGGWW______________G____
  9. ________G___.._G___.____..G.GG..G_GGG_G...GG_G.._G_._GGG.G_.W_GG
  10. _G_G_G_G___._G_G______.G__._GG__._GG__.G.______.__.___........GG
  11. .............G..........................G.......................
  12. Scoreboard Key:
  13. "_" Waiting for Connection, "S" Starting up, "R" Reading Request,
  14. "W" Sending Reply, "K" Keepalive (read), "D" DNS Lookup,
  15. "C" Closing connection, "L" Logging, "G" Gracefully finishing,
  16. "I" Idle cleanup of worker, "." Open slot with no current process
  17. PID Key:
  18.    3869 in state: _ ,   3953 in state: _ ,   3870 in state: _
  19.    3539 in state: G ,   3954 in state: _ ,   3871 in state: _
  20.    3955 in state: _ ,   3717 in state: G ,   3956 in state: _
  21.    3971 in state: _ ,   3872 in state: _ ,   3720 in state: G
  22.    3721 in state: G ,   2441 in state: G ,   3722 in state: G
  23.    3957 in state: _ ,   3873 in state: _ ,   3724 in state: G
  24.    2446 in state: G ,   3874 in state: _ ,   3726 in state: G
  25.    3875 in state: _ ,   3552 in state: G ,   3728 in state: G
  26.    3958 in state: _ ,   3729 in state: G ,   3959 in state: _
  27.    3730 in state: G ,   3876 in state: _ ,   2457 in state: G
  28.    3960 in state: _ ,   3879 in state: _ ,   3733 in state: G
  29.    3734 in state: G ,   3961 in state: _ ,   3880 in state: W
  30.    3736 in state: G ,   3737 in state: G ,   3962 in state: _
  31.    3738 in state: G ,   3739 in state: G ,   3740 in state: G
  32.    3741 in state: G ,   3881 in state: W ,   3882 in state: W
  33.    3883 in state: _ ,   3939 in state: _ ,   3884 in state: _
  34.    3885 in state: _ ,   3886 in state: _ ,   3963 in state: _
  35.    3887 in state: _ ,   3888 in state: _ ,   3889 in state: _
  36.    3943 in state: _ ,   3964 in state: _ ,   3890 in state: _
  37.    3891 in state: _ ,   3892 in state: _ ,   3579 in state: G
  38.    3893 in state: _ ,   3894 in state: _ ,   3895 in state: _
  39.    3965 in state: _ ,   3896 in state: _ ,   3966 in state: _
  40.    3897 in state: _ ,   3967 in state: _ ,   3898 in state: _
  41.    3968 in state: _ ,   3969 in state: _ ,   3970 in state: _
  42.    3587 in state: G ,   3899 in state: _ ,   3972 in state: _
  43.    3900 in state: _ ,   3901 in state: _ ,   3591 in state: G
  44.    3902 in state: _ ,   3903 in state: _ ,   3904 in state: _
  45.    3905 in state: _ ,   3906 in state: _ ,   3907 in state: _
  46.    3908 in state: _ ,   3600 in state: G ,   3602 in state: G
  47.    2521 in state: G ,   3604 in state: G ,   3909 in state: _
  48.    3606 in state: G ,   3607 in state: G ,   2528 in state: G
  49.    3910 in state: _ ,   3609 in state: G ,   3611 in state: G
  50.    2535 in state: G ,   3911 in state: _ ,   3660 in state: G
  51.    3912 in state: _ ,   3614 in state: G ,   3913 in state: _
  52.    3914 in state: _ ,   3617 in state: G ,   3618 in state: G
  53.    3619 in state: G ,   3620 in state: G ,   3915 in state: _
  54.    3868 in state: W ,   3916 in state: _ ,   3624 in state: G
  55.    3625 in state: G ,   3917 in state: _ ,   2557 in state: G
  56.    3918 in state: _ ,   2559 in state: G ,   3919 in state: _
  57.    3629 in state: G ,   3920 in state: _ ,   3631 in state: G
  58.    3921 in state: _ ,   3922 in state: _ ,   3923 in state: _
  59.    3924 in state: _ ,   3636 in state: G ,   3925 in state: _
  60.    2571 in state: G ,   3926 in state: _ ,   3927 in state: _
  61.    3928 in state: _ ,   3929 in state: _ ,   3930 in state: _
  62.    3931 in state: _ ,   3645 in state: G ,   3932 in state: _
  63.    3940 in state: _ ,   3933 in state: _ ,   3649 in state: G
  64.    2587 in state: G ,   3934 in state: _ ,   3935 in state: _
  65.    3936 in state: _ ,   3653 in state: G ,   3654 in state: G
  66.    3937 in state: _ ,   3938 in state: _ ,   3657 in state: G
  67.    3941 in state: _ ,   3942 in state: _ ,   3944 in state: _
  68.    3945 in state: _ ,   3946 in state: _ ,   3947 in state: _
  69.    3948 in state: _ ,   3949 in state: _ ,   3950 in state: _
  70.    3951 in state: _ ,   3952 in state: _ ,   3679 in state: G
  71.    3680 in state: G ,   2643 in state: G ,   2670 in state: G


---------------
---- www.photonization.com ----
Reply

Marsh Posté le 13-10-2007 à 15:08:16    

quelques instant apres :

Code :
  1. WWWG_W_.___..G.W_._WGWW____._G_W_W__GGW.____WW_W_W__W___WWW.WWW_
  2. W_W_W___.W_____.__W__WWW__._.G__.WGWGW.___GGW.___.W_W..._.__WW..
  3. WGWG_._._____._GW_W_________.G____..___.____WW_______________...
  4. ........................................G.......................



---------------
---- www.photonization.com ----
Reply

Marsh Posté le 13-10-2007 à 15:19:57    

bah c'est bon.
Après normalement on peut avoir un état détaillé avec les url servies, les ip des personnes etc
Par contre regarde les ressources de ton serveur, car chaque thread consomme en ram

Reply

Marsh Posté le 13-10-2007 à 15:52:48    

HA, comment faire pour voir tous ces détails ? C'est interessant.
 
Justement niveau ressources là est le problème.
 
Chaque thread consomme entre 3 et 5 mo et au final 1go de ram est occupé sur le serveur sur une quantité de 1go avec uniquement le apache comme service relativement important qui tourne dessus :
 
               total       used             free       shared    buffers     cached
Mem:       1017980    1004216      13764          0       2996     893144
 
Habituellement je n'ai jamais plus de 200 mo d'occupé pour toutes les applications qui tournent sur le serveur.
 
De plus la quantité de thread lancé par apache en simultanné est insensé puisque la fréquentation normale de mon site est telle qu'il ne peut y avoir plus de 20 clients en simultanné connecté.
 
 


---------------
---- www.photonization.com ----
Reply

Marsh Posté le 13-10-2007 à 15:59:29    

J'ai redémarré la machine. Dès le reboot j'avais 100 mo de ram occupé.

 

20 secondes après j'avais ca :

 

45 requests currently being processed, 99 idle workers.

 

Et 300 mo de ram occupé. Alors qu'il est totalement impossible que 45 clients (en W" Sending Reply) se connectent avec la faible frequentation du site.


Message édité par Pulsar- le 13-10-2007 à 16:01:22

---------------
---- www.photonization.com ----
Reply

Marsh Posté le 13-10-2007 à 16:09:58    

quelle est ta config apache ? (KeepAlive On ?, MaxClients ?, TimeOut ?)...

Reply

Marsh Posté le 13-10-2007 à 16:09:58   

Reply

Marsh Posté le 13-10-2007 à 16:25:56    

Je viens de remodifier les paramètres en ceux-ci :

 

KeepAlive off

 

StartServers 2
MaxClients 150
MinSpareThreads 25
MaxSpareThreads 75
ThreadsPerChild 25

 

un petit restart et voilà le resultat :

Code :
  1. Server uptime: 1 minute 19 seconds
  2. 40 requests currently being processed, 25 idle workers
  3. WWWWWWWWWW_WWW_WWWW_W__W__W_WWWWW__W_W_WWW_W_W__WWWWWW____W__W__
  4. _...............................................................
  5. ................................................................
  6. ................................................................



Message édité par Pulsar- le 13-10-2007 à 16:33:27

---------------
---- www.photonization.com ----
Reply

Marsh Posté le 13-10-2007 à 16:48:20    

Code :
  1. Server uptime: 15 minutes 47 seconds
  2. 42 requests currently being processed, 37 idle workers
  3. W__W__WW____WW_WWW____W_W__WWWWWWW_WW_W__WWWW_W___WW__WWWWWWWW__
  4. _W____WW__WW_W_.................................................
  5. ................................................................
  6. ................................................................
 

Là c'est sur qu'il n'y a plus d'attaque dos :)

 

Mais toujours 1go de memoire occupé :(


Message édité par Pulsar- le 13-10-2007 à 16:56:03

---------------
---- www.photonization.com ----
Reply

Marsh Posté le 14-10-2007 à 15:30:22    

La commande free | grep apache te permettrait de voir si c'est réellement apache qui bouffe de la mémoire.


Message édité par addyll le 14-10-2007 à 16:42:56
Reply

Marsh Posté le 14-10-2007 à 18:12:59    

hum... cette commande ne fonctionne pas sur ma distribution debian.
 
Mais avec un ps aux | grep apache, je vois la grand liste (anormalement grande) des threads lancé par apache.
 
Je n'ai toujours pas résolu ce problème de ram consommée. Ainsi que tous ces threads lancés pour rien ...


---------------
---- www.photonization.com ----
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed