{"id":6636,"date":"2012-03-27T05:00:46","date_gmt":"2012-03-27T03:00:46","guid":{"rendered":"https:\/\/www.gambaru.de\/blog\/?p=6636"},"modified":"2019-10-11T23:53:45","modified_gmt":"2019-10-11T21:53:45","slug":"opfer-und-tater-zugleich-wenn-der-spieleserver-fuer-eine-dos-attacke-missbraucht-wird","status":"publish","type":"post","link":"https:\/\/gambaru.de\/blog\/2012\/03\/27\/opfer-und-tater-zugleich-wenn-der-spieleserver-fuer-eine-dos-attacke-missbraucht-wird\/","title":{"rendered":"Opfer und T\u00e4ter zugleich: Wenn der Spieleserver f\u00fcr eine DoS-Attacke missbraucht wird"},"content":{"rendered":"<p>Behauptete ich an irgendeiner Stelle, dass das mit dem Spieleserver ein kleines Projekt werden solle, dem nicht viel Zeit gewidmet w\u00fcrde? Ich muss im Delirium gewesen sein. Zugegebenerweise es geschieht nicht jeden Tag, dass ich pl\u00f6tzlich entdecke, dass mein OpenArena-Server als Verst\u00e4rker und Waffe in einer DoS-Attacke auf Webserver und andere unbescholtene Dienste im Internet dient.<br \/>\nAls ich am Samstag auf meinem Server einloggte um ein paar Webseiten von <a href=\"http:\/\/linuxiuvat.de\">linuxiuvat.de<\/a> anzupassen, wollte ich kurz den monatlichen Traffic-Verbrauch \u00fcberpr\u00fcfen. Ein n\u00fctzliches Werkzeug daf\u00fcr ist z.B. <a href=\"http:\/\/packages.debian.org\/slurm\">slurm<\/a>, das ich letzten Sommer mal mit meinen anderen favorisierten <a href=\"https:\/\/www.gambaru.de\/blog\/2011\/07\/23\/systemmonitore-fur-die-konsole\/\">Systemmonitoren f\u00fcr die Konsole<\/a> vorgestellt habe. Slurm zeigt \u00fcbersichtlich den ein- und ausgehenden Netzwerkverkehr in Echtzeit an, konzentriert sich dabei aber nur auf das Wesentliche. Eine detaillierte Aufschl\u00fcsselung des Traffic l\u00e4sst sich mit <a href=\"http:\/\/ex-parrot.com\/~pdw\/iftop\/\">iftop<\/a> darstellen, was sich kurz danach noch als n\u00fctzlich erweisen sollte.<br \/>\nZu meiner \u00dcberraschung signalisierte slurm, dass mein ausgehender Traffic bei 2-3 MB\/s lag. Ok, hier werden die Systemadministratoren von Ex-Megaupload sicher schmunzeln, f\u00fcr meinen kleinen vServer war das aber schon eine ganze Menge.<br \/>\nNur zum Vergleich: Ich habe 1000 GB Traffic frei im Monat, danach wird die Anbindung von 100 Mbit auf 10 Mbit gedrosselt. Momentan liegt mein monatlicher Verbrauch bei ca. 20 GB, obwohl ich vier Spieleserver und einen Webserver online habe. Da ist also noch etwas Luft nach oben...<\/p>\n<h2>Netzwerkanalyse<\/h2>\n<p>Fasziniert starrte ich also auf slurm und konnte mir \u00fcber diese Zahl keinen richtigen Reim machen, weswegen ich mir mit iftop die Sache genauer anschaute.<\/p>\n<p><a href=\"https:\/\/gambaru.de\/blog\/wp-content\/uploads\/2012\/03\/120324_iftop_getstatus_drdos1-1.png\"><img decoding=\"async\" loading=\"lazy\" class=\"aligncenter wp-image-6638 size-medium\" title=\"120324_iftop_getstatus_drdos\" src=\"https:\/\/gambaru.de\/blog\/wp-content\/uploads\/2012\/03\/120324_iftop_getstatus_drdos1-1-300x166.png\" alt=\"\" width=\"300\" height=\"166\" srcset=\"https:\/\/gambaru.de\/blog\/wp-content\/uploads\/2012\/03\/120324_iftop_getstatus_drdos1-1-300x166.png 300w, https:\/\/gambaru.de\/blog\/wp-content\/uploads\/2012\/03\/120324_iftop_getstatus_drdos1-1-768x424.png 768w, https:\/\/gambaru.de\/blog\/wp-content\/uploads\/2012\/03\/120324_iftop_getstatus_drdos1-1.png 960w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/><\/a><br \/>\nInteressanterweise zeigte sich hier, dass von Port 27960 viel Netzwerkverkehr in Richtung mehrerer Webserver ging, die allesamt keine wirkliche Beziehung zu meinem OpenArena-Server hatten, der auf Port 27960 lauschte. Mit Hilfe von <a href=\"http:\/\/www.tcpdump.org\/\">tcpdump<\/a> konnte ich herausfinden, dass eine Unmenge von getstatus-Kommandos an den OpenArena-Server gesendet wurden, der daraufhin anstandslos Servervariablen und die Anzahl der Spieler an den Webserver \u00fcbermittelte, womit dieser nat\u00fcrlich gar nichts anfangen konnte. Eine gute <a href=\"http:\/\/wiki.ubuntuusers.de\/tcpdump\">Einf\u00fchrung zu tcpdump<\/a> gibt es im Wiki von ubuntuusers.de.<br \/>\n<code>tcpdump -i eth0 udp and port 27960 -w traffic.log<\/code><br \/>\nMit diesem Befehl lassen sich s\u00e4mtliche UDP-Pakete, die von und zu Port 27960 geschickt werden \"mitschneiden\". Ein grafisches Netzwerkanalyse-Werkzeug wie <a href=\"http:\/\/www.wireshark.org\/\">Wireshark<\/a>, kann sp\u00e4ter bei der Analyse der Daten helfen.<\/p>\n<p><a href=\"https:\/\/gambaru.de\/blog\/wp-content\/uploads\/2012\/03\/20120326_wireshark1-1.jpg\"><img decoding=\"async\" loading=\"lazy\" class=\"aligncenter wp-image-6639 size-medium\" title=\"20120326_wireshark\" src=\"https:\/\/gambaru.de\/blog\/wp-content\/uploads\/2012\/03\/20120326_wireshark1-1-300x250.jpg\" alt=\"\" width=\"300\" height=\"250\" srcset=\"https:\/\/gambaru.de\/blog\/wp-content\/uploads\/2012\/03\/20120326_wireshark1-1-300x250.jpg 300w, https:\/\/gambaru.de\/blog\/wp-content\/uploads\/2012\/03\/20120326_wireshark1-1-768x640.jpg 768w, https:\/\/gambaru.de\/blog\/wp-content\/uploads\/2012\/03\/20120326_wireshark1-1.jpg 951w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/><\/a><br \/>\nWie diese Variablen f\u00fcr meinen Server aussehen, l\u00e4sst sich z.B. auf der Statusseite von <a href=\"http:\/\/dpmaster.deathmask.net\/?game=openarena&amp;server=134.0.24.218:27960\">dpmaster.deathmask.net<\/a> nachschauen.<\/p>\n<h2>Nachforschungen<\/h2>\n<p>Nach kurzer Recherche im Internet fand ich schon mehrere Beitr\u00e4ge, die \u00e4hnliche Probleme beklagten. So zum Beispiel im <a href=\"http:\/\/openarena.ws\/board\/index.php?topic=4391.0\">OpenArena-Forum<\/a>, bei <a href=\"http:\/\/www.ioquake.org\/forums\/viewtopic.php?f=12&amp;t=1694\">ioquake.org<\/a> und im <a href=\"http:\/\/www.urbanterror.info\/forums\/topic\/27825-drdos\/\">Forum von UrbanTerror<\/a>. Allen war gemein, dass es sich hier immer um auf Quake3 basierende Spiele handelte.<br \/>\nHier fiel dann auch das Stichwort: <a href=\"http:\/\/de.wikipedia.org\/wiki\/Denial_of_Service\">DRDoS-Attacke<\/a>, was f\u00fcr Distributed-Reflected-Denial-of-Service-Attacke steht. Dabei wurde meinem OpenArena-Server eine falsche Absenderadresse mitgeteilt (<a href=\"http:\/\/de.wikipedia.org\/wiki\/IP-Spoofing\">IP-Spoofing<\/a>), so dass dieser die normalerweise harmlose getstatus-Abfrage an einen Webserver leitete. Durch die hohe Anzahl von Anfragen und die relativ gro\u00dfen Pakete, die verschickt wurden, entstand ein Verst\u00e4rkungseffekt, der noch gr\u00f6\u00dfer ausgefallen w\u00e4re, wenn ich mehrere verwundbare OpenArena-Server installiert gehabt h\u00e4tte.<br \/>\nDie T\u00e4uschung beschr\u00e4nkte sich aber nicht nur auf einen Webserver, sondern gleich auf mehrere, was den Traffic nat\u00fcrlich in die H\u00f6he schnellen lie\u00df. Ich schrieb daraufhin einen Fehlerbericht f\u00fcr Debian mit der Nummer <a href=\"http:\/\/bugs.debian.org\/cgi-bin\/bugreport.cgi?bug=665656\">#665656<\/a>. Innerhalb k\u00fcrzester Zeit konnte der Paketbetreuer f\u00fcr OpenArena einen Patch einspielen, der die getstatus-Anfragen an den Server begrenzt. Eine <a href=\"http:\/\/lists.debian.org\/debian-security-announce\/2012\/msg00070.html\">Sicherheitsank\u00fcndigung<\/a> gab es hierzu auch schon.<\/p>\n<h2>Fazit<\/h2>\n<p>Ich war ehrlich gesagt \u00fcberrascht, dass ich derjenige war, der diesen Fehler schlie\u00dflich an Debian gemeldet hat, obwohl es den Anschein hatte, dass einige vor mir Betroffene auch Debian benutzen. Der Paketbetreuer reagierte sehr schnell und ich denke durch den Fehlerbericht und die Sicherheitsank\u00fcndigung ist das Problem prominent sichtbar gemacht worden. Der Bug betraf nicht nur OpenArena, sondern praktisch alle Spiele, die eine ungepatchte Quake3-Engine benutzen, so z.B. <a href=\"http:\/\/bugs.debian.org\/cgi-bin\/bugreport.cgi?bug=665842\">auch Tremulous<\/a>.<br \/>\nIch hatte vor kurzem <a href=\"https:\/\/www.gambaru.de\/blog\/2012\/03\/20\/debian-server-mit-der-unkomplizierten-firewall-ufw-absichern\/\">notwendige Firewallregeln<\/a> f\u00fcr den Spieleserver vorgestellt, die auch in dieser Form berechtigt sind. Um den Server aber gegen solche DRDoS-Angriffe abzusichern, braucht man auch hinreichende Regeln, die am besten automatisch und dynamisch hinzugef\u00fcgt werden. Trafficbegrenzung per IP f\u00e4llt mir hier als Stichwort neben <a href=\"http:\/\/fwlogwatch.inside-security.de\/\">fwlogwatch<\/a> ein, dass ich schon einsetze.<br \/>\nInsgesamt gibt es gerade zur Netzwerkprotokollierung und -\u00fcberwachung noch eine Menge zu lernen. Das Ganze soll nicht dar\u00fcber hinwegt\u00e4uschen, dass bisher alles andere wunderbar funktioniert hat und das Projekt wirklich Spass macht. Auf der anderen Seite ist man aber auch daf\u00fcr verantwortlich, dass der Server nicht Amok l\u00e4uft und f\u00fcr finstere Zwecke missbraucht wird. Denial-of-Service-Attacken fallen in Deutschland unter <a href=\"http:\/\/de.wikipedia.org\/wiki\/Computersabotage\">Computersabotage<\/a> und k\u00f6nnen mit bis zu drei Jahren Freiheitsstrafe geahndet werden. Ich hoffe der Richter l\u00e4sst in diesem Fall Milde walten. \ud83d\ude09<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Behauptete ich an irgendeiner Stelle, dass das mit dem Spieleserver ein kleines Projekt werden solle, dem nicht viel Zeit gewidmet w\u00fcrde? Ich muss im Delirium gewesen sein. Zugegebenerweise es geschieht nicht jeden Tag, dass ich pl\u00f6tzlich entdecke, dass mein OpenArena-Server als Verst\u00e4rker und Waffe in einer DoS-Attacke auf Webserver und andere unbescholtene Dienste im Internet &hellip; <\/p>\n<p class=\"link-more\"><a href=\"https:\/\/gambaru.de\/blog\/2012\/03\/27\/opfer-und-tater-zugleich-wenn-der-spieleserver-fuer-eine-dos-attacke-missbraucht-wird\/\" class=\"more-link\"><span class=\"screen-reader-text\">\u201eOpfer und T\u00e4ter zugleich: Wenn der Spieleserver f\u00fcr eine DoS-Attacke missbraucht wird\u201c<\/span> weiterlesen<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[6],"tags":[53,108,144],"_links":{"self":[{"href":"https:\/\/gambaru.de\/blog\/wp-json\/wp\/v2\/posts\/6636"}],"collection":[{"href":"https:\/\/gambaru.de\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/gambaru.de\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/gambaru.de\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/gambaru.de\/blog\/wp-json\/wp\/v2\/comments?post=6636"}],"version-history":[{"count":1,"href":"https:\/\/gambaru.de\/blog\/wp-json\/wp\/v2\/posts\/6636\/revisions"}],"predecessor-version":[{"id":10846,"href":"https:\/\/gambaru.de\/blog\/wp-json\/wp\/v2\/posts\/6636\/revisions\/10846"}],"wp:attachment":[{"href":"https:\/\/gambaru.de\/blog\/wp-json\/wp\/v2\/media?parent=6636"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/gambaru.de\/blog\/wp-json\/wp\/v2\/categories?post=6636"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/gambaru.de\/blog\/wp-json\/wp\/v2\/tags?post=6636"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}