Logfile Anonymisierungstool Anonip
Beschreibung
Anonip ist ein Tool zur Anonymisierung von IP-Adressen in Logdateien.
Durch die Maskierung der letzten Bits von IPv4- und IPv6-Adressen bleiben die wichtigen Informationen bestmöglich erhalten, die IP-Adressen sind jedoch nicht mehr einem Anschluss zuzuordnen.
Je nach eingesetzter Webserver-Software werden die Logdaten direkt an Anonip übergeben. Somit werden die unmaskierten IP-Adressen zu keinem Zeitpunkt gespeichert.
Mit Hilfe von Shell-Redirects können auch existierende Logdateien anonymisiert werden.
Funktionen
- Maskiert IP-Adressen in Logdateien
- Einstellbare Anzahl maskierter Bits
- Die die IP-Adresse beinhaltende Spalte kann frei angegeben werden
- Nutzbar sowohl für access.log- als auch für error.log-Dateien und andere
Offiziell unterstützte Python-Versionen
- 2.7
- 3.5
- 3.6
- 3.7
Abhängigkeiten
Bei der Benutzung von Python in der Version >=3.3 bestehen keine externe Abhängigkeiten.
Für Python <3.3:
Kontakt
Für Bug Reports und Feedback
Download
Aktuelle Version: anonip 1.0 (10.4.2019)
Installation über Python Pip Installs
pip install anonip
Optionen
usage: anonip.py [-h] [-4 INTEGER] [-6 INTEGER] [-i INTEGER] [-o FILE]
[-c INTEGER [INTEGER ...]] [-l STRING] [-r STRING] [-p] [-d]
[-v]
Anonip is a tool to anonymize IP-addresses in log files.
optional arguments:
-h, --help show this help message and exit
-4 INTEGER, --ipv4mask INTEGER
truncate the last n bits (default: 12)
-6 INTEGER, --ipv6mask INTEGER
truncate the last n bits (default: 84)
-i INTEGER, --increment INTEGER
increment the IP address by n (default: 0)
-o FILE, --output FILE
file to write to
-c INTEGER [INTEGER ...], --column INTEGER [INTEGER ...]
assume IP address is in column n (1-based indexed;
default: 1)
-l STRING, --delimiter STRING
log delimiter (default: " ")
-r STRING, --replace STRING
replacement string in case address parsing fails
Example: 0.0.0.0)
-p, --skip-private do not mask addresses in private ranges. See IANA
Special-Purpose Address Registry.
-d, --debug print debug messages
-v, --version show program's version number and exit
Nutzung
/pfad/zu/anonip.py [OPTIONEN] < /pfad/zu/orig_log --output /pfad/zu/log
Oder durch die Verwendung von Shell-Redirects (die Ausgabe muss hinzufügend sein):
/pfad/zu/anonip.py [OPTIONS] < /pfad/zu/orig_log >> /pfad/zu/log
Mit Apache
In der Apache-Konfiguration, bzw. in jener des vhost, muss die Logausgabe an anonip gepipt werden:
CustomLog "|/pfad/zu/anonip.py [OPTIONEN] --output /pfad/zu/log" combined ErrorLog "|/pfad/zu/anonip.py [OPTIONEN] --output /pfad/zu/error_log"
That’s it! IP-Adressen werden von Apache nun maskiert geloggt.
Mit nginx
nginx unterstützt das Erzeugen von Prozessen, an die Daten übergeben werden können, nicht. Stattdessen müssen Named Pipes (dateibasiertes FIFO) erzeugt und die entsprechenden Prozesse manuell gestartet werden:
mkfifo /pfad/zu/log.fifo /pfad/zu/error_log.fifo /pfad/zu/anonip.py [OPTIONEN] --output /pfad/zu/log < /pfad/zu/log.fifo & /pfad/zu/anonip.py [OPTIONEN] --output /pfad/zu/error_log < /pfad/zu/error_log.fifo &
Als Python-Modul
Lesen von stdin:
from anonip import Anonip
anonip = Anonip()
for line in anonip.run():
print(line)
Zeilen manuell zuführen:
from anonip import Anonip
data = ['1.1.1.1', '2.2.2.2', '3.3.3.3']
anonip = Anonip()
for line in data:
print(anonip.process_line(line))
Python 2 or 3?
Aus Kompatibilitätsgründen nutzt anonip shebang #! /usr/bin/env python
. Dieses setzt standardmässig auf python2 auf allen Linux-Distribution mit Ausnahme von Arch Linux auf. Die Performance kann mit der Verwendung von python3 verbessert werden. Falls python3 verfügbar ist, kann Anonip folgendermassen aufgerufen werden:
python3 -m anonip [OPTIONS]
oder
python3 /path/to/anonip.py [OPTIONS]
Motivation
IP-Adressen sind in der Regel personenbezogene Daten, da sie sich auf einzelne Personen (oder mindestens deren Internet-Anschluss) beziehen lassen. IP-Adressen – und die mit ihnen verknüpften Daten – dürfen daher nur rechtmässig nach den Grundsätzen der geltenden Datenschutzgesetze bearbeitet werden.
Eine Speicherung von Logdateien von Webservern beispielsweise ist nur innerhalb enger zeitlicher Grenzen oder mit freiwilliger Einwilligung der betroffenen Personen erlaubt (solange die Information über die IP-Adresse auf eine Person beziehbar ist).
Anonip versucht genau hier Abhilfe zu schaffen, ohne jedoch auf den unumstrittenen Nutzen von Logdateien verzichten zu müssen.
Durch die Maskierung der letzten Bits der IP-Adressen, lassen sich die Log-Einträge (und damit Sessions) nach wie vor – bis zu einem bestimmten Grad – auseinanderhalten. Auch ein grobes Geolocating und eine DNS-Reverse-Auflösung sind noch immer möglich. Sie sind jedoch nicht mehr einem bestimmten Anschluss zuzuordnen.