M 4.397 Protokollierung sicherheitsrelevanter Ereignisse von Web-Anwendungen

Verantwortlich für Initiierung: IT-Sicherheitsbeauftragter, Leiter IT

Verantwortlich für Umsetzung: Entwickler, Administrator

Sicherheitsrelevante Ereignisse ( z. B. Zugriffe auf Ressourcen, Authentisierungsversuche) müssen nachvollziehbar protokolliert werden, damit im Stör- oder Fehlerfall oder nach Angriffsversuchen die Protokolldaten zur Ursachenfindung herangezogen werden können.

Neben den Empfehlungen in den Maßnahmen M 5.9 Protokollierung am Server und M 2.110 Datenschutzaspekte bei der Protokollierung sollten zusätzlich die folgenden Punkte bei der Protokollierung sicherheitsrelevanter Ereignisse von Web-Anwendungen beachtet werden.

Zu protokollierende Ereignisse bei Web-Anwendungen

Zusätzlich zur Protokollierung auf den Server- und Hintergrundsystemen (z. B. Betriebssystem, Webserver, Datenbank) sollte auch die Webanwendung sicherheitsrelevante Ereignisse protokollieren. Mindestens folgende Ereignisse sollten auf Anwendungsebene erfasst werden:

Zu protokollierende Merkmale von Ereignissen

Um sicherheitsrelevante Vorgänge anhand von Protokolldaten nachvollziehen zu können, müssen grundlegende Merkmale der Ereignisse verfügbar sein. Daher sollten mindestens die folgenden Merkmale protokolliert werden:

Darüber hinaus kann es auch hilfreich sein, folgende Merkmale zu protokollieren:

Vertrauliche und sicherheitsrelevante Daten (z. B. SessionID, Zugangsdaten) sollten nicht protokolliert werden.

Geeignete Datenformate und Mechanismen

Die protokollierten Daten sollten in einem einheitlichen Format gespeichert werden, damit eine effiziente Auswertung möglich ist. Die Protokollierungskomponente der Webanwendung sollte aus diesem Grund ein Datenformat verwenden, das in bestehende Lösungen integriert werden kann. Wird beispielsweise eine zentrale Komponente für die Auswertung der Protokolldaten verwendet, so sollten Datenformate gewählt werden, die diese Komponente unterstützt.

Serverseitige Protokollierung durch eine zentrale Komponente

Die Protokollierung der Webanwendung ist ausschließlich serverseitig durchzuführen, da nur auf diese Weise die Protokolldaten zentral ausgewertet werden können. Die Protokolldaten sollten von einer einzigen, zentralen Protokollierungskomponente der Webanwendung und nicht von unterschiedlichen Protokollierungskomponenten erhoben werden.

Eine fehleranfällige Neuentwicklung der Protokollierungskomponente sollte vermieden werden. Stattdessen sollte auf die Funktionalität etablierter Frameworks zurückgegriffen werden, die in der Regel nach dem einen zentralisierten Protokollierungsansatz und die Protokollierung in verbreiteten Protokolldatenformaten unterstützen (siehe Abschnitt Geeignete Datenformate und Mechanismen).

Schutz vor unbefugtem Zugriff und der Manipulation von Protokolldaten

Da die Protokolldaten vertrauliche Informationen (z. B. über das Nutzerverhalten und den Aufbau bzw. die Konfiguration der Webanwendung) enthalten können, muss der Zugriff auf die Protokolldaten reglementiert und nur befugten Benutzern ermöglicht werden. Der Zugriff auf Protokolldaten sollte nicht über öffentliche Schnittstellen der Webanwendung möglich sein. Die Protokolldaten sollten daher außerhalb des Web-Root-Verzeichnisses des Web-Servers gespeichert werden.

Werden die Protokolldaten in einer Datenbank abgelegt, so sollten die Protokolldaten von den eigentlichen Nutzdaten getrennt werden. Diese Trennung kann mittels einer separaten Datenbanktabelle erreicht werden. Darüber hinaus kann ein eigener Datenbankbenutzer für die Protokollierung den Schutz der Protokolldaten erhöhen. In diesem Fall darf der Datenbankbenutzer für die Nutzdaten keine Zugriffsrechte auf die Protokolldaten haben.

Alternativ können die Protokollierungsdaten bei Web-Anwendungen mit hohem Schutzbedarf auch in einer separaten Datenbankinstanz gespeichert werden.

Sichere Protokollauswertung

Ein Angreifer kann bewusst Protokoll-Einträge provozieren (z. B. wenn Eingabefelder protokolliert werden), die schadhaften Programmcode beinhalten. Daher sollte bei der Auswertung der Protokolldaten sichergestellt werden, dass Schadcode in Protokoll-Einträgen vom Auswertungsprogramm nicht interpretiert wird (z. B. durch die Ansicht in einem Browser und der Interpretation von JavaScript-Code in den Protokolldaten).

Da bei der Protokollauswertung keine Änderungen an den Protokolldaten vorgenommen werden dürfen, sind die Protokolldaten ausschließlich in einem schreibgeschützten Modus zu analysieren.

Zeitsynchronisation

Die Protokolldaten verschiedener Komponenten einer Webanwendung (z. B. Applikationsserver, Webserver, Datenbankserver) müssen in der Regel korreliert werden, um komponentenübergreifende Vorgänge vollständig nachvollziehen zu können. Dazu sollte die Zeit auf den Systemen synchronisiert sein, um anhand der Uhrzeiten Vorgänge in den Protokollen konsistent nachverfolgen zu können. Hierzu sollte M 4.227 Einsatz eines lokalen NTP-Servers zur Zeitsynchronisation beachtet werden.

Prüffragen: