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.
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
Zeigt die aktuellen Osquery-Konfigurationen und -Einstellungen an.
.show
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
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
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;
Betriebssystem-Version holen
Zeigt die aktuellen Betriebssysteminformationen an, einschließlich der Betriebssystem-Version, Plattform, des Betriebssystem-Patches und des Codenamens.
SELECT * FROM os_version;
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;
Ü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;
Fügen Sie für ein bestimmtes Paket den Namensfilter hinzu.
SELECT name, version FROM deb_packages WHERE name="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;
Ü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";
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";
Speicherinformationen
Überprüfung des Systemspeichers in Bytes.
SELECT * FROM memory_info;
Infos zur Netzwerkschnittstelle
Überprüfung der Netzwerkadresse mit Hilfe von’interface_addresses‘.
SELECT * FROM interface_addresses;
Ü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;
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;
Um die letzten angemeldeten Benutzer zu überprüfen, verwenden Sie die Tabelle „last“.
SELECT * FROM last;
Für normale Benutzer füllen Sie“Typ“ bis“7″.
SELECT username, time, host FROM last WHERE type=7;
Ü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;
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;
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;
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;
Und all das ist die grundlegende Linux-Systemüberwachung mit osquery.