Dateiüberwachung · 6 min read · Nov 03, 2025

So richten Sie die Datei-Integritätsüberwachung (FIM) mit osquery unter Linux ein

Osquery ist eine Open-Source-Instrumentierung, Überwachung und Analyse des Betriebssystems. Entwickelt von Facebook, stellt es ein Betriebssystem als eine leistungsstarke relationale Datenbank dar, die mit SQL-basierten Abfragen abgefragt werden kann.

Osquery ist eine plattformübergreifende Software, die auf Linux, Windows, MacOS und FreeBSD installiert werden kann. Es ermöglicht uns, alle Profile, die Leistung, die Sicherheitsüberprüfung usw. dieser Betriebssysteme mithilfe von SQL-basierten Abfragen zu erkunden.

In diesem Tutorial zeigen wir Ihnen, wie Sie die Datei-Integritätsüberwachung (FIM) mit osquery einrichten. Wir verwenden die Linux-Betriebssysteme Ubuntu 18.04 und CentOS 7.

Voraussetzungen

  • Linux (Ubuntu oder CentOS)
  • Root-Rechte
  • Abgeschlossene erste osquery-Anleitung

Was wir tun werden

  1. Installieren Sie osquery auf dem Linux-Server
  2. Aktivieren Sie die Syslog-Verbrauch für osquery
  3. Grundlegende osquery-Konfiguration
  4. Konfigurieren Sie die Datei-Integritätsüberwachung osquery
  5. Testen

Schritt 1 - Installieren Sie osquery auf dem Linux-Server

Osquery bietet sein eigenes Repository für die Installation aller Plattformen, und der erste Schritt, den wir unternehmen werden, ist die Installation des osquery-Pakets AUS dem offiziellen osquery-Repository.

Auf Ubuntu

Fügen Sie den osquery-Schlüssel zum System 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 den osquery-Schlüssel zum System 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.

Installieren Sie osquery

Hinweis:

Wenn Sie den Fehler über den Befehl yum-config-manager erhalten.

sudo: yum-config-manager: Befehl nicht gefunden

Installieren Sie das Paket ‘yum-utils’.

yum -y install yum-utils

Schritt 2 - Aktivieren Sie den Syslog-Verbrauch in osquery

Osquery bietet Funktionen zum Lesen oder Verbrauchen von Systemprotokollen auf dem Apple MacOS mit dem Apple System Log (ASL), und für Linux wird syslog verwendet.

In diesem Schritt aktivieren wir den Syslog-Verbrauch für osquery über das rsyslog.

Auf Ubuntu

Installieren Sie das rsyslog-Paket mit dem folgenden apt-Befehl.

sudo apt install rsyslog -y

Auf CentOS

Installieren Sie das rsyslog-Paket mit dem folgenden yum-Befehl.

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.

Konfigurieren Sie osquery zum Lesen des Syslogs

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.conf’ und Beispiele für die Konfiguration von osquery-Packs.

In diesem Schritt lernen wir die Komponenten der osquery-Konfiguration kennen, erstellen die benutzerdefinierte osquery-Konfiguration und setzen dann osqueryd als Dienst ein.

Die osquery-Konfiguration ist als JSON-Datei formatiert und enthält die folgenden Spezifikationen der osquery-Konfiguration.

  • Optionen: Teil des osqueryd CLI-Befehls, der den Start und die Initialisierung der Apps bestimmt.
  • Zeitplan: Definiert den Fluss der geplanten Abfragenamen zu den Abfragedetails.
  • Dekoratoren: Werden verwendet, um zusätzliche “Dekorationen” zu Ergebnissen und Snapshot-Protokollen hinzuzufügen.
  • Packs: eine Gruppe von geplanten Abfragen.
  • 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 ‘filesystem’ als Konfigurations- und Logger-Plugins.
  • Definieren Sie den Logger-Pfad im Verzeichnis ‘/var/log/osquery’.
  • Aktivieren Sie das Syslog-Pipe zum Datei ‘/var/syslog/syslog_pipe’.
  • Im Zeitplan definieren wir drei Abfragen zur Überprüfung des Crontabs, der Systeminformationen und des SSH-Logins.
  • Aktivieren Sie die osquery-Packs mit dem Namen ‘osquery-monitoring’, und die Packdateien befinden sich im Verzeichnis ‘/usr/share/osquery/packs’.

Starten Sie jetzt den osqueryd-Daemon-Dienst und aktivieren Sie ihn, damit er jedes Mal beim Systemstart gestartet wird.

systemctl start osqueryd  
systemctl enable osqueryd

Und starten Sie den rsyslog-Dienst neu.

systemctl restart rsyslog

Die grundlegende Konfiguration von osquery wurde abgeschlossen.

Schritt 4 - Konfigurieren Sie die Datei-Integritätsüberwachung (FIM) mit osquery

Osquery bietet die Datei-Integritätsüberwachung unter Linux und MacOS Darwin mithilfe von inotify und FSEvents. Einfach gesagt, es überwacht und erkennt alle Änderungen von Dateien im definierten Verzeichnis mithilfe des ‘file_path’ und speichert dann alle Aktivitäten in der Tabelle file_events.

In diesem Schritt konfigurieren wir osquery, um wichtige Verzeichnisse wie home, ssh-Verzeichnis usw., tmp und das www-Webstammverzeichnis mithilfe benutzerdefinierter FIM-Packs zu überwachen.

Gehen Sie in das Verzeichnis ‘/usr/share/osquery/packs’ und erstellen Sie eine neue Pack-Konfigurationsdatei ‘fim.conf’.

cd /usr/share/osquery/packs  
vim fim.conf

Fügen Sie 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.

Gehen Sie jetzt zurück in das Konfigurationsverzeichnis ‘/etc/osquery’ und bearbeiten Sie die osquery.conf-Datei.

cd /etc/osquery/  
vim osquery.conf

Fügen Sie die Konfiguration der Datei-Integritätsüberwachung in den Abschnitt ‘packs’ ein.

    "packs": {
        "osquery-monitoring": "/usr/share/osquery/packs/osquery-monitoring.conf",
        "fim": "/usr/share/osquery/packs/fim.conf"
    }

osquery-Dateiüberwachung

Speichern und beenden, und starten Sie dann den osqueryd-Dienst neu.

systemctl restart osqueryd

osqueryd neu starten

Hinweis:

Überprüfen Sie die JSON-Konfigurationsdatei mit dem JSON-Linter ‘ http://jsonlint.com/ ‘ und stellen Sie sicher, dass keine Fehler vorhanden sind.

Schritt 5 - Testen

Wir werden die Datei-Integritätsüberwachungs-Packs testen, indem wir eine neue Datei im definierten Verzeichnis ‘home’ und ‘www’ erstellen.

Gehen Sie in das Verzeichnis ‘/var/www/‘ und erstellen Sie eine neue Datei mit dem Namen ‘howtoforge.md’.

cd /var/www/  
touch howtoforge.md

Gehen Sie in das Verzeichnis ‘/home/youruser/‘ und erstellen Sie eine neue Datei mit dem Namen ‘hakase-labs.md’.

cd /home/vagrant/  
touch hakase-labs.md

Jetzt werden wir alle Protokolle überwachen, indem wir den Echtzeit-Interaktivmodus osqueryi und die Protokolle der osquery-Ergebnisse verwenden.

Testen der osquery-Einrichtung

osqueryi

Führen Sie den osqueryi-Befehl unten aus.

osqueryi --config-path /etc/osquery/osquery.conf

Überprüfen Sie jetzt alle Protokolle über Dateiänderungen in der Tabelle ‘file_events’.

Für globale Ä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 www-Webstammverzeichnis.

select target_path, category, action, atime, ctime, mtime from file_events WHERE category="www";

Verwendung von osqueryi

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 Informationen darüber sehen, dass diese Dateien erstellt wurden.

osqueryd-Ergebnisprotokoll

Die Installation und Konfiguration der Datei-Integritätsüberwachung (FIM) auf dem Linux-Server Ubuntu und CentOS mit osquery wurde erfolgreich abgeschlossen.

Referenz

Share: X/Twitter LinkedIn

Erhalte neue Beiträge in deinem Posteingang.

Kein Spam. Jederzeit abmelden.