Die völlig losgelöste "osqueryi"-Shell ist praktisch, allerdings zwingt dieser Ansatz den Admin dazu, ein Gerüst zu bauen, das sich in zuvor definierten Abständen auf allen relevanten Hosts einloggt, die nötigen Abfragen ausführt und die Ausgabe zurückgibt. Um dieses Problem zu umgehen, liefert Facebook zusammen mit der "osqueryi"-Shell auch einen Daemon namens "osqueryd" aus. Dessen Hauptaufgabe besteht darin, zuvor per Konfigurationsdatei vom Nutzer bestimmte Checks regelmäßig durchzuführen und die entsprechenden Ergebnisse aufzuzeichnen. Die dabei entstehende Datei mit den Logeinträgen können andere Dienste anschließend verarbeiten.
Freilich geht die erhöhte Funktionalität mit gesteigerter Komplexität einher, und damit "osqueryd" überhaupt sinnvoll Werte erheben kann, braucht der Dienst eine Konfigurationsdatei. Diese heißt unter Linux "/etc/osquery/osquery.conf"; unter [2] findet sich eine vom Autor dieses Artikels vorbereitete Datei, die auf Ubuntu 16.04 funktioniert. Wer diese Datei unverändert übernehmen will, sollte zudem die Datei [3] unter "/usr/ share/osquery/packs/fim.conf" ablegen – dazu später mehr. Wichtig: "osqueryd" ist durch die oben genannte Datei so konfiguriert, dass es für "rsyslog" einen Socket öffnet, den dieser mit Syslog-Daten bedient. Die Datei "/etc/rsyslog.conf" sollte deshalb um diesen Eintrag erweitert werden:
template(
name="OsqueryCsvFormat"
type="string"
string="%timestamp:::date-rfc3339,csv%,%hostname:::csv%,%syslogseverity:::csv%,%syslogfacility-text:::csv%,%syslogtag:::csv%,%msg:::csv%\n"
)
*.* action(type="ompipe" Pipe="/var/osquery/syslog_pipe" template="OsqueryCsvFormat")
Nach einem Neustart von "rsyslog" klappt die Verbindung zwischen "osqueryd" und dem Syslog-Dienst und "osqueryd" enthält aktuelle Syslog-Informationen.
Die genannte "osquery.conf" ist die zentrale Anlaufstelle für Admins, wenn sie Checks konfigurieren wollen, die "osqueryd" regelmäßig durchführen soll. Dabei folgt die Syntax eines Check-Eintrages immer demselben Schema und entspricht der Syntax, die auch auf der Shell für "osqueryi" gilt. Wichtig: Checks müssen innerhalb der "schedule"-Direktive in der Datei "osquery.conf" stehen. Danach gilt das Konfigurationsformat
"name": {
"query": "Kommando",
"interval": Sekunden
},
Um alle fünf Minuten die eingeloggten User in die Logdatei zu schreiben, ist folglich dieser Eintrag notwendig:
"users": {
"query": "SELECT * FROM logged_in_users;",
"interval": 300
},