Bekijk Volledige Versie : Aanval op streamserver? Of teveel bezoekers?
Een streamserver gaat erg traag. Ziet er naar uit dat httpd een hoop cpu tijd opslokt.
Dus dan maar even zoeken:
De /var/log/messages geeft het volgende:
Dec 7 11:09:54 server2 kernel: printk: 2 messages suppressed.
Dec 7 11:09:59 server2 kernel: printk: 2 messages suppressed.
Dec 7 11:10:05 server2 kernel: printk: 4 messages suppressed.
Dec 7 11:10:10 server2 kernel: printk: 2 messages suppressed.
Dec 7 11:10:28 server2 last message repeated 4 times
Dan maar een dmesg commando uitgevoerd en die geeft zoiets:
TCP: Treason uncloaked! Peer 77.164.219.76:60824/8040 shrinks window 2422616995:2422619016. Repaired.
TCP: Treason uncloaked! Peer 77.164.219.76:60824/8040 shrinks window 2422616995:2422619016. Repaired.
TCP: Treason uncloaked! Peer 77.164.219.76:60824/8040 shrinks window 2422616995:2422619016. Repaired.
Daar heb ik op gezocht en volgens wat ik vond zou dan niet voor vertraging kunnen zorgen maar het doet het dus wel, althans zo lijkt het.
Hier zie ik een waslijst van met ps faux:
apache 12631 2.9 0.4 23948 8360 ? S 17:53 0:00 \_ /usr/sbin/httpd
apache 12632 0.0 0.3 23792 8156 ? S 17:53 0:00 \_ /usr/sbin/httpd
apache 12653 5.2 0.4 23948 8360 ? S 17:53 0:00 \_ /usr/sbin/httpd
apache 12661 6.1 0.4 23948 8360 ? S 17:53 0:00 \_ /usr/sbin/httpd
apache 12662 6.1 0.4 23948 8360 ? S 17:53 0:00 \_ /usr/sbin/httpd
apache 12690 7.0 0.4 23948 8360 ? S 17:53 0:00 \_ /usr/sbin/httpd
apache 12691 7.1 0.4 23948 8360 ? S 17:53 0:00 \_ /usr/sbin/httpd
apache 12692 7.1 0.4 23948 8360 ? S 17:53 0:00 \_ /usr/sbin/httpd
apache 12693 11.1 0.4 24520 8828 ? R 17:53 0:00 \_ /usr/sbin/httpd
Men ziet wel dat hier de cpu tijd lekker vet is.
Antiloris is geinstalleerd, het gaat om een gewone Centos 5.x server zonder controlepaneel en er draait castcontrol op onder een useraccount.
Is hier sprake van een ddos of moet ik naar iets anders zoeken?
"server-status" al enabled om te kijken waar de apache processen precies mee bezig zijn?
Edit;
Wordt er wellicht gestreamed via een HTTP proxy? Dit leunt enorm op de CPU en RAM usage
Yep server-status had ik net aangezet, daar komt het volgende uit:
Current Time: Tuesday, 07-Dec-2010 18:05:39 CET
Restart Time: Tuesday, 07-Dec-2010 17:58:33 CET
Parent Server Generation: 0
Server uptime: 7 minutes 5 seconds
39 requests currently being processed, 16 idle workers
K__KKW_WKKK_C_KWKKK___K_KKKK_CCKK_KKKKK_KKWKC_C_KW KKK__S........
.................................................. ..............
.................................................. ..............
Die korte uptime is omdat ik httpd herstart had omdat die server-status aangezet werd.
En daaronder dit soort dingen:
15082 in state: K , 14854 in state: _ , 13556 in state: _
15087 in state: K , 14955 in state: K , 14784 in state: W
14444 in state: _ , 14048 in state: W , 15088 in state: K
15097 in state: K , 14049 in state: K , 14871 in state: _
14966 in state: C , 15098 in state: _ , 15099 in state: K
14787 in state: W , 14141 in state: K , 15100 in state: K
14530 in state: K , 14788 in state: _ , 14883 in state: _
Ik kan de extended status eens aanzetten, zien of dat meer oplevert.
Streamen gebeurt via een lite versie van Castcontrol.
Yep server-status had ik net aangezet, daar komt het volgende uit:
Die korte uptime is omdat ik httpd herstart had omdat die server-status aangezet werd.
En daaronder dit soort dingen:
Ik kan de extended status eens aanzetten, zien of dat meer oplevert.
Streamen gebeurt via een lite versie van Castcontrol.
Idd even extended status aanzetten. Je zou naderhand een compleet overzicht moeten krijgen.
Voorbeeld: http://apache.org/server-status
Oke, even wat frissere info.
Parent Server Generation: 0
Server uptime: 42 minutes 2 seconds
Total accesses: 5940 - Total Traffic: 5.8 MB
CPU Usage: u189.59 s18.03 cu0 cs0 - 8.23% CPU load
2.36 requests/sec - 2392 B/second - 1015 B/request
46 requests currently being processed, 3 idle workers
En dan van de extended status:
3-0 25283 0/10/120 W 4.07 0 0 0.0 0.01 0.12 82.212.173.223 subdomein.domein11.com GET /castcontrol/misc/scripts/streaminformation.js.php?id=3 HTT
4-0 25284 1/10/124 K 4.03 9 3997 1.1 0.01 0.12 93.50.212.74 subdomein.domein11.com GET /castcontrol/misc/scripts/streaminformation.js.php?id=3 HTT
5-0 25868 1/1/121 K 0.39 1 3081 1.1 0.00 0.12 74.42.229.206 subdomein.domein11.com GET /castcontrol/misc/scripts/streaminformation.js.php?id=3 HTT
6-0 25606 1/4/118 K 1.56 8 4124 1.1 0.00 0.11 87.210.114.10 subdomein.domein11.com GET /castcontrol/misc/scripts/streaminformation.js.php?id=3 HTT
7-0 24215 1/25/120 K 9.08 14 1615 1.1 0.03 0.12 216.110.235.168 subdomein.domein11.com GET /castcontrol/misc/scripts/streaminformation.js.php?id=3 HTT
8-0 23970 1/32/121 K 12.72 0 2169 1.1 0.03 0.11 82.89.201.34 subdomein.domein11.com GET /castcontrol/misc/scripts/streaminformation.js.php?id=3 HTT
9-0 25049 1/13/120 K 4.96 4 3161 1.1 0.01 0.12 57.67.164.37 subdomein.domein11.com GET /castcontrol/misc/scripts/streaminformation.js.php?id=3 HTT
10-0 24555 1/19/120 K 7.48 1 3665 1.1 0.02 0.12 78.114.100.31 subdomein.domein11.com GET /castcontrol/misc/scripts/streaminformation.js.php?id=3 HTT
11-0 25400 1/7/126 K 2.75 11 3698 1.1 0.01 0.12 72.20.128.250 subdomein.domein11.com GET /castcontrol/misc/scripts/streaminformation.js.php?id=3 HTT
Ik zie in de server-status niet wat er achter HTT komt, zal wel HTTP zijn maar ik bedoel wat daar dan achter komt.
Hier zitten een paar bij met flinke cpu tijd, deze kreeg ik net van CSF/LFD binnen.
Nog wat meer info:
netstat -taepn|tr -s " " " "|awk '{print $5;}'|cut -d: -f1|sort|uniq -c|sort -rnk1|head
123 85.10.xxx.xxx
112 78.46.xxx.xxx
De eerste is het server ip zelf, de tweede is het ip van de dns server op een andere machine die naar dit subdomein op de streamserver verwijst.
Oke, even wat frissere info.
En dan van de extended status:
Ik zie in de server-status niet wat er achter HTT komt, zal wel HTTP zijn maar ik bedoel wat daar dan achter komt.
Hier zitten een paar bij met flinke cpu tijd, deze kreeg ik net van CSF/LFD binnen.
Lijkt erop dat apache voornamelijk een javascript aan het serveren is welke dient voor het weergeven van de huidige stream informatie. Het gaat hier meestal om een script dat included wordt in een website.
Dat lijkt dus wel in orde te zijn.
Betreft de netstat output, haal die 2 IP's eens door de Apache access en errors logs.
Die 2 ip's doen niets in de error logs, het eerste wel in de access logs maar dan roept het eerste ip alleen de setup.php op, heel sporadisch:
85.25.xxx.xxx - - [06/Dec/2010:17:50:29 +0100] "POST /scripts/setup.php HTTP/1.1" 404 293 "85.10.xxx.xxx" "Mozilla/4.0
Tweede ip komt helemaal niet voor.
Ik heb wel gevonden in de logs wat er achter die HTTP regels moet komen van de server-stats.
Achter al die streaminformation.js.php staat http://christmassongsradio.com/listners.php
Ik zie veel verschillende ip's, alleen maar met die site als referrer, ook zoiets:
[Tue Dec 07 00:43:14 2010] [error] [client 71.187.249.42] PHP Warning: fsockopen() [<a href='function.fsockopen'>function.fsockopen</a>]: unable to connect to 85.10.xxx.xxx:8040 (Connection refused) in /home/klant/public_html/castcontrol/_SCSTATS.php on line 49, referer: http://christmassongsradio.com/listners.php
Apart, log anders eens alle traffic voor die 2 IP's met bijvoorbeeld ntop (of eventueel tcpdump).
Als de betreffende IP's veel traffic op poort 80 tcp hebben, zonder dat deze voorkomen in de logfiles dan klopt er iets niet ;-)
Als de 2 IP's overlast veroorzaken kun je wellicht deze tijdelijk @ deny in iptables zetten. Kijken of de overlast minder wordt.
Ntop heb ik niet.
Tcpdump wel maar ik weet niet precies welke commandline opties er achter moeten.
Ik kan echter niet beide ip's gaan blokkeren, want zoals gezegd, het eerste ip is het ip van de streamserver zelf (eth0) en het andere ip is het ip adres van de naamserver die naar het domein verwijst.
Als ik die ga blokkeren dan werkt er niets meer, toch? Althans het domein resolved niet meer.
Goede kans dat ik mezelf dan ook nog buiten sluit. Dat risico wil ik niet aangaan.
Ik zie wel dat van het eigen ip, alle verbindingen time_wait zijn en 0 bytes.
tcp 0 0 server2.streamdomein.com:8040 server2.streamdomein.co:43770 TIME_WAIT
Met een gewoon commando netstat zonder andere commandline opties. Misschien iets van castcontrol zelf?