Server unter Beschuss?

Apache, Lighttpd, nginx, Cherokee
paulo-
Posts: 29
Joined: 2004-06-13 12:55

Server unter Beschuss?

Post by paulo- » 2007-09-28 18:42

Hallo,

ich habe einen Debian Sarge Dedicated Server laufen mit PHP 5.x, MySQL 5.x und Apache 2.2.x (alle auf dem aktuellen Stand). Auf dem Server laufen ca. 40 Domains.

Seit heute Mittag ist der Server komischerweise total ausgelastet und nichts geht mehr.

top sagt:

top - 18:40:28 up 1:58, 2 users, load average: 54.50, 27.83, 31.18
Tasks: 178 total, 43 running, 135 sleeping, 0 stopped, 0 zombie
Cpu(s): 92.5% us, 6.6% sy, 0.0% ni, 0.0% id, 0.0% wa, 0.0% hi, 0.9% si
Mem: 1002536k total, 788548k used, 213988k free, 12404k buffers
Swap: 2040232k total, 57588k used, 1982644k free, 403992k cached

PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
23138 www-data 16 0 33032 15m 4360 R 6.8 1.6 0:02.40 apache2
22608 www-data 15 0 33512 15m 4452 S 6.2 1.6 0:08.54 apache2
22995 www-data 16 0 33512 15m 4364 R 6.2 1.6 0:04.30 apache2
22613 www-data 16 0 33228 15m 4368 R 5.9 1.6 0:04.93 apache2
23014 www-data 16 0 33540 15m 4444 R 5.9 1.6 0:02.79 apache2
22875 www-data 15 0 33212 15m 4320 S 5.7 1.6 0:01.61 apache2
22580 www-data 15 0 34732 16m 5104 S 5.4 1.7 0:06.22 apache2
23015 www-data 15 0 33312 15m 4332 S 5.1 1.6 0:02.81 apache2
22491 mysql 15 0 166m 46m 4752 S 4.8 4.8 0:08.03 mysqld
23026 www-data 16 0 32952 15m 4320 R 3.7 1.6 0:01.79 apache2
22679 www-data 16 0 33068 15m 4368 R 3.1 1.6 0:04.71 apache2
23005 www-data 16 0 32172 14m 4312 R 2.8 1.5 0:02.38 apache2
23010 www-data 16 0 29416 11m 4336 R 2.8 1.2 0:02.55 apache2
23025 www-data 15 0 26284 8988 4340 S 2.8 0.9 0:02.53 apache2
22610 www-data 16 0 30592 12m 5196 R 2.5 1.3 0:06.85 apache2
22870 www-data 16 0 32760 15m 4676 R 2.5 1.6 0:01.66 apache2
23011 www-data 16 0 31952 14m 4376 R 2.5 1.4 0:03.14 apache2
22601 www-data 16 0 33580 16m 4640 S 2.0 1.7 0:06.97 apache2
22576 www-data 15 0 30684 13m 4888 S 1.7 1.4 0:04.89 apache2
22590 www-data 15 0 31412 14m 4964 S 1.7 1.5 0:06.34 apache2
23001 www-data 16 0 30096 12m 4344 R 1.4 1.3 0:02.55 apache2
23024 www-data 16 0 26464 9204 4328 R 1.4 0.9 0:02.08 apache2
23135 www-data 16 0 29836 12m 4312 R 1.4 1.3 0:00.49 apache2
22612 www-data 17 0 30456 13m 4468 S 1.1 1.3 0:07.33 apache2
22873 www-data 16 0 28452 10m 4344 R 1.1 1.1 0:00.26 apache2
22874 www-data 16 0 29576 11m 4312 R 1.1 1.2 0:00.27 apache2
22985 www-data 16 0 30456 12m 4344 R 1.1 1.3 0:01.95 apache2
23002 www-data 16 0 30356 12m 4320 R 1.1 1.3 0:01.94 apache2
22578 www-data 17 0 27332 10m 4856 S 0.6 1.1 0:03.96 apache2
22592 www-data 16 0 28088 10m 4468 R 0.6 1.1 0:02.26 apache2
22614 www-data 16 0 27672 9896 5080 S 0.6 1.0 0:04.40 apache2
22682 www-data 16 0 27284 9m 4328 R 0.6 1.0 0:04.00 apache2
22876 www-data 17 0 27244 9.9m 4352 S 0.6 1.0 0:01.19 apache2
22997 www-data 17 0 27244 9.9m 4320 S 0.6 1.0 0:00.85 apache2
23006 www-data 17 0 27284 9.9m 4328 S 0.6 1.0 0:01.06 apache2
794 root 10 -5 0 0 0 S 0.3 0.0 0:01.59 md1_raid1
805 root 15 0 0 0 0 S 0.3 0.0 0:00.76 kjournald
22582 www-data 17 0 28784 10m 5276 S 0.3 1.1 0:06.38 apache2
22586 www-data 15 0 26344 9264 4512 S 0.3 0.9 0:05.77 apache2
22611 www-data 15 0 25844 7952 3508 S 0.3 0.8 0:00.01 apache2
22644 root 15 0 2172 1168 852 R 0.3 0.1 0:00.31 top
22994 www-data 17 0 27244 9.9m 4328 S 0.3 1.0 0:01.48 apache2
23020 www-data 16 0 26824 9620 4356 R 0.3 1.0 0:02.54 apache2


Wo fange ich jetzt an zu suchen? Die Apache2 Config ist getuned, die MySQL Config auch - gab ja sonst nie Probleme. Wenn ich Apache2 stoppe läuft der Server unter 0 last. Sobald ich ihn starte geht die Last binnen weniger Sekunden sofort hoch.

Wie merke ich ob es z.B. eine DoS Attacke ist?

Danke für jeglichen Input, bin am verzweifeln..

paulo-
Posts: 29
Joined: 2004-06-13 12:55

Re: Server unter Beschuss?

Post by paulo- » 2007-09-28 19:17

Ich denke ich hab was gefunden, in den Logs einer meiner Seiten stehen sofort nach Apache2 Restart tausende Access Einträge hiervon:

83.246.116.16 - - [28/Sep/2007:19:15:20 +0200] "GET / HTTP/1.1" 200 8002 "-" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30)"
83.246.116.16 - - [28/Sep/2007:19:15:21 +0200] "GET / HTTP/1.1" 200 8002 "-" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30)"
83.246.116.16 - - [28/Sep/2007:19:15:23 +0200] "GET / HTTP/1.1" 200 8002 "-" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30)"
83.246.116.16 - - [28/Sep/2007:19:15:24 +0200] "GET / HTTP/1.1" 200 8002 "-" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30)"


Jemand versucht mit .NET den Server zu killen? Was kann ich dagegen tun?

dtdesign
RSAC
Posts: 395
Joined: 2006-09-05 21:12
Location: Berlin

Re: Server unter Beschuss?

Post by dtdesign » 2007-09-28 23:46

Wenn mich nicht alles täuscht ist das einfach nur ein Client mit Microsoft Internet Explorer 6.0 (MSIE 6.0) der auf Windows Server 2003 läuft (Windows NT 5.2).

Der Browser sagt von sich, dass er .NET beherrscht / drin hat / what ever, mehr eigentlich auch nicht.

Die Anfragen müssten ja immer von einer IP-Adresse kommen, einfach mal die dedizierte Firewall ran lassen, die kann effektiv Anfragen fernhalten.

Wenn das noch nicht hilft, schmeiß diesen Schrott von Apache weg und mach dir was anständiges druff :P

Gruß
dtdesign

User avatar
daemotron
Administrator
Administrator
Posts: 2800
Joined: 2004-01-21 17:44

Re: Server unter Beschuss?

Post by daemotron » 2007-09-29 00:11

Apache nix Schrott, wahrscheinlich nur ungünstig konfiguriert. Prozesslimit runterdrehen (auf maximal 5-10 Children) und dafür MaxRequestsPerChild schön hoch ansetzen, dann funktionieren solche ich-mach-deinen-httpd-zur-forkbomb Angriffe auch nicht mehr.

Btw. bei dem "Angreifer" handelt es sich um einen (vermutlich) gehackten Root-Server, der bei FirstDedicated im Rack steckt - mach die Jungs doch per Abuse-Report mal drauf aufmerksam, dass einer ihrer Kunden seine Kiste nicht richtig abgesichert hat. Wenn sie die Kiste dann erst mal vom Netz nehmen, greift das Ding schon keine weiteren Server mehr an.

paulo-
Posts: 29
Joined: 2004-06-13 12:55

Re: Server unter Beschuss?

Post by paulo- » 2007-09-29 10:45

Danke für eure Hilfe, hab gestern bei HostWay (Hoster von FirstDedicated) angerufen, die haben den Server heute früh vom Netz genommen.

Noch kurz eine Frage zur Apache Config, die sieht momentan so aus:

Timeout 300
KeepAlive On
MaxKeepAliveRequests 15
KeepAliveTimeout 2
HostNameLookups off

<IfModule prefork.c>
StartServers 5
MinSpareServers 5
MaxSpareServers 10
ServerLimit 150
MaxClients 150
MaxRequestsPerChild 500
</IfModule>

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

<IfModule perchild.c>
NumServers 5
StartThreads 5
MinSpareThreads 25
MaxSpareThreads 75
MaxThreadsPerChild 20
MaxRequestsPerChild 1000
AcceptMutex fcntl
</IfModule>


Wirkt sich das irgendwie nachteilig aus wenn ich wie vorgeschlagen das Prozesslimit runterdrehe? Ist ein Opteron mit 1GB Ram. Der Server hat relativ viel Traffic, hauptsächlich durch Foren (vBulletin, etc.).

Vielen Dank!

oxygen
RSAC
Posts: 2179
Joined: 2002-12-15 00:10
Location: Bergheim

Re: Server unter Beschuss?

Post by oxygen » 2007-09-29 16:53

Welchen MPM nutzt du denn?
Auf den ersten Blick ist MaxKeepAliveRequest zu niedrig (sollte bei 100-200 liegen), das Timeout zu hoch (würde 30-60 empfehlen) und MaxRequestsPerChild viel zu niedrig (10000-20000 wäre ein guter Wert).

paulo-
Posts: 29
Joined: 2004-06-13 12:55

Re: Server unter Beschuss?

Post by paulo- » 2007-10-01 13:18

oxygen wrote:Welchen MPM nutzt du denn?
Auf den ersten Blick ist MaxKeepAliveRequest zu niedrig (sollte bei 100-200 liegen), das Timeout zu hoch (würde 30-60 empfehlen) und MaxRequestsPerChild viel zu niedrig (10000-20000 wäre ein guter Wert).


Prefork benutze ich. Ok, hab das mal so umgesetzt, danke für die Hilfe. Muss ich mit den Settings irgendwas bei MySQL besonders beachten? Buffer evtl.?

User avatar
daemotron
Administrator
Administrator
Posts: 2800
Joined: 2004-01-21 17:44

Re: Server unter Beschuss?

Post by daemotron » 2007-10-01 15:04

Du springst aber ganz schön... Natürlich kannst Du mit einem optimierten MySQL einiges in der Performance herausholen, v.a. bei komplexeren Abfragen lässt sich die Laufzeit durch geschicktes Caching drastisch verkürzen (durch clever geschriebene Abfragen allerdings noch viel mehr). Zu dem Thema gibt es hier aber schon reichlich Futter; schau Dir einfach mal die Stickies in der Datenbank-Sektion an.