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.