Wie man seinen Linux-Server mit osquery überwacht

Osquery ist eine Open-Source-Betriebssystemüberwachungs-, Abfrage- und Analysesoftware. 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. Osquery ermöglicht es uns, das Betriebssystemprofil, die Leistung, die Sicherheit und viele weitere Kennzahlen mithilfe von SQL-basierten Abfragen zu untersuchen.

In diesem Tutorial zeige ich Ihnen, wie Sie Osquery auf den Linux-Distributionen Ubuntu 18.04 LTS und CentOS 7 installieren. Wir werden Osquery installieren, lernen, wie man den interaktiven Modus „Osqueryi“ verwendet und wie man ein Live-System mit Osquery überwacht.

Voraussetzungen

  • Linux-Betriebssystem (Ubuntu 18.04 oder CentOS 7)
  • Root-Rechte

Was wir tun werden

  • Installieren Sie osquery auf dem Linux-Betriebssystem.
  • Grundlegende Anwendung des osqueryi Interaktiven Modus
  • Überwachungssystem mit osquery

Schritt 1 – Installieren Sie osquery auf dem Linux-Betriebssystem.

osquery stellt für jede Plattform ein eigenes Repository zur Verfügung. In diesem Schritt werden wir das osquery-Paket aus dem offiziellen osquery-Repository installieren.

Auf Ubuntu

Füge den osquery-Schlüssel hinzu.

export OSQUERY_KEY=1484120AC4E9F8A1A577AEEE97A80C63C9D8B80B
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys $OSQUERY_KEY

Installieren Sie das osquery-Paket auf Ubuntu.

sudo add-apt-repository 'deb [arch=amd64] https://pkg.osquery.io/deb deb main'
sudo apt install osquery -y

Auf CentOS

Füge den osquery-Schlüssel hinzu.

curl -L https://pkg.osquery.io/rpm/GPG | sudo tee /etc/pki/rpm-gpg/RPM-GPG-KEY-osquery

Installieren Sie das osquery-Paket auf CentOS 7.

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

Warten Sie, bis alle Pakete installiert sind.

Installieren Sie osquery

Schritt 2 – Grundlegende Anwendung des osqueryi Interaktivmodus

osquery bietet den Benutzern zwei Hauptschnittstellen, osqueryi und osqueryd.

osqueryi ist die interaktive Abfragekonsole von osquery. Es ist wie die ‚mysql‘ Kommando-Shell auf dem MySQL und die ‚psql‘ Shell auf der PostgreSQL-Datenbank.

In diesem Schritt lernen wir die grundlegende Verwendung des interaktiven Modus „osqueryi“.

Geben Sie den Befehl’osqueryi‘ auf dem Serverterminal ein, und Sie erhalten den interaktiven Konsolenmodus osquery.

osqueryi

Als nächstes werden wir über den grundlegenden Befehl des osqueryi Konsolenmodus lernen.

Zeigt alle grundlegenden verfügbaren Befehle im interaktiven Modus osqueryi an.

.help

mit dem Befehl osqueryi

Zeigt die aktuellen Osquery-Konfigurationen und -Einstellungen an.

.show

Osquery-Konfiguration anzeigen

Osquery bietet mehrere Ansichtsmodi, um Abfrageergebnisse anzuzeigen. Der Standardmodus ist der „hübsche“ Modus.

Nun werden wir den Ansichtsmodus der Abfrageergebnisse ändern, für diesen Leitfaden verwenden wir den Modus’Linie‘.

.mode csv
.mode list
.mode column
.mode line
.mode pretty

Osquery stellt das Betriebssystem als relationales Datenbanksystem zur Verfügung. Alle Informationen über das System werden in den Osquery-Tabellen gespeichert und wir können die gesamte Systeminfo durch Abfragen aller verfügbaren Tabellen untersuchen.

Um eine Liste aller verfügbaren Tabellen in der osquery zu erhalten, führen Sie den folgenden Befehl aus.

.tables

Eine Liste aller Tabellen erhalten

Sobald wir alle verfügbaren Tabellen im osquery-System kennen, werden wir uns die Spalten ansehen.

Verwenden Sie den folgenden Befehl, um das Schema (Spalten, Typen) von Tabellen abzurufen.

.schema users
.schema processes

Erhalten von osquery Spalten

Und Sie erhalten alle Schema-Spalten der Tabelle.

Schritt 3 – Grundlegende Linux-Überwachung mit Hilfe von Abfragen

In diesem Schritt werden wir ein lauffähiges Linux-System mit der osquery überwachen. Wir werden die Systemprofil-Informationen, Benutzer, Netzwerkschnittstellen usw. durch den interaktiven osqueryi-Modus überwachen.

Systeminformationen abrufen

Zeigt Details über die Systemhardware an.

SELECT * FROM system_info;
SELECT hostname, cpu_type, physical_memory, hardware_vendor, hardware_model FROM system_info;

Details zur Systemhardware anzeigen

Betriebssystem-Version holen

Zeigt die aktuellen Betriebssysteminformationen an, einschließlich der Betriebssystem-Version, Plattform, des Betriebssystem-Patches und des Codenamens.

SELECT * FROM os_version;

Details zum Betriebssystem anzeigen

Kernel-Version und Module anzeigen

Um die Kernel-Info des Systems zu überprüfen, stellt osquery die Tabellen’kernel_info‘ und die’kernel_modules‘ zur Verfügung.

Zeigt den vom System verwendeten Kernel an.

SELECT * FROM kernel_info;

Zeigt alle geladenen Kernelmodule auf dem System an.

SELECT * FROM kernel_modules LIMIT 5;

Details über den verwendeten Linux-Kernel erhalten

Überprüfung von Repository und Paketen

osquery bietet Tabellen zur Überprüfung von Repositories und installierten Paketen sowohl auf Linux Ubuntu als auch auf CentOS.

– Auf Ubuntu

Auf Ubuntu können wir die verfügbaren Repositories über die ‚apt_sources‘ und die über die ‚deb_packages‘ installierten Pakete überprüfen.

Überprüfen Sie alle verfügbaren Ubuntu-Repositorys.

SELECT * FROM apt_sources;
SELECT name, base_uri, release, maintainer, components FROM apt_sources ORDER BY name;

Überprüfen Sie alle installierten Pakete anhand der Tabelle deb_packages.

SELECT * FROM deb_packages;

Zeigt nur den Namen des Pakets und der Version an.

SELECT name, version FROM deb_packages ORDER BY name;

Installierte Pakete auf Ubuntu überprüfen

Fügen Sie für ein bestimmtes Paket den Namensfilter hinzu.

SELECT name, version FROM deb_packages WHERE name="nginx";

Details zu einem bestimmten Paket abrufen, in diesem Fall nginx

– Auf CentOS

Auf CentOS können wir das verfügbare Repository über die ‚yum_sources‘ und die installierten Pakete über die ‚rpm_packages‘ überprüfen.

Überprüfen Sie alle verfügbaren CentOS-Repositorys.

SELECT * FROM yum_sources;
SELECT name, baseurl, enabled FROM yum_sources;

Überprüfen Sie das aktivierte Repository, indem Sie den Filter „enabled“ hinzufügen.

SELECT name, baseurl, enabled FROM yum_sources WHERE enabled=1;

Paketdetails auf CentOS abrufen

Überprüfen Sie alle installierten Pakete anhand der Tabelle rpm_packages.

SELECT * FROM rpm_packages;
SELECT name, version FROM rpm_packages ORDER BY name;

Für einen bestimmten Paketnamen fügen Sie den Namensfilter hinzu.

SELECT name, version FROM rpm_packages WHERE name="firewalld";

Details zu Firewalld

Informationen zum Einbinden der Festplatte

Wir können die Mount-Tabelle verwenden, um alle Details über das Systemlaufwerk zu überprüfen, einschließlich freier Inodes, Flags, Typ usw.

Überprüfen Sie alle vom System eingebundenen Festplatten.

SELECT * FROM mounts;
SELECT device, path, type, inodes_free, flags FROM mounts;

Für den jeweiligen Gerätetyp.

SELECT device, path, type, inodes_free, flags FROM mounts WHERE type="ext4";
SELECT device, path, type, inodes_free, flags FROM mounts WHERE type="tmpfs";

Festplatteneinschübe erhalten

Speicherinformationen

Überprüfung des Systemspeichers in Bytes.

SELECT * FROM memory_info;

Speicherdetails abrufen

Infos zur Netzwerkschnittstelle

Überprüfung der Netzwerkadresse mit Hilfe von’interface_addresses‘.

SELECT * FROM interface_addresses;

Infos zur Netzwerkschnittstelle

Überprüfung der Details der Netzwerkschnittstelle mit Hilfe von’interface_details‘.

SELECT * FROM interface_details;
SELECT interface, mac, ipackets, opackets, ibytes, obytes FROM interface_details;

Details zur Netzwerkschnittstelle

Server-Verfügbarkeit

Überprüfung der Serververfügbarkeit.

SELECT * FROM uptime;

Benutzer prüfen

osqery bietet Detailtabellen zur Überprüfung von Systembenutzern. Wir können die Tabelle „users“ verwenden, um alle Benutzer auf dem System zu überprüfen, die Tabelle „last“, um die letzte Anmeldung der Benutzer zu überprüfen, und die Tabelle „logged_in_users“, um den angemeldeten Benutzer mit der aktiven Shell zu erhalten.

Um alle verfügbaren Benutzer auf dem Server zu überprüfen, verwenden Sie die Tabelle „users“.

SELECT * FROM users;

Für normale Benutzer können wir die uid auf‘>=1000′ festlegen.

SELECT * FROM users WHERE uid>=1000;

Systembenutzerdetails

Um die letzten angemeldeten Benutzer zu überprüfen, verwenden Sie die Tabelle „last“.

SELECT * FROM last;

Letzter Login

Für normale Benutzer füllen Sie“Typ“ bis“7″.

SELECT username, time, host FROM last WHERE type=7;

Nur Details über normale Benutzer anzeigen

Überprüfen Sie den angemeldeten Benutzer mit aktiver Shell und verwenden Sie die Tabellen’logged_in_users‘.

SELECT * FROM logged_in_users;

IP-Tabellen Firewall-Info

Mit der Tabelle „tables“ können wir alle verfügbaren Regeln der Firewall überprüfen, einschließlich der Kette, Richtlinie, src/dst IP und Port usw.

Alle iptables-Regeln anzeigen.

SELECT * FROM iptables;

Geben Sie die Regel mithilfe der benutzerdefinierten Abfrage unten an.

SELECT chain, policy, src_ip, dst_ip FROM iptables WHERE chain="POSTROUTING" order by src_ip;

IP Tables Firewall Info

Prozessinformationen

Wir können den gesamten Bewerbungsprozess anhand der Tabelle „Prozesse“ überprüfen. Es liefert detaillierte Informationen über den Prozess, einschließlich pid, Name, Pfad, Befehl usw.

Basisprozesse abfragen, um alle laufenden Anwendungen zu überprüfen.

SELECT * FROM processes;

Geben Sie Spalten für pid etc., Pfad und den Befehl an.

SELECT pid, name, path, cmdline FROM processes;

Details zu Linux-Prozessen

Cron-Job prüfen

Überprüfen Sie den verfügbaren Cron-Job und die Uhrzeit der Skriptausführung anhand der Tabelle „crontab“.

SELECT * FROM crontab;

Cronjobs

SUID Binärdatei

SUID (Set owner User ID up on execution) ist eine spezielle Art von Dateiberechtigungen, die einer Datei und meist binären ausführbaren Dateien erteilt werden.

Überprüfen Sie alle verfügbaren Binärdateien.

SELECT * FROM suid_bin;

Geben Sie den Benutzernamen und den Gruppennamen an.

SELECT * FROM suid_bin WHERE username="root" AND groupname="nobody" order by path;

Liste der SUID-Dateien

Und all das ist die grundlegende Linux-Systemüberwachung mit osquery.

Referenz

Das könnte Dich auch interessieren …