Wie man File Integrity Monitoring (FIM) mit osquery unter Linux einrichtet
Osquery ist ein Open-Source-Betriebssystem zur Instrumentierung, Überwachung und Analyse. Von Facebook erstellt, stellt es ein Betriebssystem als leistungsstarke relationale Datenbank zur Verfügung, die mit SQL-basierten Abfragen abgefragt werden kann.
Osquery ist eine Multiplattform-Software, die unter Linux, Windows, MacOS und FreeBSD installiert werden kann. Es ermöglicht uns, alle diese Betriebssysteme mit Hilfe von SQL-basierten Abfragen auf ihr Profil, ihre Leistung, ihre Sicherheit usw. zu untersuchen.
In diesem Tutorial zeigen wir Ihnen, wie Sie File Integrity Monitoring (FIM) mit osquery einrichten. Wir werden die Linux-Betriebssysteme Ubuntu 18.04 und CentOS 7 verwenden.
Voraussetzungen
- Linux (Ubuntu oder CentOS)
- Root-Rechte
- Fertigstellung des ersten osquery guide
Was wir tun werden
- Installieren von osquery auf Linux Server
- Syslog-Verbrauch für osquery aktivieren
- Grundlegende osquery Konfiguration
- Konfigurieren der Dateiintegritätsüberwachung osquery
- Prüfung
Schritt 1 – Installieren von osquery auf Linux Server
Osquery stellt ein eigenes Repository für die gesamte Plattforminstallation zur Verfügung, und der erste Schritt, den wir tun werden, ist die Installation des osquery-Pakets FROM des offiziellen osquery-Repository.
Auf Ubuntu
Fügen Sie dem System den osquery-Schlüssel hinzu.
export OSQUERY_KEY=1484120AC4E9F8A1A577AEEE97A80C63C9D8B80B sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys $OSQUERY_KEY
Fügen Sie das osquery-Repository hinzu und installieren Sie das Paket.
sudo add-apt-repository 'deb [arch=amd64] https://pkg.osquery.io/deb deb main' sudo apt install osquery -y
Auf CentOS
Fügen Sie dem System den osquery-Schlüssel hinzu.
curl -L https://pkg.osquery.io/rpm/GPG | sudo tee /etc/pki/rpm-gpg/RPM-GPG-KEY-osquery
Fügen Sie das osquery-Repository hinzu und aktivieren Sie es, und installieren Sie das Paket.
sudo yum-config-manager --add-repo https://pkg.osquery.io/rpm/osquery-s3-rpm.repo sudo yum-config-manager --enable osquery-s3-rpm sudo yum install osquery -y
Warten Sie, bis alle Pakete installiert sind.
Hinweis:
Wenn Sie den Fehler über den Befehl yum-config-manager erhalten.
sudo: yum-config-manager: command not found
Installiere das Paket ‚yum-utils‘.
yum -y install yum-utils
Schritt 2 – Syslog-Verbrauch in Osquery aktivieren
Osquery bietet Funktionen zum Lesen oder Konsumieren von Systemprotokollen auf dem Apple MacOS unter Verwendung des Apple System Log (ASL), und für Linux wird der Syslog verwendet.
In diesem Schritt werden wir den Syslog-Verbrauch für osquery durch den rsyslog aktivieren.
Auf Ubuntu
Installiere das rsyslog-Paket mit dem folgenden apt-Befehl.
sudo apt install rsyslog -y
Auf CentOS
Installiere das rsyslog-Paket mit dem Befehl yum unten.
sudo yum install rsyslog -y
Nachdem die Installation abgeschlossen ist, gehen Sie in das Verzeichnis ‚/etc/rsyslog.d‘ und erstellen Sie eine neue Konfigurationsdatei osquery.conf.
cd /etc/rsyslog.d/ vim osquery.conf
Fügen Sie dort die folgende Konfiguration ein.
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")
Speichern und beenden.
Schritt 3 – Grundkonfiguration osquery
Die Standardkonfiguration von osquery ist’osquery.conf‘, die sich normalerweise im Verzeichnis’/etc/osquery‘ befindet. Es gibt Beispiele für die osquery-Konfiguration ‚/usr/share/osquery/osquery/osquery.conf‘ und Beispiele für die Konfiguration von osquery packs.
In diesem Schritt werden wir mehr über die Komponenten der osquery-Konfiguration erfahren, die benutzerdefinierte osquery-Konfiguration erstellen und dann die osqueryd als Dienst bereitstellen.
osquery-Konfiguration, die als JSON-Datei formatiert ist, enthält die nachfolgend beschriebenen Spezifikationen für die osquery-Konfiguration.
- Optionen: Teil des osqueryd CLI-Befehls und bestimmt den Start und die Initialisierung der Anwendungen.
- Zeitplan: Definieren Sie den Fluss der geplanten Abfragenamen zu den Abfragedetails.
- Dekorateure: Wird verwendet, um zusätzliche „Dekorationen“ zu Ergebnissen und Snapshot-Protokollen hinzuzufügen.
- Pakete: eine Gruppe von Zeitplanabfragen.
- Mehr: Dateipfad, YARA, Prometheus, Ansichten, EC2, Chef-Konfiguration.
Gehen Sie in das Verzeichnis’/etc/osquery‘ und erstellen Sie eine neue benutzerdefinierte Konfiguration’osquery.conf‘.
cd /etc/osquery/ vim osquery.conf
Fügen Sie dort die folgenden Konfigurationen ein.
{ "options": { "config_plugin": "filesystem", "logger_plugin": "filesystem", "logger_path": "/var/log/osquery", "disable_logging": "false", "log_result_events": "true", "schedule_splay_percent": "10", "pidfile": "/var/osquery/osquery.pidfile", "events_expiry": "3600", "database_path": "/var/osquery/osquery.db", "verbose": "false", "worker_threads": "2", "enable_monitor": "true", "disable_events": "false", "disable_audit": "false", "audit_allow_config": "true", "host_identifier": "hakase-labs", "enable_syslog": "true", "syslog_pipe_path": "/var/osquery/syslog_pipe", "force": "true", "audit_allow_sockets": "true", "schedule_default_interval": "3600" }, "schedule": { "crontab": { "query": "SELECT * FROM crontab;", "interval": 300 }, "system_info": { "query": "SELECT hostname, cpu_brand, physical_memory FROM system_info;", "interval": 3600 }, "ssh_login": { "query": "SELECT username, time, host FROM last WHERE type=7", "interval": 360 } }, "decorators": { "load": [ "SELECT uuid AS host_uuid FROM system_info;", "SELECT user AS username FROM logged_in_users ORDER BY time DESC LIMIT 1;" ] }, "packs": { "osquery-monitoring": "/usr/share/osquery/packs/osquery-monitoring.conf" } }
Speichern und beenden.
Hinweis:
- Wir verwenden das’Dateisystem‘ als Konfigurations- und Logger-Plugins.
- Definiert den Loggerpfad zum Verzeichnis’/var/log/osquery‘.
- Aktivieren Sie den syslog pip für die Datei’/var/syslog/syslog/syslog_pipe‘.
- Im Scheduler definieren wir drei Abfragen zur Überprüfung von crontab, system info und ssh login.
- Aktivieren Sie die osquery-Pakete namens’osquery-monitoring‘ und packen Sie Dateien, die sich im Verzeichnis’/usr/share/osquery/packs‘ befinden.
Starten Sie nun den osqueryd-Daemon-Dienst und aktivieren Sie ihn, damit er jedes Mal beim Systemstart gestartet werden kann.
systemctl start osqueryd systemctl enable osqueryd
Und starten Sie den rsyslog-Dienst neu.
systemctl restart rsyslog
Die Grundkonfiguration der osquery ist abgeschlossen.
Schritt 4 – Konfigurieren der Dateiintegritätsüberwachung (FIM) mit osquery
Osquery bietet File Integrity Monitoring unter Linux und MacOS Darwin mit den inotify und FSEvents. Einfach gesagt, überwacht und erkennt es alle Änderungen von Dateien im definierten Verzeichnis unter Verwendung des’file_path‘ und speichert dann alle Aktivitäten in der file_events-Tabelle.
In diesem Schritt konfigurieren wir osquery, um wichtige Verzeichnisse wie home, ssh directory, etc., tmp und das www Web-Root-Verzeichnis mit benutzerdefinierten FIM-Paketen zu überwachen.
Gehen Sie zum Verzeichnis’/usr/share/osquery/packs‘ und erstellen Sie eine neue Packs-Konfigurationsdatei’fim.conf‘.
cd /usr/share/osquery/packs vim fim.conf
Füge die folgenden Konfigurationen ein.
{ "queries": { "file_events": { "query": "SELECT * FROM file_events;", "removed": false, "interval": 300 } }, "file_paths": { "homes": [ "/root/.ssh/%%", "/home/%/.ssh/%%" ], "etc": [ "/etc/%%" ], "home": [ "/home/%%" ], "tmp": [ "/tmp/%%" ], "www": [ "/var/www/%%" ] } }
Speichern und beenden.
Kehren Sie nun zum Konfigurationsverzeichnis von ‚/etc/osquery‘ zurück und bearbeiten Sie die Datei osquery.conf.
cd /etc/osquery/ vim osquery.conf
Fügen Sie die Konfiguration der File Integrity Monitoring Packs im Abschnitt „Packs“ hinzu.
"packs": { "osquery-monitoring": "/usr/share/osquery/packs/osquery-monitoring.conf", "fim": "/usr/share/osquery/packs/fim.conf" }
Speichern und beenden Sie den osqueryd-Dienst und starten Sie ihn neu.
systemctl restart osqueryd
Hinweis:
Überprüfen Sie die JSON-Konfigurationsdatei mit dem JSON-Linter‘http://jsonlint.com/‚ und stellen Sie sicher, dass kein Fehler vorliegt.
Schritt 5 – Prüfung
Wir testen die Pakete zur Dateiintegritätsüberwachung, indem wir eine neue Datei im definierten Verzeichnis ‚home‘ und ‚www‘ erstellen.
Gehen Sie in das Verzeichnis’/var/wwww/‘ und erstellen Sie eine neue Datei namens’howtoforge.md‘.
cd /var/www/ touch howtoforge.md
Gehen Sie in das Verzeichnis’/home/youruser/‘ und erstellen Sie eine neue Datei namens’hakase-labs.md‘.
cd /home/vagrant/ touch hakase-labs.md
Nun werden wir alle Protokolle überprüfen, die mit dem interaktiven Echtzeit-Modus osqueryi und den Protokollen der Osquery-Ergebnisse überwacht werden.
osqueryi
Führen Sie den folgenden Befehl osqueryi aus.
osqueryi --config-path /etc/osquery/osquery.conf
Überprüfen Sie nun alle Protokolle über Dateiänderungen in der Tabelle’file_events‘.
Für globale Veränderungen.
select * from file_events;
Für das Verzeichnis „home“.
select target_path, category, action, atime, ctime, mtime from file_events WHERE category="home";
Für das Web-Root-Verzeichnis’www‘.
select target_path, category, action, atime, ctime, mtime from file_events WHERE category="www";
osqueryd Ergebnisprotokoll
Gehen Sie in das Verzeichnis’/var/log/osquery‘ und Sie erhalten die Datei’osqueryd.results.log‘.
cd /var/log/osquery/ ls -lah osqueryd.results.log
Filtern Sie die Osquery-Protokolle mit dem Befehl „grep“.
grep -rin howtoforge.md osqueryd.results.log grep -rin hakase-labs.md osqueryd.results.log
Sie werden sehen, dass Informationen über diese Datei erstellt wurden.
Die Installation und Konfiguration der File Integrity Monitoring (FIM) auf Linux Server Ubuntu und CentOS mit osquery wurde erfolgreich abgeschlossen.