Einleitung
In diesem Dokument wird die Verwendung von regulären Ausdrücken (regex) mit dem Befehl grep zum Durchsuchen von Protokollen beschrieben.
Voraussetzungen
Die Informationen in diesem Dokument basierend auf folgenden Software- und Hardware-Versionen:
- Cisco Web Security Appliance (WSA)
- Cisco E-Mail Security Appliance (ESA)
- Cisco Security Management Appliance (SMA)
Grep mit Regex
Regex kann ein leistungsstarkes Tool sein, wenn es mit dem Befehl grep verwendet wird, um Protokolle zu durchsuchen, die auf der Appliance verfügbar sind, wie Zugriffsprotokolle, Proxy-Protokolle und andere. Mithilfe des Befehls grep CLI können Sie die Protokolle auf Basis der Website oder eines beliebigen Teils der URL sowie der Benutzernamen durchsuchen.
Hier sind einige gängige Szenarien, in denen Sie regex mit dem Befehl grep verwenden können, um bei der Fehlerbehebung zu helfen.
Szenario 1: Suchen nach einer bestimmten Website in den Zugriffsprotokollen
Das häufigste Szenario ist, wenn Sie versuchen, Anforderungen zu finden, die an eine Website in den Zugriffsprotokollen der WSA gestellt werden.
Hier ein Beispiel:
Stellen Sie über Secure Shell (SSH) eine Verbindung zur Appliance her. Nachdem Sie die Eingabeaufforderung erhalten haben, geben Sie den Befehl grep ein, um die verfügbaren Protokolle aufzulisten.
CLI> grep
Geben Sie die Nummer des Protokolls ein, das Sie erstellen möchten.
[]> 1 (Choose the # for access logs here)
Geben Sie den regulären Ausdruck für grep ein.
[]> website\.com
Szenario 2: Versuch, eine bestimmte Dateiendung oder Domäne oberster Ebene zu finden
Sie können den Befehl grep verwenden, um eine bestimmte Dateierweiterung (.doc, .pptx) in einer URL oder einer Domäne oberster Ebene (.com, .org) zu finden.
Hier ein Beispiel:
Um alle URLs zu finden, die mit .crl enden, verwenden Sie diesen regulären Ausdruck:
\.crl$
Um alle URLs zu finden, die die Dateierweiterung .pptx enthalten, verwenden Sie diesen Regex:
\.pptx
Szenario 3: Versuch, einen bestimmten Baustein für eine Website zu finden
Wenn Sie nach einer bestimmten Website suchen, können Sie auch nach einer bestimmten HTTP-Antwort suchen.
Hier ein Beispiel:
Wenn Sie nach allen TCP_DENIED/403-Nachrichten für domain.com suchen möchten, verwenden Sie diesen Regex:
tcp_denied/403.*domain\.com
Szenario 4: Suchen eines Systemnamens in den Zugriffsprotokollen
Wenn Sie das NTLMSSP-Authentifizierungsschema verwenden, kann es bei der Authentifizierung zu einer Instanz kommen, bei der ein Benutzer-Agent (Microsoft NCSI ist die gängigste Lösung) nicht die Anmeldeinformationen des Benutzers, sondern die Anmeldeinformationen des Computers falsch sendet. Um die URL/den Benutzer-Agent zu ermitteln, die/der dieses Problem verursacht, verwenden Sie regex mit grep, um die Anforderung zu isolieren, die bei der Authentifizierung erfolgt ist.
Wenn Sie nicht über den verwendeten Computernamen verfügen, verwenden Sie grep, und suchen Sie nach allen Computernamen, die bei der Authentifizierung mit diesem regulären Ausdruck als Benutzernamen verwendet wurden:
\$@
Wenn Sie die Zeile haben, in der dies auftritt, grep für den spezifischen Computernamen, der mit diesem regulären Ausdruck verwendet wurde:
machinename\$
Der erste Eintrag, der angezeigt wird, sollte die Anforderung sein, die bei der Authentifizierung des Benutzers mit dem Computernamen anstelle des Benutzernamens erfolgt ist.
Szenario 5: Suchen eines bestimmten Zeitraums in den Zugriffsprotokollen
Standardmäßig enthalten Zugriffsprotokollabonnements nicht das Feld, in dem Datum und Uhrzeit angezeigt werden, die von Menschen gelesen werden können. Wenn Sie die Zugriffsprotokolle für einen bestimmten Zeitraum überprüfen möchten, gehen Sie wie folgt vor:
- Suchen Sie den UNIX-Zeitstempel von einer Website wie Online Conversion.
- Sobald der Zeitstempel angezeigt wird, suchen Sie in den Zugriffsprotokollen nach einer bestimmten Zeit.
Hier ein Beispiel:
Ein Unix-Zeitstempel von 1325419200 entspricht 01.01.2012 12:00:00.
Sie können diesen Regex-Eintrag verwenden, um die Zugriffsprotokolle am 1. Januar 2012 um 12:00 Uhr zu durchsuchen:
13254192
Szenario 6: Suchen nach kritischen Meldungen oder Warnmeldungen
Sie können in allen verfügbaren Protokollen nach kritischen Meldungen oder Warnmeldungen suchen, z. B. in Proxyprotokollen oder Systemprotokollen mit regulären Ausdrücken.
Hier ein Beispiel:
Um in den Proxy-Protokollen nach Warnmeldungen zu suchen, geben Sie den folgenden regulären Ausdruck ein:
CLI> grep
Geben Sie die Nummer des Protokolls ein, das Sie erstellen möchten.
[]> 17 (Choose the # for proxy logs here)
Geben Sie den regulären Ausdruck für grep ein.
[]> warning