Apache-Logs bei All-Inkl automatisch löschen

Im Zuge der DSGVO müssen die Logs, die der Apache anlegt, auch nach einiger Zeit gelöscht werden. Welcher Zeitraum hier zu wählen ist, ist soweit ich das gesehen habe auch nicht so ganz klar. Deshalb habe ich einfach die 7 Tage-Frist übernommen, die ich in einer Muster-Datenschutzerklärung vorgefunden habe. Der Zeitraum sollte denke ich kurz genug gewählt sein.

Über das Backend hat man folgende Möglichkeit die Log-Dateien löschen zu lassen:

 

Da mir das zu unflexibel ist, habe ich mir ein kleines Skript geschrieben, welches automatisch alle Ordner aller vorhandenen Domains durchgeht und die Dateien eliminiert, die älter sind als die definierte Anzahl der Tage. Das Skript sieht wie folgt aus:

Dieses Skript sucht mittels der glob-Funktion zuerst nach allen Ordnern bzw. Pfaden die „logs“ heißen/beinhalten. Danach sucht es innerhalb dieser Ordner nach beliebigen Dateien die älter sind als die anfangs definierte Anzahl der Tage und prüft dabei ob es sich wirklich um eine Datei handelt. In diesem Fall wird die Datei dann vom Server gelöscht.

Um alle Log-Ordner zu erwischen, muss man darauf achten bei der glob-Funktion oben und unten die Pfadtiefe, um die das Skript zurückgehen muss um vom Root-Ordner aus zu starten, richtig festzulegen. In meinem Fall muss das Skript immer um zwei Ordner zurücknavigieren ( ../../ ).

Zusätzlich gibt es noch ein bisschen Output, den man vielleicht zur Dokumentation der durchgeführten Löschung heranziehen kann. Die entsprechende Nachricht sieht dann etwa so aus:

../../devilatwork/logs/access_log_2018-05-01.gz wurde geloescht
../../devilatwork/logs/access_log_2018-05-02.gz wurde geloescht
../../devilatwork/logs/access_log_2018-05-03.gz wurde geloescht
../../devilatwork/logs/access_log_2018-05-04.gz wurde geloescht
../../devilatwork/logs/access_log_2018-05-05.gz wurde geloescht
../../devilatwork/logs/access_log_2018-05-06.gz wurde geloescht
../../devilatwork/logs/access_log_devilatwork_de_2018-05-01.gz wurde geloescht
../../devilatwork/logs/access_log_devilatwork_de_2018-05-02.gz wurde geloescht
../../devilatwork/logs/access_log_devilatwork_de_2018-05-03.gz wurde geloescht
../../devilatwork/logs/access_log_devilatwork_de_2018-05-04.gz wurde geloescht
../../devilatwork/logs/access_log_devilatwork_de_2018-05-05.gz wurde geloescht
../../devilatwork/logs/access_log_devilatwork_de_2018-05-06.gz wurde geloescht

Alle alten Log-Dateien wurden geloescht

Ich habe das Skript „logrotate.phpx“ genannt. Aufgrund der Tatsache, dass die logs-Ordner wohl direkt vom Apache oder vom Linux-System aus gesperrt sind, sind diese von einem einfachen PHP-Skript aus nicht zu öffnen. Das heißt, dass man auch wenn man das Skript nur mal so testen will, zwingend die Endung „.phpx“ benötigt, wodurch das Skript mit erweiterten Zugriffsrechten auf dem Server von All-Inkl ausgeführt wird.

Zur Sicherheit sollte das Skript nur in einem per .htaccess gesicherten Verzeichnis abgelegt sein. Die Zugangsdaten sind bei der Konfiguration des Cronjobs dann anzugeben, wie auch die Mail-Adresse an die der Ouput des Skripts geschickt werden soll:

 

Wie ich vorhin zum ersten mal gesehen habe, kann man die Apache-Logs auch anonymisieren, aber im Falle eines Hacking-Angriffs macht so ein Log des Webservers dann einfach mal so gar keinen Sinn mehr, weshalb ich diese nicht anonymisieren würde. Wer das ganze trotzdem nutzen möchte findet die Option hier im KAS:

Tobias Langner

Ich arbeite seit mehreren Jahren als IT-Administrator, bin ausgebildeter Fachinformatiker für Systemintegration und Studium-„Pausierer“ an der FernUni Hagen

Achtung: Für die Richtigkeit der zur Verfügung gestellten Informationen, Skripte, etc. übernehme ich keine Gewähr. Deren Nutzung geschieht ausdrücklich auf eigene Gefahr!

Schreibe einen Kommentar