Analysieren von Syslog-Daten mit KQL

Abgeschlossen

Der Syslog-Collector schreibt Protokolldaten in die Syslog-Tabelle. Ein Unterschied zum CEF-Collector besteht darin, dass die Daten der Nachricht in einem Zeichenfolgenfeld namens SyslogMessage gespeichert werden. Der Common Event Format-Connector (CEF) schreibt in das CommonSecurityLog-Protokoll, wobei die Felder bereits analysiert wurden. Für Syslog müssen Sie Felder in jeder Abfrage analysieren, die die Syslog-Tabelle verwendet, oder einen Parser schreiben. Ein Parser ist eine KQL-Funktion, bei der es sich um eine als Funktion gespeicherte Abfrage handelt, auf die dann mit dem Funktionsnamen verwiesen wird. Der Verweis auf den Funktionsnamen ist wie der Zugriff auf eine beliebige Tabelle. Durch das Erstellen von Analysen müssen Sie die SyslogMessage-Analyse nur einmal schreiben.

Erstellen Sie im Protokollfenster eine Abfrage, klicken Sie auf die Schaltfläche „Speichern“, und wählen Sie im Dropdownmenü die Option „Function“ aus. Geben Sie dann den Funktionsnamen und -alias an. Wenn Sie in diesem Fall die Funktion namens „MyParser“ erstellen, können Sie über den Namen „MyParser“ auf die Tabelle zugreifen.

Syslog
| where ProcessName contains "squid"
| extend URL = extract("(([A-Z]+ [a-z]{4,5}:\\/\\/)|[A-Z]+ )([^ :]*)",3,SyslogMessage), 
         SourceIP = extract("([0-9]+ )(([0-9]{1,3})\\.([0-9]{1,3})\\.([0-9]{1,3})\\.([0-9]{1,3}))",2,SyslogMessage), 
         Status = extract("(TCP_(([A-Z]+)(_[A-Z]+)*)|UDP_(([A-Z]+)(_[A-Z]+)*))",1,SyslogMessage), 
         HTTP_Status_Code = extract("(TCP_(([A-Z]+)(_[A-Z]+)*)|UDP_(([A-Z]+)(_[A-Z]+)*))/([0-9]{3})",8,SyslogMessage),
         User = extract("(CONNECT |GET )([^ ]* )([^ ]+)",3,SyslogMessage),
         RemotePort = extract("(CONNECT |GET )([^ ]*)(:)([0-9]*)",4,SyslogMessage),
         Domain = extract("(([A-Z]+ [a-z]{4,5}:\\/\\/)|[A-Z]+ )([^ :\\/]*)",3,SyslogMessage)
| extend TLD = extract("\\.[a-z]*$",0,Domain)

MyParser