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

  1. Installieren von osquery auf Linux Server
  2. Syslog-Verbrauch für osquery aktivieren
  3. Grundlegende osquery Konfiguration
  4. Konfigurieren der Dateiintegritätsüberwachung osquery
  5. 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.

Installieren Sie osquery

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.

Konfigurieren Sie osquery, um das Syslog zu lesen.

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"
    }

osquery Dateiüberwachung

Speichern und beenden Sie den osqueryd-Dienst und starten Sie ihn neu.

systemctl restart osqueryd

Starten Sie osqueryd neu

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.

Testen des osquery-Setups

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";

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

osqueryd Ergebnisprotokoll

Die Installation und Konfiguration der File Integrity Monitoring (FIM) auf Linux Server Ubuntu und CentOS mit osquery wurde erfolgreich abgeschlossen.

Referenz

Das könnte dich auch interessieren …