Neu in Sierra: Unified Logging

Neu in Sierra: Unified Logging

Während der WWDC 2016 kündigte Apple ein neues Unified Logging System als vereinheitlichtes System zur Ereignisprotokollierung an.

Ein universeller, effizienter Log Mechanismus für Kernel und User

Der neue Mechanismus zur Protokollierung von Systemereignissen findet sich in iOS, tvOS, watchOS und macOS. In macOS ersetzt es seit 10.12 Sierra das bisherigen Apple System Logger (ASL) and die Syslog APIs. Protokollierte Ereignisse werden nun komprimiert in einer Datenbank gespeichert, sowohl im RAM als auch auf der Festplatte in einem binären Format. Die Ereignisse aus den alten APIs NSLog, asl_log_message, syslog etc. werden in die neue Datenbank umgeleitet.

Neues Datenformat, neuer Speicherort

Nur Ereignisse eines definierten Levels werden dauerhaft gespeichert. Unterhalb dieses Levels werden alte Ereignisse durch neue Ereignisse überschrieben. Diese Entscheidung zu besserer Daten-Ökonomie ist ein Fortschritt für eine Systemfamilie, die überwiegend mit Akkus und SSDs betrieben wird. Leider ist der neue  Mechanismus nicht kompatibel mit der bisherigen „Standard Unix toolbox“ und den Befehlen tail, grep, less etc., die von Mac Administratoren seit langer Zeit verwendet werden beim Inspizieren von Log-Dateien oder beim Bau von Programmen für Support und Forensik. Log Daten werden im Unified Logging System in einem komprimierten binären Dateiformat gespeichert: .tracev3. Der Speicherort ist /var/db/diagnostics mit Support in /var/db/uuidtext.

bis OS X El Capitan:
 grep "Failed to authenticate user" /private/var/log/system.log 

Für das neue Unified Logging System wurde eine neue Console.app und ein neues Kommandozeilenwerkzeug eingeführt. log ersetzt den bisherigen Befehl less (`log show`) und tail (`log stream`) . Zusätzliche Prädikate erlauben die Filterung der enormen Zahl der Events.

der Befehl zum Auffinden von fehlgeschlagenen Logins seit macOS Sierra:
 log show --predicate 'eventMessage contains "Failed to authenticate user"' 

Neues .logarchive Format für Transport

Das Versenden von Logs kann mit dem neuen Befehl log umgesetzt werden, aber bevor eine API den Zugriff auf die neue Ereignisdatenbank explizit unterstützt, bleibt die technische Lösung spröde. Dies ist aktuell das Hauptproblem, das Apple baldmöglichst angehen muss. Auch das Versenden von Log-Dateien durch Benutzer ist seit macOS Sierra weniger einfach zu lösen. Auszüge aus den Log-Dateien sind eine nützliche Basis für den Support, aber das Erstellen dieser Auszüge ist seit macOS Sierra umständlicher geworden. Man muss dazu den neuen Befehl log benutzen.

Auswertung von System Events

Andere Informationsquellen können nach wie vor einfach erfasst werden. Viele Unternehmen benutzen Jamf Pro oder Munki, um Ihre Flotten zu verwalten – auch wir bei Apfelwerk nutzen sie intensiv zur Verwaltung von Kunden-Rechnern im Rahmen unsere Managed ServicesJamf ProMunki und Sal gehen im Unterschied zu Apples neuem Unified Logging System einen anderen Weg. Diese Werkzeuge verwenden Software-Agenten, die direkt mit einem Server kommunizieren. Weitverbreitete Dashboards wie Sal oder MunkireportPHP können Munki ergänzen und erlauben sogar bessere Erkenntnisse darüber, welche Prozesse auf den Geräten aktiv sind.

In den letzten beiden Jahren sind zwei neue Open Source Tools aufgetaucht, die über diese gut etablierten Werkzeuge hinausgehen.

Osquery und Santa

Da ist zunächst Osquery, eine Eigenentwicklung von Facebook. Es stellt den Zustand eines Systems (Linux, macOS, Windows) dar in einer relationalen Datenbank, mit verschiedenen Tabellen für verschiedene Subsysteme. Es gibt eine Tabelle für users, eine für laufende Prozesse und viele weitere. Der Clou dieser Architektur besteht darin, dass ein  Gerät mit SQL untersucht werden kann und Tabellen mit Sqlite beliebig verknüpft werden können. Das ist ideal, um beispielsweise die Spuren anzuzeigen, die durch Malware hinterlassen wurden oder um die installierten Zertifikate zu prüfen – und das mit nur einem Werkzeug. Die Erkundung durch Osquery kann in regelmäßigen Intervallen erfolgen, wobei nur die Unterschiede zu früheren Erkundungen protokolliert werden. Man könnte es beispielsweise verwenden, um die Installation eines LaunchDaemon zu verfolgen.

Zum Zweiten ist da Santa, entwickelt von Google. Die wesentlichste Komponente von Santa ist eine Kernel Extension, die die Ausführung von Binaries überwacht. Sie erlaubt das Ausführung oder Blockieren der Binaries nach bestimmten Regeln. Die Erlaubnis zur Ausführung ist abhängig von der Prüfsumme der Binary oder desjenigen Zertifikates, das zur Signierung der Binary genutzt wird. So lässt sich beispielsweise eine bestimmte Version der App Transmission blockieren oder alle Programme, die von „Digital Ignition LCC“ signiert wurden. Santa hat zwei Betriebsmodi: MONITOR und LOCKDOWN. Im Modus MONITOR erlaubt Santa die Ausführung aller Binaries, blockiert aber alle durch eine Regel erfassten Binaries aus. Im Modus LOCKDOWN blockiert Santa alle Binaries und erlaubt nur die durch eine Positivliste definierten Binaries. In beiden Fällen werden alle Entscheidungen protokolliert – dadurch hat man den Überblick über die Programme, die auf allen Geräten ausgeführt werden.

Sowohl Osquery als auch Santa können ferngesteuert werden und versenden Log-Dateien über TLS-verschlüsselte HTTP-Requests. Genau hier kommt Zentral ins Spiel.

Zentral

Zentral ist im Wesentlichen ein Framework zum Sammeln, Verarbeiten und Überwachen von Systemereignissen, die anschließend gespeichert werden. Verschiedene Module sind verfügbar, um Informationen anderer Inventory Provider wie z.B. Jamf Pro oder Watchman einzusammeln. Zentral agiert dabei als Log-Server für Osquery und Santa und integriert Munki im post-flight Prozess.

Ereignisse, die von den Änderungen in anderen Inventories ausgelöst werden oder von Osquery, Santa, Munki oder anderen Quelen stammt, werden genormt und angereichert, bevor sie in Elasticsearch gespeichert werden.

Die Konfiguration von Zentral wird mit „Proben“ vorgenommen. Eine Probe verknüpft Filter, Aktionen und optionale Einstellungen, die für eine Aufgabe notwendig sind. Die Filter werden auf die Ereignis-Metadaten angewendet (Ereignistyp, Gerätetyp, Geräte-Organisation, etc.) oder auf das Ereignis Payload. Falls ein passendes Ereignis gefunden wird, werden Aktionen ausgelöst. Aktionen können Tickets erzeugen oder Benachrichtigungen senden als Email, Text- oder Slack-Nachrichten. Das betreffende Gerät kann einer Gruppe von Jamf Pro zugewiesen werden, um komplexere Workflows auszulösen. Die optionalen Einstellungen sind für einige Probe-Klassen spezifisch: eine Osquery-Probe enthält Osquery-Anfragen – sie wird ein Zentral Event erzeugen für jede Ergebnisänderung jedes Geräts. Eine Santa-Probe enthält Santa-Regeln um Binaries zu erlauben und zu verbieten; sie erstellt ein Zentral-Event für jede Entscheidung.

Dieser modulare Aufbau ermöglicht das Erstellen von Proben, die genau zum jeweiligen Szenario passen. Direkt im Zentral Interface können Proben verändert, Filter angepasst, alle passenden Events gesichtet werden – oder direkt an Kibana übergeben werden, um detailiertere Darstellungen zu erhalten.

Screenshot Osquery Probe

USB-Speicher Event einer Osquery Probe. Kombination von Filtern, um die Probe-Ergebnisse einzugrenzen auf eine Organisationseinheit, eine Osquery Anfrage auf die Geräte der Organisationseinheit, inklusive Erstellung einer Slack-Nachricht.

 

Das von der Probe gefilterte Zentral Event.

Das von der Probe gefilterte Zentral Event.

 

screenshot kibana

Das selbe Ereignis dargestellt in Kibana, gefiltert nach Produkthersteller.

 

Diese einfachen Beispiele kratzen nur an der Oberfläche der Möglichkeiten von Zentral. In unserem Youtube Kanal finden Sie mehrere Video-Tutorials zu Zentral.

Über Zentral, Éric Falconnier and Henry Stamerjohann

Zentral wurde im Herbst 2015 als Open Source-Projekt von Apfelwerk veröffentlicht. Éric Falconnier and Henry Stamerjohann leiten die Entwicklung von Hamburg aus und bieten bei Interesse Unterstützung dafür an.

Henry Stamerjohann wird Zentral am  7. Februar 2017 um 16:15 auf der MacADUK Konferenz vorstellen.

An english version of this article can be found at Amsys.

 

 

No Comments

Sorry, the comment form is closed at this time.