GNU/Linux >> LINUX-Kenntnisse >  >> Linux

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

Osquery ist eine Open-Source-Betriebssysteminstrumentierung, -überwachung und -analyse. Es wurde von Facebook entwickelt und stellt ein Betriebssystem als hochleistungsfähige relationale Datenbank dar, die mithilfe von SQL-basierten Abfragen abgefragt werden kann.

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

In diesem Tutorial zeigen wir Ihnen, wie Sie File Integrity Monitoring (FIM) mit osquery einrichten. Wir verwenden die Linux-Betriebssysteme Ubuntu 18.04 und CentOS 7.

Voraussetzungen

  • Linux (Ubuntu oder CentOS)
  • Root-Rechte
  • Erste Osquery-Anleitung fertiggestellt

Was wir tun werden

  1. Installieren Sie osquery auf dem Linux-Server
  2. Syslog-Nutzung für Osquery aktivieren
  3. Grundlegende Osquery-Konfiguration
  4. Osquery für Dateiintegritätsüberwachung konfigurieren
  5. Testen

Schritt 1 - Installieren Sie osquery auf einem Linux-Server

Osquery stellt ein eigenes Repository für die gesamte Plattforminstallation bereit, und der erste Schritt, den wir tun 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, 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

Installieren Sie das 'yum-utils'-Paket.

yum -y install yum-utils

Schritt 2 – Syslog-Verbrauch in osquery aktivieren

Osquery bietet Funktionen zum Lesen oder Verwenden von Systemprotokollen unter Apple MacOS mithilfe des Apple System Log (ASL) und für Linux mithilfe des Syslog.

In diesem Schritt aktivieren wir den Syslog-Verbrauch für Osquery über 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 untenstehenden yum-Befehl.

sudo yum install rsyslog -y

Gehen Sie nach Abschluss der Installation 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 - Basiskonfiguration osquery

Die Standardkonfiguration von osquery ist „osquery.conf“, die sich normalerweise im Verzeichnis „/etc/osquery“ befindet. Es gibt Beispiele der osquery-Konfiguration '/usr/share/osquery/osquery.conf' und ein Beispiel der osquery-Paketkonfiguration.

In diesem Schritt lernen wir die osquery-Konfigurationskomponenten kennen, erstellen die benutzerdefinierte osquery-Konfiguration und stellen dann osqueryd als Dienst bereit.

Die als JSON-Datei formatierte osquery-Konfiguration enthält die unten beschriebenen osquery-Konfigurationsspezifikationen.

  • Optionen:Teil des CLI-Befehls osqueryd und bestimmt den Start und die Initialisierung der Apps.
  • Zeitplan:Definieren Sie den Fluss der geplanten Abfragenamen zu den Abfragedetails.
  • Dekoratoren:Wird verwendet, um zusätzliche „Dekorationen“ zu Ergebnis- und Schnappschussprotokollen 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.
  • Definieren Sie den Logger-Pfad zum Verzeichnis '/var/log/osquery'.
  • Aktivieren Sie den Syslog-Pip zur Datei '/var/syslog/syslog_pipe'.
  • Auf dem Scheduler definieren wir drei Abfragen zum Prüfen von Crontab, Systeminfo und SSH-Login.
  • Aktivieren Sie die osquery-Pakete mit dem Namen '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 so, dass er jedes Mal beim Systemstart gestartet wird.

systemctl start osqueryd
systemctl enable osqueryd

Und starten Sie den rsyslog-Dienst neu.

systemctl restart rsyslog

Grundlegende Konfigurationsosquery wurde abgeschlossen.

Schritt 4 – Dateiintegritätsüberwachung (FIM) mit osquery konfigurieren

Osquery bietet File Integrity Monitoring unter Linux und MacOS Darwin mithilfe von inotify und FSEvents. Es überwacht und erkennt einfach alle Änderungen an Dateien im definierten Verzeichnis unter Verwendung des 'file_path' und speichert dann alle Aktivitäten in der file_events-Tabelle.

In diesem Schritt werden wir osquery so konfigurieren, dass wichtige Verzeichnisse wie home, ssh-Verzeichnis usw., tmp und das www-Web-Root-Verzeichnis mithilfe benutzerdefinierter FIM-Pakete überwacht werden.

Gehen Sie in das Verzeichnis ‚/usr/share/osquery/packs‘ und erstellen Sie eine neue Paketkonfigurationsdatei ‚fim.conf‘.

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

Konfigurationen unten einfügen.

{
  "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 nun zurück in das Konfigurationsverzeichnis ‚/etc/osquery‘ und bearbeiten Sie die Datei osquery.conf.

cd /etc/osquery/
vim osquery.conf

Fügen Sie die Paketkonfiguration für die Dateiintegritätsüberwachung im Abschnitt „Pakete“ hinzu.

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

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

systemctl restart osqueryd


Hinweis:

Überprüfen Sie weiterhin die JSON-Konfigurationsdatei mit dem JSON-Linter „http://jsonlint.com/“ und stellen Sie sicher, dass kein Fehler vorliegt.

Schritt 5 – Testen

Wir werden die Pakete zur Überwachung der Dateiintegrität testen, indem wir eine neue Datei in den definierten Verzeichnissen „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 überprüfen, die den interaktiven Echtzeitmodus osqueryi und die Protokolle der Osquery-Ergebnisse verwenden.

osqueryi

Führen Sie den folgenden osqueryi-Befehl 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 Änderungen.

select * from file_events;

Für das Home-Verzeichnis.

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 diese Datei erstellt wurde.

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


Linux
  1. So erstellen Sie eine Datei in Linux mit Terminal/Befehlszeile

  2. So richten Sie den vsftpd-FTP-Dateiserver unter Redhat 7 Linux ein

  3. Was ist NFS und wie wird es unter Linux installiert?

  4. So teilen Sie ISO oder Datei mit dem Befehl „Split“ in Linux

  5. So installieren Sie eine .dsc-Datei unter Linux

So richten Sie einen Streaming Media Server mit Jellyfin unter Linux ein

So formatieren Sie Shell-Programme mit Shfmt unter Linux

So richten Sie eine Firewall mit UFW unter Linux ein

So richten Sie eine Firewall mit Gufw auf einem Linux-Desktop ein

So richten Sie einen einfachen Dateiserver mit simpleHTTPserver ein

So installieren Sie das Gtop-Systemüberwachungstool unter Linux