Startseite Themen Datenschutzgerechte Konfiguration von Servern Erstellung anonymisierter Apache IPv6-Logfiles  
[Druckversion: HTML ]

Erstellung anonymisierter Apache IPv6-Logfiles

Stand: 14.11.2017

Beim Erstellen einer Protokolldatei durch einen Webserver können eine Vielzahl von Informationen gespeichert werden, die eine personenbezogene oder personenbeziehbare Auswertung zulassen.
ZENDAS hat ein Tool zur Anonymisierung von Apache-IPv6-Logdaten erstellt, das eine Anonymisierung der Protokolldaten ermöglicht. So kann eine personenbezogene Zugriffsstatistik bereits im Ansatz verhindert und dem datenschutzrechtlichen Gebot der Datenvermeidung und -minimierung Rechnung getragen werden. (Auch für den Einsatz von IPv4 hat ZENDAS ein entsprechendes Script Interner Link).

Der Anbieter eines Telemediendienstes hat durch technische und organisatorische Vorkehrungen sicherzustellen, dass die anfallenden personenbezogenen Daten über den Ablauf des Zugriffs oder der sonstigen Nutzung unmittelbar nach deren Beendigung gelöscht oder gesperrt werden können (§ 13 Abs. 4 Nr. 2 TMG).

Anonymisierung

Zugriff: Die ganze Welt

In dem unten beschriebenen Script wird die Anonymisierung auf Basis des ersten /32-Segments durchgeführt. Eine Anonymisierung auf Basis des ersten /48-Segments ist zwar möglich. Jedoch besteht hier die Möglichkeit, dass auf dieser Ebene die IP-Adresse auf einen Anschluss zurückgeführt werden kann.

Gerade im Hinblick auf die bislang (Stand 2012) sehr wenig genutzten IPv6-Adressen, wäre eine weniger starke Kürzung keine ausreichende Anonymisierung.

Real-Time-Anonymisierung von Apache-IPv6-Logdaten

Zugriff: Die ganze Welt

Das Script kann ausschließlich IPv6-Adressen anonymisieren und ist nicht für einen Dual-Use (IPv4/IPv6) ausgelegt. Bei dem gleichzeitigen Betrieb von IPv4 und IPv6-Adressen können aber beide Scripte parallel in unterschiedlichen Virtual-Host-Konfigurationen betrieben werden.

Bitte beachten Sie folgendes:
ZENDAS bemüht sich, die Richtigkeit und Funktionsfähigkeit der bereitgestellten Skripte zu gewährleisten. Wir können jedoch nicht dafür einstehen, dass die Skripte auch auf Ihren Systemen auf Anhieb ohne Probleme laufen oder Ihr Server nach Installation der Skripte zusätzlichen Konfigurationsaufwand erfordert und/oder zeitweise nicht einsetzbar ist. ZENDAS erklärt sich ausdrücklich für Schäden jeglicher Art, die Ihnen, Ihrem Computer oder jeglicher dritten Person oder Sache durch die Nutzung oder den Missbrauch dieser Skripte entstehen könnten, nicht verantwortlich. Sie nutzen diese Skripte ausdrücklich auf eigenes Risiko.
#!/usr/bin/perl
# aplog-anon6 -- Real-Time-Anonymisierung von Apache-IPv6-Logdaten
# Copyright (C) 2012 by ZENDAS, Universität Stuttgart.
#
# Version 1.1 (2012-06-14)
#
# Die Anonymisierung der Client-Adressen wird auf die ersten 32 Bits
# der IPv6-Adresse durchgeführt.
# Beispiel: Aus "1111:2222:3333:4444:5555:6666:7777:8888" wird "1111:2222::"
#
# Sollte die erwartete IP-Adresse im ersten Feld kein gültiges IPv6-Format haben,
# wird stattdessen die Link Local Unicast Adresse "fe80::" eingetragen.
#
# In der allgemeinen Apache-Konfiguration ist folgende Zeile einzufügen:
#
# LogFormat "%a - - %t \"%r\"%>s %b \"%{Referer}i\¨ combined
#
# In der Konfiguration für virtuelle Server wird das Logging wie folgt
# aktiviert:
#
# ErrorLog "|/path/to/aplog-anon6 /path/to/error_log"
# CustomLog "|/path/to/aplog-anon6 /path/to/access_log" combined
#
# Änderungen an den Skripten für die Log-Rotation sind üblicherweise
# nicht erforderlich.
#
# Vorsicht: aplog-anon6 schreibt typischerweise die Log-Datei mit
# root-Rechten.


use strict;
use warnings;
use Net::IP;
use Net::IP qw(:PROC);
use IO::Handle;

if (@ARGV != 1) {
    exit 1;
}

my $LOG;
open $LOG, ">>$ARGV[0]";

# Daten sofort in die Zieldatei schreiben, ohne Pufferung auf Perl-Seite.
$LOG->autoflush(1);

while (my $Line = <STDIN>) {
    chomp $Line;

    (my $ip,my $rest) = split('\s+',$Line,2);

    if (ip_is_ipv6($ip)) {
        $ip = new Net::IP ($ip);
        my @a= split(':', $ip->ip(),3);
        print $LOG "$a[0]:$a[1]:: $rest\n";
        }
    else {
        print $LOG "fe80:: $rest\n";
        }

}
######################################################################
Copyright 2018 by ZENDAS ..