Visualisierung von IP-Adressen aus Server-Logs

  • Hallo zusammen,

    ich möchte euch kurz ein kleines Projekt vorstellen, das ich entwickelt habe. Der Anlass dafür war, dass ich oft feststelle, dass jemand Skripte benutzt, um auf meinem Server Benutzer und Pfade brutal zu enumerieren. Aus Neugier wollte ich herausfinden, woher diese Anfragen kommen.

    Deshalb habe ich ein Tool geschrieben, das die Logs von Diensten wie `sshd` und `nginx` verarbeitet, die IP-Adressen extrahiert und deren Koordinaten sowie zugehörige ASN (Autonomous System Numbers) ermittelt. Um die Daten anschaulicher zu machen, habe ich sie auf einer virtuellen Erde visualisiert.

    screenshot.png

    Wenn man mit der Maus über diese Städtenamen fährt, wird eine kleine Box angezeigt, die detaillierte Informationen zu diesen Anfragen enthält.

    Hier sind die Links zum Projekt:

    Die Demo basiert auf den Logs der letzten 24 Stunden. Ich war überrascht, dass keine Skriptkiddies aus dem netcup-Netzwerk dabei waren – gut gemacht, netcup!

    Ich bin gespannt auf eure Vorschläge und Ideen. Zögert nicht, mir Fragen zu stellen. Gerne könnt ihr dem GitHub-Repository einen Stern geben.

  • Nur eine Sache: bei den nginx-Logs sollte man vielleicht die IPs wegen der DSVGO anonymisieren (z.B. aus "1.1.1.2" "1.1.x.x" machen).

    Guter Punkt! Vielen Dank, dass Sie mich daran erinnert haben. Ich habe den Code geändert, um ihre IP-Adressen zu maskieren und so Probleme mit der DSGVO zu vermeiden. Dennoch sehe ich diese Anfragen als bösartige Angriffe und es ist wichtig, die Netzwerksicherheit und Informationssicherheit zu gewährleisten und mögliche strafbare Handlungen oder Bedrohungen der öffentlichen Sicherheit anzuzeigen, um den berechtigten Interessen zu entsprechen. Ich bezweifle jedoch, ob dies notwendig ist. Aber ich bin nicht in der Position, darüber zu urteilen.


    Und es sieht (für mich) so aus, als ob man die data.json auch selber erstellen kann, muss man da irgendwas beachten?


    Ja. Sie können auch data.json selbst generieren und die Webseite nutzen. Es ist im GeoJSON-Format. Hier ist ein Beispiel:


    Ich hatte vor, mehrere Quellen und Ziele zu haben, aber ich habe aufgegeben. Wenn ich es in Zukunft für notwendig halte, werde ich von neuen Eigenschaften lesen.

  • Ich habe den Code geändert, um ihre IP-Adressen zu maskieren und so Probleme mit der DSGVO zu vermeiden.

    Du solltest die IP-Adressen überhaupt nicht veröffentlichen.

    IP-Adressen sind grundsätzlich personenbeziehbare Datzen und fallen in den Anwendungsbereich der DSGVO.

    Du brauchst also einen Grund, damit du sie überhaupt verarbeiten darfst. Datenschutzerklärung, Interessenabwägung, etc.

    Für die Veröffentlichung sehe ich da keinen belastbares Interesse auf deiner Seite. Auch nicht in gekürzter Form.

    Dennoch sehe ich diese Anfragen als bösartige Angriffe und es ist wichtig, die Netzwerksicherheit und Informationssicherheit zu gewährleisten ...

    Darauf könntest Du eine interne Verarbeitung und kurzfristige Speicherung (7 Tage) stützen.

    Als Grundlage für eine Veröffentlichung, mglw. noch über einen längeren Zeitraum ist das Argument untauglich.

    ... mögliche strafbare Handlungen oder Bedrohungen der öffentlichen Sicherheit anzuzeigen, um den berechtigten Interessen zu entsprechen.

    Das ist nicht deine Aufgabe und damit - für dich - kein valider Grund für eine Datenverarbeitung nach DSGVO.

  • Obwohl ich stimme zu, dass es nicht unbedingt notwendig ist, die Ergebnisse der Analyse zu veröffentlichen, möchte ich dennoch einige Punkte klarstellen.

    1. Ich habe ein berechtigtes Interesse daran, meine Server vor böswilligen Angriffen zu schützen. Das Aufzeichnen und Analysieren der IP-Adresspräfixe der Angreifer ist eine notwendige Maßnahme zur Verbesserung der Netzwerksicherheit und zur Verhinderung weiterer Angriffe.
    2. Gemäß dem Urteil des Europäischen Gerichtshofs im Breyer-Fall (Rechtssache C-582/14) werden IP-Adressen nicht als personenbezogene Daten angesehen, wenn der Datenverantwortliche (wie ich) nicht in der Lage ist, durch rechtmäßige Mittel auf die von den Internetdienstanbietern (ISP) gehaltenen Informationen zuzugreifen, um Einzelpersonen zu identifizieren. Das bedeutet:
      • In meinen Händen: Da ich nicht in der Lage bin, die IP-Adresse durch rechtmäßige Mittel mit einer bestimmten Person zu verknüpfen, wird die IP-Adresse in meinen Händen nicht als personenbezogene Daten angesehen.
      • In den Händen anderer: Andere Dritte, die rechtmäßig auf ISP-Daten zugreifen können, können aus dem Präfix keine vollständige IP-Adresse erhalten, daher werden diese auch nicht als personenbezogene Daten angesehen.
    3. Ich habe in dem Banner der SSH-Verbindung und auf der Homepage der HTTP-Verbindung klar darauf hingewiesen, dass das Verhalten der Benutzer aufgezeichnet und veröffentlicht werden kann.
    4. Die veröffentlichten Daten werden täglich aktualisiert und nicht länger als 7 Tage gespeichert.
    5. Ich respektiere und schütze die Rechte der betroffenen Personen und stelle die entsprechenden Kontaktinformationen zur Verfügung, damit die betroffenen Personen ihre Rechte auf Zugang, Berichtigung, Löschung und Einschränkung der Verarbeitung ausüben können.

    Ich verstehe nicht ganz, was Sie mit "Interessenabwägung" meinen...

  • simonmysun Deine Beiträge wirken irgendwie inkonsistent. Außerdem meinen diverse Detektoren, dass 40-60% Deiner Beitragsinhalte von einer KI stammen und nur stellenweise von einem Menschen mit Sätzen ausgeschmückt werden. (z.B. Anfang/Ende oder einzelne Teile in der Mitte.)

    Verwendest Du ChatGPT o.ä. für Deine Forenbeiträge? :/

    "Wer nur noch Enten sieht, hat die Kontrolle über seine Server verloren." (Netzentenfund)

    2 Mal editiert, zuletzt von KB19 (11. Juni 2024 um 20:15)

  • simonmysun Deine Beiträge wirken irgendwie inkonsistent. Außerdem meinen diverse Detektoren, dass 40-60% Deiner Beitragsinhalte von einer KI stammen und nur stellenweise von einem Menschen mit Sätzen ausgeschmückt werden. (z.B. Anfang/Ende oder einzelne Teile in der Mitte.)

    Verwendest Du ChatGPT o.ä. für Deine Forenbeiträge? :/

    You are right. I am not a German speaker. I used ChatGPT to translate what I write into German. But I don't think "nur stellenweise von einem Menschen mit Sätzen ausgeschmückt werden" is true. What specificly makes you think so? My original English text in the prompt has almost the same length and the 5 bullet points covers 5 different aspects.

    Aber dann sind die Daten doch schon gespeichert?

    Yes. Isn't this common security practices?

    Note that successful requests are not collected in the visualizaton.

  • Man, muss dir langweilig sein.

    Ich diskutiere nur nicht gerne mit Maschinen. ¯\_(ツ)_/¯

    Wenn das aber durch eine reine Übersetzungsfunktion zustande gekommen ist, ist wohl alles gut. :)

    "Wer nur noch Enten sieht, hat die Kontrolle über seine Server verloren." (Netzentenfund)

    2 Mal editiert, zuletzt von KB19 (12. Juni 2024 um 01:03)

  • Do you mean that only requests with status code other than 200 are logged?

    No. All requests are logged.

    The analysis goes through the logs and only cares about status code >= 400. The requests with 404 is a special case because some of them are because of my bad configuration (some services even rely on this), but they are relatively rare comparing to the bursters which make thousands request within minutes.

    I wonder if you mean I should've disabled logging. Is this a standard practice in EU?

  • Do you mean that only requests with status code other than 200 are logged?

    Um das etwas klarer zu stellen: simonmysun 's Software logged NICHTS, sie analysiert und bereitet die Ausgabe auf, die von den jeweiligen Diensten gelogged werden.

    Ich, für meinen Teil, werde auch das IP-address-covering wieder ausbauen, weil ich IP-Adressen der Scanner komplett sehen möchte.

    »Hauptsache BogoMIPS!«
    Volksfront DLT #64Ksplit
    Sag' NEIN zu Wordpress

  • Um das etwas klarer zu stellen: simonmysun 's Software logged NICHTS, sie analysiert und bereitet die Ausgabe auf, die von den jeweiligen Diensten gelogged werden.

    Ja, danke für den Hinweis, hab mich da irgendwie verlesen (ich bezog das auch nicht auf seine Software sondern auf seine Webseite).

    Ich, für meinen Teil, werde auch das IP-address-covering wieder ausbauen, weil ich IP-Adressen der Scanner komplett sehen möchte.

    Dann sollte man die Website aber nicht öffentlich verfügbar machen, für die private/interne Verwendung sollte das aber absolut unproblematisch sein.

  • No. All requests are logged.

    The analysis goes through the logs and only cares about status code >= 400. The requests with 404 is a special case because some of them are because of my bad configuration (some services even rely on this), but they are relatively rare comparing to the bursters which make thousands request within minutes.

    I wonder if you mean I should've disabled logging. Is this a standard practice in EU?

    Das Loggen von Angriffen ist meiner Meinung nach nicht nur erlaubt, sondern für den Betrieb von Netzwerkdiensten verpflichtend (Störerhaftung, Täterhaftung, Mittäterschaft hinsichtlich Strafvereitelung durch Loglöschung, Absicherung der eigenen Server, Beweissicherung um den Angreifer mittels Strafantrag rechtlich verfolgen zu lassen und Schadensersatzansprüche geltend zu machen...)

    Das man eine chinesische IP und deren Besitzer durch einen kleinen Staatsanwalt von Knuffingen nicht erfolgreich verfolgen können wird, ist von nachrangiger Bedeutung.

    Außerdem bin ich der Meinung dass Du die IPs auf der Webseite problemlos vollständig veröffentlichen darfst.

    Es gibt viele die ihr fail2ban u.ä. mit frei verfügbaren IP-Listen ergänzen.

    http://www.blocklist.de veröffentlicht seit mehr als 10 Jahren IP-Listen. Das wäre sicher nicht mehr der Fall, wenn es hier erfolgreiche Abmahnungen gegeben haben sollte.

    Bei Deiner Seite geht es im Vergleich dazu im Wesentlichen nur um die Darstellung. :)