Anonymisierung von IP-Adressen in Apache Logfiles

crotchmaster

happy BSD user
Hallo Forenleser,

ich hoffe, mein Post ist im richtigen Forum gelandet. :rolleyes:

Datenschutz ist ja im Moment in aller Munde. Wir betreiben einige Apache-Webserver unter FreeBSD. 'Natürlich' wird dort die Client IP-Adresse mitgeloggt und nach dem aktuellen Trend der Rechtsprechung ist die IP-Adresse ein personenbezogenes Datum. Da uns der Datenschutz aber auch am Herzen liegt, wollen und müssen wir uns auch daran halten.

Nun zu meiner Frage.

Wie löst Ihr das Problem mit der anonymisierten Speicherung der IP-Adresse und dem berechtigten Interesse des Kunden, eine Auswertung der Zugriffe auf seine Seite zuerhalten, die nicht total an der Realität vorbeigeht?

Wir setzen z.Zt. zwei Auswertungstools ein. Einmal den Webalizer, bei dem nachts eine Logfilerotation erfolgt, bei der IP-Adressen zuerst rückwärts aufgelöst werden und der Hostname u.o. die Subdomains durch einen Zufallswert ersetzt werden. Der Zufallswert und der reale Hostname werden während der Laufzeit des Scripts in einem Hash gespeichert. Bei IP-Adressen, die nicht rückwärts aufgelöst werden können, wird das letzte Byte der IP-Adresse auf 0 gesetzt. Die Fehler halten sich dabei in Grenzen.
Zum Anderen setzen wir AWstats ein und immer mehr Kunden möchten es gerne nutzen. Dort wäre es im Prinzip ähnlich möglich, aber etwas schwieriger umzusetzen, da AWstats mehr selbst erledigt, als der Webalizer, der ja das ihm vorgeworfene Logfile einfach nur durchhühnert. Aber das muss doch auch eleganter gehen.

Meine Suche ergab z.B. Patches für den Indianer, mit denen dieser die IP-Adresse schon gekürzt speichert. Andere Lösungen schreiben die Einträge nicht direkt ins Logfile, sondern schleusen sie durch ein Perl-Script durch. Das mag für eine kleine HP praktikabel sein, nicht aber für eine stark beanspruchte Maschine und davon haben wir einige. Wieder andere setzen eine gepatchte Version des syslog-ng ein, der die IP-Adressen anonymisiert speichert, der Apache logt dabei an den syslog-ng. Die einfachste 'Lösung' ist das Setzen der IP-Adresse auf einen festen Wert in der CustomLog-Direktive. Aber dann kann ich die Auswertung auch gleich sein lassen und stattdessen /dev/null als LogFile angeben.
Die Patches für den Apachen und den syslog-ng befinden sich nicht in der Ports, was Handarbeit bedeutet. :mad: Das Perl-Script wäre noch am einfachsten.

Mich würden Eure Lösungen interessieren, wenn Ihr welche habt.
Oder allgemeine Anregungen dazu.

Ich will keine Diskussion zu Sinn und Unsinn über die Anonymisierung lostreten und führen.

Danke für Lesen und Gruß

c.
 
Je nachdem, was man genau will kann man zum Beispiel eine Kombination von Hashes) und der Löschung des letzten Oktetts nutzen. So viele Alternativen gibt es da scheinbar wirklich nicht.

Es gibt aber ein großes Framework dazu, dessen Name mir nicht einfällt. Ich poste es hier, sobald ich es finde.

Das mit dem "einfach sein lassen" stimmt nicht unbedingt. Du willst ja oft nur wissen, wie wann und wo sich ein Problem befindet. Wenn du nur das letzte Oktett löscht, dann kannst du relativ sicher sein dass es von der selben Stelle kommt ohne die genau Stelle zu kennen. Wenn du mit Hashes arbeitest wäre es zumindest sehr rechenintensiv dahinter zu kommen. Mit der Kombination von Beiden ist der User so gut wie sicher und deine Arbeit hat sich nicht unbedingt erschwert.

Was die Performance angeht: Verwende eine schnelle Hash und eine gute Implementation für das Ganze. Allerings weiß ich nicht, wie es tatsächlich bei euch aussieht, also halte ich da lieber mal die Klappe ;)

Ich weiß, es kann mühsam sein und so wie ich das sehe muss man einfach einen Kompromiss machen. In deinem Falll wäre es vielleicht auch gut mal in Erfahrung zu bringen, wie viel eure Kunden eigentlich so Informationen wollen. Dann ist es vielleicht etwas einfacher ein passendes Setup zu finden. Tut mir leid, eine bessere Antwort habe ich auch nicht.

Gab es zu dem Thema nicht mal einen Vortag beim CCC?

So leid es mir tut, das ist schon alles, was ich dazu weiß.
 
Zurück
Oben