kleine "wie ist meine IP" Seite

  • Kurz vorweg: Die Seite war eigentlich bloß für mich privat gedacht, um zu sehen ob mein VPN oder Handy Hotspot funktioniert. Da ich aber, dank zu viel Freizeit, das ganze etwas erweitert habe, ist es vielleicht auch für den einen oder anderen nützlich.


    Link: a24z.de


    Was macht die Seite?

    Im wesentlichen nichts anderes als andere "wie ist meine ip" Webseiten. Beim Aufruf der Webseite werden die (für mich) wichtigsten Nutzerdaten angezeigt.

    Also unter anderem die IP, der Hostname, User Agent und noch ein paar zusätzlich Abfragen wie ob die IP als VPN bekannt ist oder ob es sich um eine "mobile" IP handelt.

    Das was es etwas speziell macht ist, das die Daten gespeichert werden und per ID wieder aufrufbar sind. So ist es z.B. auch möglich für andere deine Daten zu sehen.

    Der eigentlich Sinn dahinter sollte sein, dass man so seiner Oma helfen kann, wenn diese wieder nicht weiß welche Android oder Windows Version sie nutzt.

    Ist aber vielleicht auch für Nutzer mit Kundenverkehr ganz nett, wenn diese wieder nicht wissen was sie für einen "PC" haben.


    Um das ganze auch möglichst einfach mit meinen Servern nutzen zu können und das ganze dabei noch übersichtlich darzustellen habe ich noch eine kleine json API gebastelt. Diese ist ebenfalls offen und kann (bisher) ohne Limitierung genutzt werden. Die Dokumentation dazu sieht zwar etwas "unordentlich" aus, war aber auch nur schnell geschrieben. Ich denke die API ist so einfach, sie erklärt sich von selbst.


    Wie lange werden die Daten gespeichert?

    Die Daten werden aktuell nach 31 Tagen aus der Datenbank gelöscht. Das sollte allen genug Zeit geben die Daten gesichtet zu haben.


    Warum schreibe ich das ganz hier?

    Ich bin immer dankbar für Ideen, Anregungen und Kritik. Außerdem ist der Server nicht wirklich ausgelastet und die API kann so gern genutzt werden, sollte jemand Bedarf an so etwas haben.
    Ich bin mir ziemlich sicher das es hier auch schon so etwas gab, ich konnte aber aber nicht wieder finden, daher nun meine eigene Seite.

    Und ein bisschen mit PHP und MySQL zu üben konnte auch nicht schaden. :D

  • Ein Forumsmitglied ( perryflynn ) betreibt ebenfalls einen solchen Dienst, dazu hat er auch einen schönen Blogbeitrag bezüglich der Absicherung verfasst, könnte sicherlich auch Interessant für dich sein:


    https://anysrc.net/post/gnu-linux/gehaertete-http-api-nginx

    Ja, die API war auch in etwa mein Vorbild, neben einigen anderen.

    Ist auch meine erste API die ich programmiert habe, da muss man sich etwas umsehen wie es andere machen.

    Das Problem ist, meine Seite läuft nicht mit nginx, sonder mit apache. Ich konnte mich in den letzten Jahren, trotz einiger Versuche nicht mit nginx anfreunden.


    Da ich aus einem komplett anderen Bereich komme (Maschinenbau) habe ich diesbezüglich auch keine Erfahrungen. Da wird der Beitrag ganz nützlich sein, danke dafür! ;)

    Kein IPv6, bitte unterstützen.

    Das Problem ist bloß das ich selbst (und die meisten hier in meiner Gegend) keine IPv6 haben. Daher ist dort die Priorität erst mal nicht so hoch. Aber sobald ich wieder Langeweile habe, kommt es sicher.

    Da muss ich bloß noch überlegen wie ich den Aufbau der Seite anpasse.

    Da ich von Website Design absolut keine Ahnung habe und da auch eher minder begabt bin, könnte es trotzdem eine Weile dauern.

    Aber danke für die Idee! :thumbup:

  • Ich habe keine Möglichkeit der Datenspeicherung über 31 Tage zu widersprechen.


    Klick mal auf die ID, und dann oben auf "Search your ID", da gibt es ein NULL zurück.

    Ich würde erst eine ID erzeugen, wenn der Nutzer auf "ID Erzeugen" klickt. Nicht jeder will sein Profil in der Datenbank sehen.

    Wenn sich die Seite herumspricht, hast du sonst ganz viel Spaß in der Datenbank. (mir sind nur wenige Datenbanken bekannt, die das durchhalten, und du hast mindestens eine 90/10 Schreiblast).


    Die Providerinfos scheinst du aus der RIPE Datenbank zu ziehen. Hier wäre ein Mapping auf die gängigen Namen günstig.


    Edit: wieso eigentlich Apache?

  • Wobei der Artikel mittlerweile veraltet ist.


    Die API ist seit längerer Zeit in .NET Core geschrieben und kommt komplett ohne Caching aus. Es wird nur noch Rate Limiting betrieben. Auch istd as HTML eine statische HTML Datei, PHP ist komplett raus geflogen.


    Du solltest übrigens vorsichtig sein, wenn Du sowas auf einem Shared Webspace mit MySQL betreibst und das aktiv bewirbst. Sobald ein Botnet Betreiber oder ein größerer Router Hersteller (beides war bei mir der Fall) Deinen dienst bemerkt und den nutzt begeht der Webspace vor schreck Selbstmord.


    Mein Shared Hoster bei dem die Ur-Ur-Ur Version damals lief hat mich dann freundlich darum gebeten den Dienst vom Server zu nehmen. Da bin ich dann auf nen richtigen Server, hab allen Schnickschnack entfernt und Caching / Rate Limiting eingebaut.


    Später reichte auch das nicht mehr und hab PHP komplett entsorgt und mache das Ganze mit .NET Core.


    Meine API verarbeitet aktuell zwischen 10 und 20 Millionen Requests pro Woche. Und das System idled dabei.


    Das wäre mit einem PHP/MySQL Backend eines Webspace überhaupt nicht machbar. :)


    //edit

    Statistische Auswertungen der Access Logs kosten übrigens so viele Ressourcen, dass ich dies nur sehr sporadisch mache und normalerweise die Logs komplett deaktiviert sind.

  • Das man der Datenspeicherung nicht widersprechen kann, ist ja eigentlich auch so gewollt. Wer das nicht möchte sollte dann lieber einen anderen Dienst nutzen.

    Ich habe keine Lust, meiner Oma dann noch ewig zu erklären was sie alles zu klicken hat. Aber prinzipiell stimmt es natürlich. Sollte der Dienst aktiver genutzt werden, wird es mir die Datenbank danken. :D

    Im zweifel wird die Dauer der Speicherung auch runter gesetzt.

    Das mit der NULL ist wirklich ein Fehler, woran das genau liegt werde ich mir mal ansehen. Ist am Ende aber auch nicht schlimm, eine NULL heißt nur das der Datensatz nicht gefunden werden kann bzw. nicht existiert.:thumbup:


    Apache setze ich seit etlichen Jahren ein und ich komme mit nginx irgendwie nicht klar. Ich müsste mich da wahrscheinlich intensiver mit beschäftigen, hatte bisher aber keine Lust dazu. Zumal man apache auch sehr gut auf tunen kann, ich habe da bisher selten unterscheide zu nginx gemerkt.


    Ich betreibe das ganze auf meinem Server. Da wird kein Nachbar in Mitleidenschaft gezogen. Aber der Punkt stimmt natürlich und sollte auch beachtet werden.

    Das ganze ist recht simpel aufgebaut in PHP. Habe auch nicht vor das zu ändern. Sollte es für ein Botnet etc. genutzt werden wird wahrscheinlich apache oder mysql aufgeben. Wäre für mich auch erstmal ok. Die Gegenmaßnahmen werden ich mir demnächst direkt mal ansehen. Danke für die Tipps. :thumbup:


    10 bis 20 Millionen Requests pro Woche schaffe ich so oder so nicht zum aktuellen Zeitpunkt. :D

    In der Größenordnung wollte ich mich auch nicht bewegen. Aber du hast natürlich Recht, man weiß ja nie.



    Danke erstmal an alle für den Input. Ich werden mich mit den bereits angesprochen Sachen auseinander setzen und versuchen das ganze, so weit es geht, zu realisieren und zu beachten. :)

  • Ich habe keine Lust, meiner Oma dann noch ewig zu erklären was sie alles zu klicken hat.

    Naja, Oma muss ja irgendwie auch auf die Seite kommen und dir das 32 Byte lange Teil zusenden. Und der ist jetzt nicht Kompakt genug, um ihn am Telefon zu diktieren. Oder kopiert sich Oma den in Whatsapp Web rein? Da schaded der zusätzliche Button nicht, insbesondere da ich nicht vorher über die Speicherung informiert werde. Deine Datenschutzerklärung ist da auch nicht hilfreich.


    Zumal man apache auch sehr gut auf tunen kann, ich habe da bisher selten unterscheide zu nginx gemerkt.

    Glaube mir, bei mehreren 10.000 Requests siehst du das im RAM und in der CPU Util ob da ein nginx oder Apache am Werk ist.

    Nginx spawnt weniger Prozesse und hat dadurch einen geringeren Memory Footprint.


    /proc/sys/kernel/pid_max und /proc/sys/fs/file-max (Filedeskriptor Limit) konkurieren auch irgendwo mit einander.

  • Naja, Oma muss ja irgendwie auch auf die Seite kommen und dir das 32 Byte lange Teil zusenden. Und der ist jetzt nicht Kompakt genug, um ihn am Telefon zu diktieren. Oder kopiert sich Oma den in Whatsapp Web rein? Da schaded der zusätzliche Button nicht, insbesondere da ich nicht vorher über die Speicherung informiert werde. Deine Datenschutzerklärung ist da auch nicht hilfreich.


    Glaube mir, bei mehreren 10.000 Requests siehst du das im RAM und in der CPU Util ob da ein nginx oder Apache am Werk ist.

    Nginx spawnt weniger Prozesse und hat dadurch einen geringeren Memory Footprint.


    /proc/sys/kernel/pid_max und /proc/sys/fs/file-max (Filedeskriptor Limit) konkurieren auch irgendwo mit einander.

    Ok, so gesehen stimmt es natürlich. Zur Zeit gibt es aber so wenig Aufrufe daß es reicht wenn sie mir am Telefon sagte sie war auf der Seite. Bei mehreren requests pro Minute/Sekunde wird es natürlich problematisch.

    Ich werde mir das mit den Button zur ID Erstellung vormerken.

    Aber wie gesagt, das Haupt Feature ist ja eben eigentlich das die Daten gespeichert werden und anhand der ID einem Besucher zugeordnet werden kann und das möglichst einfach. So ein Feature vermisse ich halt bisher bei allen Seiten die einen ähnlichen Datensatz verarbeiten wie meine.


    Ja die Datenschutzerklärung... Du wirst ja nie vor dem Besuch einer Seite über die Speicherung von Daten informiert.

    Ich muss ehrlich sagen, ich habe mich mit dem DSGVO Thema nicht wirklich auseinander gesetzt. Ich weiß nicht Mal wirklich ob ich mit einer privaten Seite überhaupt eine Datenschutzerklärung brauchen. Aber lieber man hat als man hätte.

    Sollte ich evtl. dann noch Mal überarbeiten.

    Im schlimmsten Fall muss ich die Seite in Ausland umziehen lassen. ?



    Das mit den 10000 requests kann natürlich sein, da habe ich keine Erfahrungen.

    Sollte es aber soweit kommen, wovon ich erstmal nicht ausgehe, wäre das natürlich ein guter Grund sich Mal näher mit nginx zu beschäftigen.

  • Dann wird es jetzt höchste Zeit!

    Inwiefern denn?

    Alles was ich zu dem Thema gelesen habe und mitbekommen habe, würde von mir umgesetzt.

    Sollte man da aber noch Fehler sein oder etwas fehlen, dann bin ich für Informationen diesbezüglich offen. :thumbup:

    Die Datenschutzverordnung ist eine Standard Vorlage, wie sie ja mittlerweile jede Webseite nutzt, sollte also soweit passen. Es wird ja darin darauf hingewiesen das personenbezogene Daten (IP) gespeichert werden, verarbeitet werden sie ja nur durch den jenigen der sie auch erzeugt.


    Wenn aber noch etwas fehlt, immer her mit den Infos. Wie gesagt, ich habe mich mit dem Thema nur durch eine kurze Recherche informiert. Einen Anwalt etc. habe ich nicht zurate gezogen, so sie es wahrscheinlich 99% der Webseiten Betreiber auch machen. ;)

  • Die Datenschutzverordnung ist eine Standard Vorlage, wie sie ja mittlerweile jede Webseite nutzt

    Die passt aber nicht, denn nicht jede Webseite speichert die IP + Metadaten "öffentlich zugänglich" für jedermann, sondern andere Websites halten die Log-Files unter Verschluss ;) Daher finde ich in deiner DSGVO keinen Hinweis darauf, dass du die Informationen wie IP/Browser verarbeitest, speicherst und öffentlich zugänglich machst was vermutlich darein gehört.


    verarbeitet werden sie ja nur durch den jenigen der sie auch erzeugt.

    Du speicherst die Daten doch in einer Datenbank, also verarbeitest du die Daten (auf deinem Server) und nicht der Nutzer. Ist ja nicht 100% Client-Side JS.


    Edit: Ich konnte auch nirgendwo eine Löschfrist finden, nach welcher die Daten gelöscht werden.

  • Edit: Ich konnte auch nirgendwo eine Löschfrist finden, nach welcher die Daten gelöscht werden

    Unten Rechts auf der Hauptseite



    Es wird ja darin darauf hingewiesen das personenbezogene Daten (IP) gespeichert werden, verarbeitet werden sie ja nur durch den jenigen der sie auch erzeugt.

    Üblich ist es diese für 7 Tage unter Verschluss aufzubewahren, und nicht öffentlich zugänglich für 31 Tage.

    Aufbewahrung und Verarbeitung sind ein himmelweiter Unterschied, und durch mich werden diese Daten bestimmt nicht erzeugt, oder woher weißt du, welchen Hostnamen die IP Adresse des Routers meines Providers hat? Oder ob ich Mobil unterwegs bin? Oder aus welchem Land die IP kommt?


    In deinen Logs darfst du das Zeug gerne zur Gefahrenabwehr 7 Tage lang speichern. Aber nicht ohne Vorwarnung zu dem dargestellten Zweck öffentlich.

    Das bedarf immer einer Begründung und einer gesetzlichen Vorlage, oder einer Zustimmung.

  • ich finde ja das (bzw mein) Hauptproblem ist, das bei Aufruf der Homepage direkt Daten gespeichert werden ohne zu fragen ob man das will. Wenn dies erst auf einer Unterseite oder mit "Knopfdruck" passieren würde (wenn man also überhaupt die Gelegenheit hat, zu erfahren das Daten gespeichert werden bevor sie gespeichert werden), dann würde die ganze Sache sicherlich auch schon anders aussehen

  • Die passt aber nicht, denn nicht jede Webseite speichert die IP + Metadaten "öffentlich zugänglich" für jedermann, sondern andere Websites halten die Log-Files unter Verschluss ;) Daher finde ich in deiner DSGVO keinen Hinweis darauf, dass du die Informationen wie IP/Browser verarbeitest, speicherst und öffentlich zugänglich machst was vermutlich darein gehört.


    Du speicherst die Daten doch in einer Datenbank, also verarbeitest du die Daten (auf deinem Server) und nicht der Nutzer. Ist ja nicht 100% Client-Side JS.


    Edit: Ich konnte auch nirgendwo eine Löschfrist finden, nach welcher die Daten gelöscht werden.

    Ok, danke für den Hinweis. Das ganze wird noch ergänzt bzw angepasst. :thumbup:

    Von öffentlich zugänglich kann man ja eigentlich nicht sprechen. Ohne entsprechende ID, sind die Daten nicht auffindbar. Darum auch der ganze Aufwand.


    OK, die Speicherung würde erstmal auf 7 Tage angepasst. Mit dem Erzeugen kann nicht nur teilweise nachvollziehen. Das deiner IP ein Land zugeordnet werden kann und ein Provider ist ja klar. Ich bereite aber die Daten natürlich auf, da hast du Recht.

    Ich scheiter bloß nach wie vor mit dem öffentlich zugänglich. :D

    Ist das, was ich da habe, schon öffentlich zugänglich? Es kann ja von niemanden ohne Zustimmung des jenigen, dem die Daten gehören, aufgerufen werden.

    Es würde mich sehr wundern, wenn es jemand schafft "zufällig" einen richtigen Datensatz zu finden, der einem nicht selbst gehört.


    ich finde ja das (bzw mein) Hauptproblem ist, das bei Aufruf der Homepage direkt Daten gespeichert werden ohne zu fragen ob man das will. Wenn dies erst auf einer Unterseite oder mit "Knopfdruck" passieren würde (wenn man also überhaupt die Gelegenheit hat, zu erfahren das Daten gespeichert werden bevor sie gespeichert werden), dann würde die ganze Sache sicherlich auch schon anders aussehen

    Da stimme ich dir natürlich zu. Die Frage die sich mir nur stellt, z.B. Mediamarkt verarbeitet und speichert meine Daten (IP und Cookies) auch ohne meine Zustimmung, einfach nur durch den Aufruf der Webseite. Ich werde lediglich per Pop-up darauf hingewiesen, das gerade ein Cookie gesetzt wurde.


    Das macht doch aber keinen Unterschied ob ich das jetzt mache und dir, deine eigenen Daten zugänglich mache, oder ob das Mediamarkt macht und mir halt die Daten, die gespeichert und gesammelt werden, nicht zugänglich macht.



    Aber ihr habt alle natürlich Recht. Ich werde demnächst einen Button einbauen, bzw einen Zusatz bei der API um die Speicherung zu aktivieren.

    Das macht das ganze zwar umständlicher, aber sicher ist sicher.

    Oder im Zweifel "zieht" die Webseite ins Ausland um, dann bin ich die Bürokratie los. :D

  • Da unterliegst du einem Irrtum.


    Cookies sind übrigens eine komplett andere Geschichte.

    Das war ironisch gemeint. ;)


    OK gut danke. Ich merke ich habe da noch Nachholbedarf. ||

    Da vergeht einem ja direkt die Lust an der Sache. Früher war das nicht so aufwendig, da bestand immer nur die Frage "Impressum, ja oder nein?". Der Datenschutzwahn nimmt langsam überhand in der EU... Und an vielen Stellen kann man dem ganzen trotzdem nicht wiedersprechen.



    Aber echt vielen Dank für die ganzen Informationen, Kritik und Verbesserungsvorschläge, an alle!

    Mit so viel Input hätte ich gar nicht gerechnet.



    Bis ich meinen Service DSGVO konform gestaltet habe, ist die Speicherung aller Daten erstmal deaktiviert, also falls das schon jemand genutzt hat, sorry.

    Die Webseite und API ist aber weiterhin online, nur der Datenabruf liefert jetzt immer NULL.

    Somit ist das erstmal passend der DSGVO.

    Jetzt ist es echt eine Standard "wie ist meine IP" Seite...

  • Kann ich nur zustimmen. Kann sonst teuer enden.

    Danke für die Information! :D


    Um welchen Abschnitt der Datenschutzerklärung geht es denn genau?

    Ich habe mich mit dem Thema genauer beschäftigt und es sollte alles drin stehen, was drin stehen muss.

    Es wird gesagt das die IP, sowie Zugriffsdaten und Gerätedaten gespeichert werden, stimmt ja auch.

    Diese Daten werden niemanden öffentlich zugänglich gemacht.


    Also aus dem Punkt sollte alles drin stehen was muss. Das ich jetzt ein Anwalt bin und mich dabei auf Vorlagen verlassen muss ist klar.

    Muss ja jeder hier.



    Als Ergänzung zum Funktionsumfang:

    Daten, egal welcher Form, werden jetzt nicht mehr sofort gespeichert. Erst nach einem klick auf "create ID and save data", werden die Daten in die Datenbank übernommen. Sollte so auch den Server entlasten, falls es wirklich mal zu mehr Zugriffen kommt.

    Das ganze wird in der API ähnlich umgesetzt werden, nur das dort eben ein weiterer Paramter "save" etc. angegeben werden muss.

    Das kommt aber noch. Zur Zeit ist es über die API nicht mehr möglich Daten zu speichern.


    An den anderen Vorschlägen sitze ich noch, diese kommen sobald wie möglich.