Ein Service wie Fail2ban ist von einem Server nicht mehr wegzudenken. Der Service prüft die Logs auf auffällige Zugriffe, wie beispielsweise einen Brute-Force-Angriff, und sperrt die entsprechende IP Adresse aus. Dazu ist jedoch erforderlich, dass immer alle IP Adressen aufgezeichnet werden. Das ist datenschutztechnisch sehr bedenklich. Auf meinem Server habe ich darum eine Lösung implementiert, welche die IP Adressen normaler Zugriffe in den Logs unkenntlich macht.
Funktionsweise
Die IP Adressen landen zunächst wie gehabt in einem access.log
. Dieses wird mit logrotate
regelmässig archiviert. Viele Linux Distributionen liefern dieses Tool bereits mit den fertigen Konfigurationen für Webserver. Zusätzlich habe ich folgendes sed
Skript geschrieben:
#!/bin/sed -rf s/^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))/::1/g s/^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3} /127.0.0.1/g
Dieses kann man in der logrotate
Konfiguration zwischen einem postrotate
und endscript
Keyword ausführen lassen. Alternativ kann auch ein Cronjob verwendet werden.
Da Fail2ban nur das aktuelle Logfile benötigt, können die archivierten Logs problemlos anonymisiert werden. Damit stehen sie weiterhin zur allfälligen Analyse zur Verfügung. Die IPs von Angriffen werden von Fail2ban separat geloggt. Falls nötig kann mit dem Zeitstempel auch die IP in den Serverlogs rekonstruiert werden. Alle normalen Zugriffe werden spätestens nach einem logrotate
anonymisiert.
Warum anonymisieren?
Es gilt das Prinzip der Datensparsamkeit. Je nach Rechtsauffassung sind IP-Adressen personenbezogene Daten. Speichert man die Adressen gar nicht erst, muss man sich keine Sorgen machen.