Attacks from Gameservers

  • Thread starter Thread starter federschuh
  • Start date Start date
F

federschuh

Guest
Hallo,
hab mit Gameservern nix am Hut, bin auch kein Player (keine Zeit und Lust).
Dennoch habe ich Probleme mit Gameservern die mir nix dir nix einfach Pakete
(meist UDP, u.a. an die Ports 27015, 11789, usw.) verschicken, obwohl diese Ports
auf meinem Server überhaupt nicht besetzt sind.
Wieso tun sie das? Sind die schlecht programmiert oder was steckt sonst dahinter?

Thx
 
Die Server werden dir Status reports schicken, die normal für einen client sind.
Da aber die ip gespooft ist landen die Pakete nicht bei Absender.
So kann man aus relativ wenig DOS Bandbreite viel machen
Setze dich mal mit dem gameserver Admin in verbindung.
 
Die Server werden dir Status reports schicken, die normal für einen client sind.
Verstehe ich nicht ganz, denn ich bin doch kein Client von denen.
Da aber die ip gespooft ist landen die Pakete nicht bei Absender.
Meinst du die Pakete stammen nicht von dem Gameserver, sondern von irgendwelchen Hackern die gespoofte Pakete mit der Absenderadresse des Gameservers verschicken?
So kann man aus relativ wenig DOS Bandbreite viel machen
Wie das denn?
Setze dich mal mit dem gameserver Admin in verbindung.
Und wie mache ich den ausfindig? Ich hab doch nur die (gespoofte?) IP aus den empfangenen Paketen.
 
Nein
Der Angreifer schickt ne Anfrage an den gameserver. Da der Angreifer aber die ip spooft, bekommt die gespoofte ip die Antwort.
Machen kann man da glaube ich nicht viel, außer die ip zu blocken und dem Admin Bescheid zu geben.
Und da die Anfrage meist nur aus ein paar Bytes besteht, jedoch die Antwort um ein vielfaches größer ist, fungiert der gameserver quasi wie ein Verstärker, da er aus wenig Bandbreite viel macht.

Die ip des gameservers ist die ip, von der die Pakete kommen.
 
Last edited by a moderator:
Habe da auch einen aktuellen Fall, kam sogar eine Abuse Meldung rein deswegen.

Auf der IP läuft ein Win2k8 mit CoD Server..

Code:
2011-12-25 13:37:59.269148 GMT ip XX.XX.XXX.XX.8305 > 208.110.65.133.20480: UDP (506 bytes) [#28439]
2011-12-25 13:37:59.375867 GMT ip XX.XX.XXX.XX.8305 > 208.110.65.133.20480: UDP (506 bytes) [#32279]
2011-12-25 13:37:59.387413 GMT ip XX.XX.XXX.XX.8305 > 208.110.65.133.20480: UDP (506 bytes) [#33303]
2011-12-25 13:37:59.445164 GMT ip XX.XX.XXX.XX.8305 > 208.110.65.133.20480: UDP (506 bytes) [#35351]
2011-12-25 13:37:59.497616 GMT ip XX.XX.XXX.XX.8305 > 208.110.65.133.20480: UDP (506 bytes) [#37655]
2011-12-25 13:37:59.538735 GMT ip XX.XX.XXX.XX.8305 > 208.110.65.133.20480: UDP (506 bytes) [#39703]
2011-12-25 13:37:59.539035 GMT ip XX.XX.XXX.XX.8305 > 208.110.65.133.20480: UDP (506 bytes) [#39959]
2011-12-25 13:37:59.626633 GMT ip XX.XX.XXX.XX.8305 > 208.110.65.133.20480: UDP (506 bytes) [#42519]
2011-12-25 13:37:59.638621 GMT ip XX.XX.XXX.XX.8305 > 208.110.65.133.20480: UDP (506 bytes) [#43543]
2011-12-25 13:37:59.673637 GMT ip XX.XX.XXX.XX.8305 > 208.110.65.133.20480: UDP (506 bytes) [#45079]
2011-12-25 13:37:59.755599 GMT ip XX.XX.XXX.XX.8305 > 208.110.65.133.20480: UDP (506 bytes) [#48663]

Habe nun erstmal zur weiteren Analyse die interne IP-Adresse auf der Firewall gesperrt. Schaut nun sehr schön aus im Firewall-Log :o
 

Attachments

  • udpflood.jpg
    udpflood.jpg
    185.5 KB · Views: 343
Code:
iptables -N quake3_ddos
iptables -A quake3_ddos -m u32 ! --u32 "0x1c=0xffffffff" -j ACCEPT
iptables -A quake3_ddos -m u32 --u32 "0x20=0x67657473&&0x24=0x74617475&&0x25&0xff=0x73" -m recent --name getstatus --set

iptables -A quake3_ddos -m recent --update --name getstatus --hitcount 17 --seconds 2 -j DROP <-- Das Hitcount ggf. Anpassen.
iptables -A quake3_ddos -j ACCEPT
iptables -I INPUT 1 -p udp --dport 28960 -j quake3_ddos <-- anpassen für jeden Port

bitte ;)

--Edit-- Fail.. ist ja ein Windoof Server :D
Egal ich lass es mal drin wenn wer das Prob unter Linux hat.
 
automatisches Ban Script

Hallo liebe "Leidensgenossen"

wir haben auf unseren Servern leider das selbe Problem. Wir bekommen ca 20-30 Mbit gespoofte GameServer Statusabfragen. Darum habe ich nach einer Lösung gesucht. Ich habe ein fertiges Script im Netz gefunden, welche dynamisch den Traffic analysiert. Leider funktionierte dies nur für Quake3 Engines. Ich habe es entsprechend erweitert. Derzeit werden 5 Suchpattern unterstützt. Somit werden derzeit fast alle gängigen Attacken geblockt.

Mein Logfile zeigt derzeit ca. 8-10 gespoofte Angriffe pro Tag mit teilweise mehreren 1000 Requests pro Sekunde. Hier ein Auszug:

Do 4. Okt 16:30:19 CEST 2012 91.202.61.155 = banned Reason: (search pattern: getsta and UDP) for 475 Requests in 8 seconds / 59 Requests per second
banning IP: 199.59.166.200
Do 4. Okt 20:36:18 CEST 2012 199.59.166.200 = banned Reason: (search pattern: getsta and UDP) for 476 Requests in 8 seconds / 59 Requests per second
banning IP: 68.34.122.57
Do 4. Okt 21:34:19 CEST 2012 68.34.122.57 = banned Reason: (search pattern: getInf and UDP) for 41638 Requests in 8 seconds / 5204 Requests per second
banning IP: 65.41.139.49
Do 4. Okt 21:51:19 CEST 2012 65.41.139.49 = banned Reason: (search pattern: getInf and UDP) for 39544 Requests in 8 seconds / 4943 Requests per second
banning IP: 187.171.117.63

Dieses Script funktioniert derzeit allerdings nur unter Linux. Ihr findet es im Anhang. Das Logfile heißt /bin/banlist. Des weiteren kann man einige Settings unter /bin/getstatus.ini verändern. Die default Settings funktionieren aber sehr gut.

Am besten erstellt man einen Cronjob, welcher jede Minute läuft.
Bei Fragen könnt Ihr mich gerne unter jens.rehpoehler@gmx.de kontaktieren.

Viel Erfolg

Gruß

Jens
 

Attachments

So rießige Scripte und doch so ineffizient.
Ich waage mal zu behaupten, dass DPI mittels IPTables wesentlich performanter ist, als mittels tcpdump. Vorallem lässt sich das dann mit 2 IPTables Regeln abfrühstücken. ;)
 
nur ist iptables deutlich zu statisch war ports und IPs angeht. Das ist vor allem spannend wenn mehrere verschiedene GameServer -> z.B. Doom, COD, Quake etc auf der selben Maschine sind.

Die Kunden haben dann noch die Möglichkeit die Ports selbstständig zu ändern.

-> Bei mir hilft das Script auf jeden Fall. Wir haben vorher beinahe 200 Mbit Outgoing gehabt (als Antwort auf getstatus, getInfo etc). -> Also als Dos auf die gespooften IPs. Nun ist Ruhe.

Das Script ist vielleicht nicht das eleganteste .... aber es funktioniert sauber und erreicht seinen Zweck -> was ich von den ebenfalls von mir betesteten IPTables Regeln nicht behaupten kann.

-> wer es nützlich findet möge es nutzen .... wer nicht lässt es halt ;)
 
Da schlimme ist, dass sich dazu fast jeder Gameserver missbrauchen lässt. Die Admins der Server am besten benachrichtigen. Diese wissen das meist gar nicht.

Da hier schon einer DPI angesprochen worden ist, könnte man eigentlich schon mit einer Regel sämtlichen Verkehr Gameservern blocken. Man müsste nur den Antwortstring einfügen: z.B. https://developer.valvesoftware.com/wiki/Server_queries#A2S_INFO

Da ich mich mit DPI für Iptables nicht auskenne, gibt es die Möglichkeit Regex einzusetzen? Falls ja, ließe sich damit schon ein recht guter Filter erstellen.
 
stxShadow, bin gerade zu Faul durch diesen Thread zu blättern, aber ich habe meine IPTables dzau bereits veröffentlich, wenn nicht in diesem Thread, dann zu einem anderen zum gleichen Thema.
IPTables lassen sich auch mit Port Ranges oder völlig ohne Port-Angabe einsetzen und wenn deine IPTables nicht funktioniert haben, liegt das eher am Admin, als an IPTables als solches.

Man muss keinen schlechteren Workaround schön reden, nur weil man sich nicht eingestehen will, dass man nicht in der Lage war es besser zu machen. ;)
 
ok .... wenn Du denn die Weisheit mit Löffeln gefressen hast hätte ich gerne Iptables Rules die für die GameServer mit Quake Engine, COD, JK2, Doom3 (inkl handshake auth) funktioniert. Des weiteren bitte für die Port Ranges 30000-40000 -> Jedes Game kann auf jedem Port liegen. Des weiteren haben wir zwischen 5 und 7 solcher Server auf einer IP liegen. Ich möchte aber nicht ständig mit den Werten Jonglieren (Hitrate anpassen wie Du es nennst)

Bin gespannt was Du da zu bieten hast ;)

btw: Doom3 Query nach Handshake ist "].@.#.u0.", damit Du nicht suchen musst.

Aso .... und ein logging in ein entsprechendes File wäre noch schön. Würde mich wirklich freuen wenn Du mir da eine einfache Iptables liefern könntest, die all das erfüllen kann.
 
Last edited by a moderator:
wenn Du denn die Weisheit mit Löffeln gefressen hast

So mal gar nicht. Komm mal bisschen runter.
Wenn du mit Kritik nicht umgehen kannst, ist das nicht mein Problem. Solche Scripte gibt es (leider) mittlerweile massenweise im Netz, die die ganzen Kiddies ohne Ahnung Blind einsetzen.
Ich hab geschrieben, wie es besser geht und du pampst mich hier blöd von der Seite an? Denk bitte eine wenig nach, bevor du postest.
Wir sind nicht hier, damit ich dir Copy&Paste Anleitungen gebe. Wenn du konkrete Fragen zur IPTables Problematik hast, beantworte ich dir die gern.

Wenn du wieder etwas freundlicher wirst, könnte ich mich vielleicht sogar dazu hinreißen lassen, die handvoll IPTables Regeln für deine Anforderungen nieder zu schreiben. ;)
 
Ich hab das getstatus Skript seit ich es geschrieben hab in Verwendung.
Ich lasse es jede Minute laufen (10s Scantime), und bin seither glücklich damit.

Welche Pakete werden denn bei Dir noch verwendet (ausser getstatus & getinfo).

Fragen und Anregungen zu dem Skript wären prima im Ursprungthreads des Skriptes unter http://wolffiles.de/index.php?forum-showposts-44 angebracht

Edit: Natürlich ist eine Lösung komplett unter IPTables glücklicher, jedoch ist meiner Erfahrung nach u32 nicht auf allen (V)Servern vorhanden.
 
Last edited by a moderator:
@firewire2002 -> ich bin nicht unfreundlich. Ich spreche Dich nur genauso an, wie Du mich ansprichst (nämlich als potenziell unfähigen Admin .... was ich 100% nicht bin). Wir müssen uns nicht auf dieser Ebene unterhalten. Nur: wie es in den Walt ruft, so schallt es heraus. -> Kriegsbeil begraben ?

Ich werde gerne IPTables einsetzen, wenn Sie mir den selben nutzen bringen, was bisher mit meinen Chains nicht funktioniert hat. Ich habe meine Anforderungen ja schon oben beschrieben.

@snooog: bei uns werden in letzter Zeit massiv Doom3 Server (trotz handshake) angegriffen. Diese Angriffe verhindert das Script zuverlässig. Außerdem kannst Du in der ini relativ einfach weitere Search pattern definieren (durch Komata getrennt).
 
Ich war so frei und hab Deine hier veröffentlichte Version auch auf Wolffiles gepackt. Ist ja ein netter Fork :)
 
Back
Top