Heute möchte ich die erste Version des hoodog veröffentlichen, die mich dieses Jahr vor einigen kleineren Flooding Angriffen schützte.
Grundsätzlich sind solche Mechanismen sicherlich hilfreich um kleinere Flooder abzuhalten, gegen größere Botnetze insbesondere wenn man nur einen kleinen VServer zur Verfügung hat, sind auch solche Schutzmechanismen hilflos.
Bevor der hoodog zum Einsatz kommt, möchte ich noch auf ein paar Worte zur Serverkonfiguration verlieren.
Im Netz an Informationen zu gelangen, wie man einen Webserver richtig einrichtet, ist leider gar nicht so einfach.
Es gibt zahlreiche Beiträge mit Leuten die gefährliches Halbwissen als Fakten verkaufen.
Da ich mir mein Wissen selbst zusammen googlen musste um in Tests „on the wild“ herauszufinden, was gut und nicht so gut ist, möchte ich hier nur die Dinge wiedergeben, bei denen ich mir sicher bin dass sie stimmen.
Der Webserver (bei meinen Tests ein Apache), stellt eine besondere Schwachstelle bei Floodingangriffen dar – besonders im Zusammenspiel mit PHP kann man die beiden Komponenten schnell zum Aufgeben bringen.
Grundsätzlich muss der Webserver den Hardware Gegebenheiten angepasst werden, sind die Resourcen zu großzügig vergeben, versagt der komplette Webserver den Dienst, bevor irgend welche Schutzmechanismen greifen (Danke an dieser Stelle an die Flooder, die mir beim Einrichten geholfen haben
).
Der Apache selbst bringt einige Möglichkeiten mit, sich gegen solche Floodingangriffe zu wehren, zum Bsp. das Modul mod_evasive … welches leider nicht besonders wirkungsvoll ist.
Besser ist es eine Lösung zu finden, bei denen der Webserver entlastet wird – iptables ist meiner Meinung nach eine recht gute Möglichkeit.
Eine schmale Lösung als bash / shellscript gibt es bereits online – DDOS Deflate, siehe DDOS Deflate.
Mein hoodog macht im Grunde nichts anderes als DDOS Deflate – zumindest in der V1 – in der aktuellen Version sind einige Features eingebaut, die auch „niederschwelliges flooden“ lokalisiert.
Ihr benötigt php-cli um den hoodog zu betreiben, unter einem Debian →
apt-get install php5-cli
PHP safe_mode (Webserver) und PHP safe_mode (php-cli) kann übrigens unabhängig von einander konfiguriert werden – bei der php-cli muss safe_mode deaktiviert sein.
Der hoodog wird per cronjob gestartet, sprich ihr müsst die /etc/crontab editieren.
Um den hoodog im Minutentakt auszuführen, folgenden Eintrag mittels root in die Datei einpflegen:
*/1 * * * * root php /root/hoodog.php
Der hoodog liegt natürlich im /root/ Verzeichnis mit dem entsprechendem Namen.
Meiner Meinung nach ist es sinnvoll Flooder für eine längere Zeit auszusperren – sprich ein Flooder wird jetzt per iptables geblockt und bleibt dann auch auf der Liste.
In den frühen Morgenstunden – auch per cronjob werden dann die iptables rules gelöscht und die neuen Regeln definiert, das entsprechende Updatescript → flushiptables.php
Der cronjob:
30 4 * * * root php /root/flushiptables.php
Nachdem die iptables rules gelöscht sind, werden noch 2 Shellscripte ausgeführt.
In das 1. legt Ihr eure Firewall Regeln (ich habe schon einige reingehauen, ihr müsst selbst testen in wieweit euer Server / Vserver die Regeln akzeptiert, bzw. entscheiden was ihr noch benötigt).
In das 2. könnt Ihr Server die auffällig waren dauerhaft sperren.
In der entsprechenden Liste sind schon einige Server eingepflegt, die durch flooding oder Einbruchversuche auf hoos Area gesperrt sind.
Anpassungen die ihr am Script treffen müsst:
$count =180; ← hier die Anzahl an max Anfragen (pro Minute) bevor geblockt wird.
Bei mail eure email Adresse eintragen, ihr bekommt dann eine email mit dem Hinweis, dass ein Flooder blockiert wurde.
$datei / — Pfad zum speichern der Logdatei – schützt diese unbedingt durch einen htacess – zwecks dem Datenschutz und so.
Die 1. Version des hoodog bietet noch eine Menge Möglichkeiten trotzdem durch Floodingattacken ärger zu machen.
Die neue Version soll hier effizienter arbeiten – befindet sich aber noch in Beta Status.
Den hoodog stelle ich hiermit als Open Source Projekt online, wer Lust hat diesen weiter zu entwickeln (wie ich gerade
) darf das gerne machen – die hoohead Credits bleiben im Source (ist Ehrensache, oder?).
Zum Thema Syn-flood und syn_cookies möchte ich euch noch folgenden Artikel von dotxed ans Herz legen: syn_cookies aktivieren.
Der Einsatz vom hoodog geschieht auf eigene Gefahr, insbesondere Proplay Nutzern würde ich dringend ans Herz legen keine iptables rules zu flushen, da euch sonst der Server abschmiert.
Noch ein paar Worte zum hoodog V2 – dieser arbeitet mit einer MySql Datenbank und beinhaltet neben der „normalen“ flooding Protection diverse Auswertungen um „unterschwelliges flooden“ zu lokalisieren (hierunter fallen auch Bruteforce Angriffe, die „langsam“ ausgeführt werden).
Auf der rechten Seite seht Ihr eine Grafik (unter hoodog:) die den aktuellen Status der Firewall anzeigt (je nach Angriff ändert sich die Farbe von grün (alles OK) – über Gelb nach Rot.
Zum kommenden Wochende wird die Textgrafik evtl. durch eine Zeichnung ersetzt, ich möchte aber nicht zu viel versprechen.
Dateien:
Werte hoos Area Blogleser,
Datenschutz ist ja immer ein heikles Thema, besonders in Deutschland.
Es ist auch nicht einfach den Bedürfnissen Aller gerecht zu werden, ich persönlich empfinde die Google Dienste als äußerst sinnvoll (auch wenn ich keine Google Analytics einsetze), gehe mit Tracking Diensten offen um.
Was Logfiles auf dem Server angeht, habe ich diese im Webserver komplett deaktiviert.
Wer mir einen Kommentar hinterlässt oder mir via Mailer eine Nachricht zukommen lässt, gibt automatisch seine IP Preis (wie unter Rechtliches festgehalten).
Auf hoos Area läuft seit einiger Zeit eine selbst entwickelte Flooding Protection, ich nenne sie hoodog.
Zwar ist so ein kleiner VServer resourcentechnisch nur schwer gegen echte DDOS Angriffe zu schützen, besonders wenn die Anzahl der Bots entsprechend groß ist, gegen kleinere Flooding-Attacken weiß sich mein “Hund” aber durchaus zu wehren.
2011 stand ich insgesamt 5 mal unter Beschuß, die Leser haben davon jedoch nicht viel mitbekommen *g.
Um meinen Bot effektiver und intelligenter agieren zu lassen, ist eine rein starre Auswertung (wie sie aktuell betrieben wird) nicht effektiv, sprich ich muss wieder IPs loggen.
Anstatt die Apache Logs zu benutzen um meinen Bot zu füttern, schreibe ich aktuell einen eigenen Logger, der außer der IP, die Anzahl der gesendeten Requests und die Anzahl der ermittelten Besuche nichts weiter speichert.
Die Einträge werden täglich gelöscht, sprich ich werde zu einer bestimmten Uhrzeit einfach ein TRUNCATE TABLE ausführen.
Wer irgend welche niederschwelligen Crawler auf hoos Area loslässt (Feedreader) und diese über einen Webserver steuert, läuft in Zukunft Gefahr per iptables einen Permanenten Bann zu kassieren.
Entsprechende Filterfunktionen für erwünschte Webcrawler (Google Bot, Yahoo Slurp etc.) sind eingebaut.
Falls Ihr dennoch automatisiert einen RSS auswerten wollt, nutzt bitte den Feedburner.
… und falls jetzt schon Einige darauf warten, dass ich die komplette Datenbank lösche, die Erweiterung für den hoodog wird natürlich in einer separaten Instanz ausgeführt
Veröffentlichen werde ich den hoodog, wenn ich mit Ihm 100% zufrieden bin
Das Nerds nicht nur faul zu Hause rumlungern, Chips und Pizza futtern und so immer fetter werden (wie ich oder fefe) beweist unimatrixzero.
Aus aktuellem Anlass (Padawans Geburtstag) möchte ich an dieser Stelle noch erwähnen, dass es überhaupt nicht schlimm ist 40 zu werden, der Unimatrix ist schon ein paar Jährchen über die 40 und immer noch verdammt cool
.
So habe ich mir also vor 3 Wochen das Ziel gesetzt ein wenig mehr Bewegung in mein Leben zu bringen, aber einfach Sport machen ist irgendwie auch doof, als Nerd braucht man Technik und Schnickschnack.
Ich schaute also mal, ob es für mein N900 / Maemo irgend so eine coole Jogging App gibt und wurde bei eCoach fündig.
eCoach arbeitet zuverlässig und die Genauigkeit der ermittelten GPS Daten ist teilweise beängstigend präzise.
In den letzten 2 Wochen war ich insgesamt 5 mal Laufen (wobei es mehr Walken war).
In eCoach ist eine Upload Funktion zu heiaheia.com integriert, sprich die gelaufene Strecke inklusive aller GPS Daten, euer Gewicht, Herzfrequenz, sexuelle Vorlieben und der Sauberkeitsstatus eurer Unterwäsche wird dann Direkt hochgeladen und der kompletten Welt zur Verfügung gestellt.
Die unter dem N900 (/home/user/MyDocs/eCoach/) angelegten .gpx Files kann man auch zu anderen Anbietern hochladen zum Beispiel zu endomondo.com.
Dort sind die Statistiken um einiges Umfangreicher als bei heiaheia.com – da kann heiaheia.com quasi heiaheia gehen.
Natürlich hat es mich brennend interessiert, was in diesen .gpx Files alles enthalten ist – ein Blick mit dem Hexeditor – es sind ganz normale XML Files.
Aus den reinen Zahlen in der XML sind aber noch keine Statistiken möglich, eine Umrechnung von Längen / Breitengrad zur Strecke bzw. zur aktuellen Geschwindigkeit ist erst durch einige Rechenoperationen möglich.
Ich setzte mich heute Abend mal hin und analysierte das Ganze und schrieb einen .gpx Viewer.
Leider gibt es im Zeitformat keine einheitliche Schreibweise, weshalb die .gpx Files aus dem Smartphone evtl. nicht direkt ausgewertet werden können.
Wer den PHP Code nicht selbst verändern kann, das ganze trotzdem mal testen möchte, muss seine Files eben über Endomondo hoch und anschließend wieder downloaden.
Hinter der aktuellen km/h Ausgabe habe ich noch einen Link (*) gesetzt, mit direkten Link auf maps.google -> hier wird die exakte Position in Form eines grünen Pfeiles ausgegeben.

Nachdem mein letztes Hackit so gut angekommen ist, hab ich mir überlegt mich an einen 2. Teil zu setzen.
Da mir beruflich ein wenig die Zeit fehlt und ich versprochen habe bis zu Jahresende einen 2. Teil zu veröffentlichen, habe ich mir überlegt einige Level die mir im Hirn herum spuken einzeln zu releasen.
Bei diesem Level gelten folgende Regeln:
Komplettlösungen posten: Nicht erlaubt
Austausch in fremden Foren / Hilfestellung zu diversen technischen “Gegebenheiten”: erlaubt
(vielleicht ja auf Free-Hack
)
Macht Ihr auch ab und zu diese Sudokus?
Das aktuelle Sudoku aus dem ZEITmagazin findet Ihr auch online
(gehe auf “Spielen Sie das aktuelle Sudoku aus dem ZEITmagazin”).
Wer ein wenig Hilfe braucht, habe mich mal hingesetzt und eine “Spickelfunktion” geschrieben – Nein eigentlich seht Ihr gleich die Komplettlösung *g.
-> ZEITmagazin Sudoku Lösung (gibt immer die Lösung zum aktuellen Wochen Sudoku aus)
Anm.: Wer wissen möchte wie mein PHP Script die Lösung ermittelt, schaut einfach mal in den Quellcode der Zeit-Seite
Ich muss gestehen, ab und zu nutze ich Facebook (weil man bestimmte Personen leider nur über diese Plattform erreichen kann).
Beim überfliegen der Statusmeldungen sah ich einen Post eines alten Schulfreundes:
Die verbotenen Sachen zu programmieren machen irgendwie am meisten Spaß, aber nur weil es um die Möglichkeiten als solches geht und nicht um irgend einen Vorteil aus einer bestimmten Sache zu ziehen.
Das bangen in den letzten Sekunden vor einem möglichem Zuschlag, ist meiner Meinung nach die Sache die Ebay noch halbwegs interessant macht (und vielleicht das Bangen doch nicht totalen Schrott ersteigert zu haben *g).
Ich habe mich dennoch dieses Wochenende einmal hingesetzt und einen Bietomat gecodet.
Was sollte der Bietomat können?
Auf einen bestimmten Artikel zu einer genau definierten Uhrzeit einen bestimmten Betrag bieten – in der Regel würde man 1 Sekunde vor Auktionsende sein Gebot abgeben, wenn man so ein Tool nutzen würde.
Die Endzeiten liefert Ebay ja von Haus aus, was man noch braucht das entsprechende Programm.
Am elegantesten wäre wohl ein Socketscript, zuerst überlegt ich mir, ob ich was in PHP curl schreiben soll, so als Übung zwischendurch – auf der anderen Seite soll das ganze alle Eventualitäten abdecken, die ein “normaler” Browser auch so mitbringt.
Da ich beruflich in VB.NET arbeiten muss und ich bisher noch kein webbrowser Control umgesetzt habe, war das die ideale Übung für Zwischendurch.
Ebay möchte solche Tools ja nicht und Ebay verklagt auch gerne mal kleine Coder, weshalb ich das Programm nicht veröffentliche (und natürlich auch selbst nicht benutzen werden) – aber ein Demovideo habe ich trotzdem gemacht, bevor der Source /dev/null verschwindet.
Gestern habe ich mir eine App geladen von maemo.org – easylist, weil die recht ordentlich aussah und weil ich so eine App gut gebrauchen kann.
Easylist ist so etwas wie eine digitale todo Liste, sprich man kann sich Themen in eine Liste eintragen und später wenn man sie erledigt hat abhaken bzw. löschen.
Ab und zu führt man kleinere Pentests im Auftrag durch und ab und zu findet man auch einen htaccess Passwort geschützten Bereich, den man mal eben schnell testen möchte.
Wenn die Aufgabenstellung einen Black-Box-Test verlangt, sollte man neben den üblichen serverspezifischen Tests auch mal eben auf Standardlogins oder schwache Passwörter testen.
Natürlich gibt es für viele solcher Aufgaben schon fertige Tools und natürlich kann man auch mit fertigen Programmen solche Aufgaben erledigen – um zu begreifen wie verschiedene Mechanismen arbeiten, schreibe ich mir meine Helferlein jedoch selber.
Ihr findet deshalb ab heute meinen htaccess Bruter in der Scriptbase, eine Anleitung wie man das PHP-Script nutzt gibt es nicht.
Über Verbesserungsvorschläge, gerne auch über meinen mailer bin ich immer dankbar
Als meist verbreitete Blogsoftware steht Wordpress immer wieder unter Beschuß, Spammer posten automatisiert Links zu Malware, oder versuchen Ihre eigene Seite zu pushen indem sie backlinks verbreiten.
Die neuste Masche: Blogs mit Links zu Suchmaschinen überschütten, vermutlich haben Konkurenzblogs mitbekommen, dass das überfluten anderer Seiten mit Links zu den Suchmaschinen eine PR Abwertung mitsichzieht.
Wordpress bietet hier ja schon recht gute Möglichkeiten in der Grundmodifikation, so kann man unter Einstellungen / Diskussionen eine Kommentarblacklist anlegen, damit gezielte Keywords direkt in den Spambereich geschickt werden – den Rest erledigt die Kommentarmoderation.
Wo bekommen die Kommetarspammer aber umfangreiche Listen zu Blogs, am besten noch wenn betreffende Blogs auch Besucherzahlen vorweisen können?
Die Möglichkeit sich über Google die entsprechenden Links für einen “Kommentarspammer” zu ziehen ist nicht besonders effektiv, da automatisierte Suchanfragen recht schnell erkannt und geblockt werden – zwar gibt es dafür auch Möglichkeiten die Sperren zu umgehen, das ganze ist aber zu aufwendig – besonders wenn man global gesehen agieren möchte.
Nachdem aktuell wieder einige Spammer unterwegs sind, setzte ich mich mal hin um nachzuschauen wie schnell man an eine geeignete Liste kommt.
Mein erster Gedanke – Bestenlisten.
Eigentlich ja eine tolle Sache, man kann sich in der Regel kostenlos eintragen, bekommt dafür einen Backlink geschenkt und oft sind Auswertungen mit dabei damit man einen groben Überblick bekommt, wo man mit sein Blog so steht.
Ein Eintrag in eine Bestenliste kommt aber im Grunde einem mailto: im Quellcode gleich (die Kontaktmailadresse wird hier im Klartext in die Seite eingebunden und wird in der Regel in kürzester Zeit von Spambots entdeckt) – so etwas sollte man als nur machen, wenn man gute Filterfunktionen hat auf die man sich verlassen kann.
Auf www.topblogs.de entdeckte ich über 13.000 Blogurls die man wunderbar für eine Spamattacke verwenden könnte und ich wollte natürlich testen wie lange man braucht einen entsprechenden Code zu schreiben, bzw. sich eine Komplettliste zu laden.
Ergebnis: 15 Minuten für die Quellcodeanalyse + Codeentwicklung, 2 Stunden für das crawlen der Seite (hatte im Hintergrund noch was laufen, so dass die Crawlingzeit vermutlich in 60 Minuten hätte erledigt sein können.
Den Code als solchen kann man als verantwortlicher Mensch natürlich so nicht online stellen, es wäre ja möglich dass ein anderer Blogbetreiber ein passendes Gegenstück zur Verfügung stellt (CMS Spammer) und Scriptkiddys dann mit den Hilfsmitteln das Netz tyrannisieren, ohne auch nur im entferntesten eine Ahnung zu haben was sie da eigentlich machen.
Ich vertrete aber auch die Meinung dass Wissen frei verfügbar sein sollte, für Jedermann – weshalb ich mich zu einer Mischform der Veröffentlichung entschließe.
Den Code als solchen habe ich in die Scriptbase eingebunden – es sind aber 2 Fehler enthalten.