[HOWTO] Apache Logs anonymisieren

ClemensBW

Registered User
Hallo, hier ein script, welches die letzten 3 Stellen von Apache logs Nullt.

Ein Danke geht an @HornOx


apacheloganonymisierer.sh
PHP:
#!/bin/bash
#
##
### ClemensBW (09.08.2006)
### unter der GPL lizensiert (http://www.gnu.org/licenses/gpl.txt)
##
#

######## README  ########
# Dieses Script anonymisiert Apache Logfiles
# Dazu muessen nur die Variablen ein bisschen angepasst werden, je ob Apache1 oder Apache2 Server
# es wird auch eine Backup Datei geschrieben, welche alle IpAdressen enthaelt, wenn dies nicht gewuenscht ist,
# einfach alles zwischen #backup start und #backup ende entfernen.
#
# Alle Anderungen werden in der "worklog" Datei vorgenommen und dann wieder in die access.log geschrieben.
#
# Wichtig: Je nach Groeße der Logs -koennte- es sein, dass ca. 2 bis 4 Sek keine Logeintraege geschrieben werden.
# Für Rückfragen: http://www.serversupportforum.de/forum/faqs-anleitungen/10174-howto-apache-logs-anonymisieren.html
##########################

######## INSTALL  ########
# Datei in /etc/ moven
# CHMOD auf 755 setzen: chmod 755 /etc/apacheloganonymisierer.sh
#
# ---> Der Ordner $apachelogdir/backups muss noch per hand angelegt werden <---
#
# Script als cronjob eintragen:
#
# Mit nano /etc/crontab, dann folgendes einfuegen:
# */60 * * * * root /etc/apacheloganonymisierer.sh
#
# Mit dieser Einstellung wird alle 60min. das Log anonymisiert.
#
# Zeiten nach Bedarf Anpassen!
##########################

apachelogdir=/var/log/apache/
#zb:/var/log/apache/
apachelog=/var/log/apache/access.log
#zb: /var/log/apache/access.log

worklog=$apachelogdir/worklog
#an dieser Datei werden die Änderungen vorgenommen

#Backup start:
####date ausgabe###########
# %d = tag    (31)
# %m = monat    (01)
# %y = jahr       (2006)
# %T = stunden     (23:59:59)
###########################
backupdir=$apachelogdir/backups
#backupdir wird hier festgelegt
bakdate=`date +%d.%m.%y-%T`
#mit Zeitangabe in Stunden:
#siehe oben

host=`hostname`
#interner rechnername

echo "Packe das tar Backup file - start"
# access.log  sichern, wenn kein Backup angelegt werden soll #backup start bis #backup ende entfernen
tar -cPvf $backupdir/$host"-"$bakdate.tar $apachelog
echo "Packe das tar Backup file -  - done"
#Backup ende

#kopiere access.log für die bearbeitung (diese wird in "worklog" ausgeführt
cp $apachelog $apachelogdir/worklog
perl -p -e 's/^(\d+)\.(\d+)\.(\d+)\.\d+ /\1.\2.\3.000/' $apachelogdir/worklog > $apachelog
# nulle die letzten 3 Stellen der IpAdresse
rm $apachelogdir/worklog
#lösche die Arbeitsdatei
echo "Ihre Apache Logfiles wurden anonymisiert"


ps: den einsatz solltet ihr je nach Rechtlichem Gedanken Überdenken
(geiler Satz, oder?)
 
Last edited by a moderator:
Man sollte noch erwähnen, daß man nach dem Script ein apache reload machen sollte.
Apache hält seine Logfile-Handler ständig offen. Ein manueller Eingriff im Logfile kann auch schon mal häßliche Folgen haben.

huschi.
 
Back
Top