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

So überwachen Sie Ihren Linux-Server mit osquery

Osquery ist eine Open-Source-Software zur Überwachung, Abfrage und Analyse von Betriebssystemen. 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. Osquery ermöglicht es uns, das Betriebssystemprofil, die Leistung, die Sicherheit und viele weitere Metriken 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 Sie den interaktiven Modus „osqueryi“ verwenden und wie Sie ein Live-System mit osquery überwachen.

Voraussetzungen

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

Was wir tun werden

  • Installieren Sie osquery auf dem Linux-Betriebssystem
  • Grundlegende Verwendung des interaktiven osqueryi-Modus
  • Überwachungssystem mit osquery

Schritt 1 – Installieren Sie osquery auf dem Linux-Betriebssystem

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

Auf Ubuntu

Fügen Sie 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ügen Sie 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 Verwendung des interaktiven Modus von osqueryi

osquery stellt den Benutzern zwei Hauptschnittstellen zur Verfügung, osqueryi und osqueryd.

osqueryi ist die interaktive Abfragekonsole von osquery. Es ist wie die 'mysql'-Befehlsshell auf der MySQL- und die 'psql'-Shell auf der PostgreSQL-Datenbank.

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

Geben Sie den 'osqueryi'-Befehl auf dem Server-Terminal ein und Sie erhalten den interaktiven osquery-Konsolenmodus.

osqueryi

Als nächstes lernen wir die grundlegenden Befehle des osqueryi-Konsolenmodus kennen.

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

.help

Zeigt die aktuellen Osquery-Konfigurationen und -Einstellungen an.

.show

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

Jetzt ändern wir den Anzeigemodus der Abfrageergebnisse. Für diese Anleitung verwenden wir den Zeilenmodus.

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

Osquery stellt das Betriebssystem als relationales Datenbanksystem bereit. Alle Informationen über das System werden in den Osquery-Tabellen gespeichert und wir können die gesamten Systeminformationen untersuchen, indem wir alle verfügbaren Tabellen abfragen.

Führen Sie den folgenden Befehl aus, um eine Liste aller verfügbaren Tabellen in der Osquery zu erhalten.

.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 Schemaspalten der Tabelle.

Schritt 3 – Grundlegende Linux-Überwachung mit Abfrage

In diesem Schritt überwachen wir ein Live-Linux-System mit osquery. Wir werden die Systemprofilinformationen, Benutzer, Netzwerkschnittstellen usw. über den interaktiven osqueryi-Modus überwachen.

Systeminformationen abrufen

Details zur Systemhardware anzeigen.

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

Betriebssystemversion abrufen

Zeigt die aktuellen Betriebssysteminformationen an, einschließlich Betriebssystemversion, Plattform, Betriebssystempatch und Codename.

SELECT * FROM os_version;

Kernel-Version und -Module anzeigen

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

Zeigt den vom System verwendeten Kernel an.

SELECT * FROM kernel_info;

Alle geladenen Kernel-Module auf dem System anzeigen.

SELECT * FROM kernel_modules LIMIT 5;

Repository und Pakete prüfen

osquery bietet Tabellen zum Überprüfen von Repositories und installierten Paketen unter Linux Ubuntu und CentOS.

- Auf Ubuntu

Unter Ubuntu können wir die verfügbaren Repositories über „apt_sources“ überprüfen und die installierten Pakete über „deb_packages“ überprüfen.

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

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

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

SELECT * FROM deb_packages;

Nur Paketnamen und Version anzeigen.

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 „yum_sources“ und installierte Pakete über „rpm_packages“ überprüfen.

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

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

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

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

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

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

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

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

Festplatteninformationen bereitstellen

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

Überprüfen Sie alle vom System gemounteten Festplatten.

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

Für den spezifischen 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";

Speicherinfo

Überprüfung des Systemspeichers in Bytes.

SELECT * FROM memory_info;

Informationen zur Netzwerkschnittstelle

Überprüfung der Netzwerkadresse mit 'interface_addresses'.

SELECT * FROM interface_addresses;

Überprüfen der Details der Netzwerkschnittstelle mit 'interface_details'.

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

Server-Betriebszeit

Überprüfen der Serververfügbarkeit.

SELECT * FROM uptime;

Benutzer wird überprüft

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

Um alle verfügbaren Benutzer auf dem Server zu überprüfen, verwenden Sie die 'Benutzer'-Tabelle.

SELECT * FROM users;

Für normale Benutzer können wir die UID auf '>=1000' festlegen.

SELECT * FROM users WHERE uid>=1000;

Um die zuletzt angemeldeten Benutzer zu überprüfen, verwenden Sie die 'last'-Tabelle.

SELECT * FROM last;

Für normale Benutzer füllen Sie „type“ mit „7“ aus.

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

Überprüfen Sie den eingeloggten Benutzer mit aktiver Shell, verwenden Sie die 'logged_in_users'-Tabellen.

SELECT * FROM logged_in_users;

IP-Tabellen-Firewall-Info

Mit der 'Tabellen'-Tabelle können wir alle verfügbaren Regeln der Firewall überprüfen, einschließlich 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;

Prozessinfo

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

Grundlegende Prozessabfrage zur Überprüfung aller laufenden Apps.

SELECT * FROM processes;

Geben Sie Spalten für PID usw., Pfad und den Befehl an.

SELECT pid, name, path, cmdline FROM processes;

Cronjob wird überprüft

Überprüfen Sie den verfügbaren Cron-Job und die Zeit der Skriptausführung mithilfe der 'crontab'-Tabelle.

SELECT * FROM crontab;

SUID-Binärdatei

SUID (Benutzer-ID des Eigentümers bei Ausführung festlegen) ist eine spezielle Art von Dateiberechtigungen, die einer Datei und meist ausführbaren Binärdateien 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 dies ist die grundlegende Linux-Systemüberwachung mit osquery.


Linux
  1. Überwachen Sie Ihren Linux-Server mit Checkmk

  2. Wie überwacht man seinen Linux-Server?

  3. So messen Sie die Leistung Ihres Linux-VPS-Servers

  4. So verwenden Sie OpenSSH, um eine Verbindung zu Ihrem Linux-Server herzustellen

  5. So überwachen Sie die Sicherheit von Linux-Servern mit Osquery

So überwachen Sie Ihre Linux-Server mit Checkmk

So überprüfen Sie Ihre Serverlast im Linux-System

So überprüfen Sie die Betriebszeit Ihres Linux-Servers

So richten Sie einen Rsync-Daemon auf Ihrem Linux-Server ein

Gewusst wie:Verwenden von lsof – 10 grundlegende Befehle zur Fehlerbehebung auf Ihrem Linux-Server

So richten Sie eine Firewall auf Ihrem Linux-Server ein