nginx Access-Logfiles anonymisieren

In einer Unterhaltung mit meinem Kollegen kamen wir auf das Thema der Logfile-Anonymisierung zu sprechen. Uns war beiden die Vorgehensweise für den Apache2 bekannt, wussten jedoch nicht wie die Logfiles des nginx zu anonymisieren sind.

Nach etwas Suche im Internet bin ich dazu auf einen interessanten Artikel bei stackoverflow.com gestoßen:

http://stackoverflow.com/questions/6477239/anonymize-ip-logging-in-nginx

In diesem Artikel werden die ersten 24 Bit der IPv4-Adresse (auch /24) und die ersten 32 Bit der IPv6-Adresse ( auch /32) gespeichert. Dies möchte ich allerdings etwas verändern und nur ein /16 der IPv4-Adresse sehen. Das /32 der IPv6-Adresse reicht hingegen aus.
Also musste ich die Konfiguration an meine Wünsche anpassen. Hier der Ausschnitt aus meiner Datei ( /etc/nginx/conf.d/anonymized.conf )

map $remote_addr $ip_anonym1 {
default 0.0.0;
"~(?P<ip>(\d+)\.(\d+))\.(\d+)\.\d+" $ip;
"~(?P<ip>[^:]+:[^:]+):" $ip;
}

map $remote_addr $ip_anonym2 {
default .0.0;
"~(?P<ip>(\d+)\.(\d+)\.(\d+))\.\d+" .0.0;
"~(?P<ip>[^:]+:[^:]+):" ::;
}

map $ip_anonym1$ip_anonym2 $ip_anonymized {
default 0.0.0.0;
"~(?P<ip>.*)" $ip;
}

log_format anonymized '$ip_anonymized - $remote_user [$time_local] '
'"$request" $status $body_bytes_sent '
'"$http_referer" "$http_user_agent"';

Damit lege ich den Grundstein, um das Loglevel ( nur für die access-logs! ) in den Einstellungen der vServer anzupassen. Es muss lediglich das Schlüsselwort „anonymized“ angegeben werden.

server {
......
access_log  /var/log/nginx/access.log anonymized;
......
}

Nachdem der Server nun einmal reloaded wurde, ist der Unterschied innerhalb der Logfiles sofort zu erkennen.

78.94.0.0 - - [24/Jan/2017:19:51:48 +0100] ....
2a02:908:: - - [24/Jan/2017:19:51:57 +0100] ....

Bei einem abschließenden „whois“ auf die Adressen kann ich nun nur noch erkennen, dass es sich um einen Unitymedia-Anschluss handelt. Eine genaue Benutzerzuordnung ist nun nicht mehr möglich.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.