GNU/Linux >> Linux Esercitazione >  >> Linux

Come monitorare il tuo server Linux usando osquery

Osquery è un software open source di monitoraggio, query e analisi del sistema operativo. Creato da Facebook, espone un sistema operativo come un database relazionale ad alte prestazioni che può essere interrogato utilizzando query basate su SQL.

Osquery è un software multipiattaforma, può essere installato su Linux, Windows, MacOS e FreeBSD. Osquery ci consente di esplorare il profilo del sistema operativo, le prestazioni, la sicurezza e molte altre metriche utilizzando query basate su SQL.

In questo tutorial, ti mostrerò come installare osquery sulle distribuzioni Linux Ubuntu 18.04 LTS e CentOS 7. Installeremo osquery, impareremo come utilizzare la modalità interattiva 'osqueryi' e come monitorare un sistema live utilizzando osquery.

Prerequisiti

  • OS Linux (Ubuntu 18.04 o CentOS 7)
  • Privilegi di root

Cosa faremo

  • Installa osquery sul sistema operativo Linux
  • Utilizzo di base della modalità interattiva osqueryi
  • Sistema di monitoraggio tramite osquery

Passaggio 1:installazione di osquery sul sistema operativo Linux

osquery fornisce il proprio repository per ciascuna piattaforma. In questo passaggio, installeremo il pacchetto osquery dal repository ufficiale di osquery.

Su Ubuntu

Aggiungi la chiave osquery.

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

Installa il pacchetto osquery su Ubuntu.

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

Su CentOS

Aggiungi la chiave osquery.

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

Installa il pacchetto osquery su 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

Attendi l'installazione di tutti i pacchetti.

Fase 2 - Utilizzo di base della modalità interattiva osqueryi

osquery fornisce due interfacce principali per gli utenti, osqueryi e osqueryd.

osqueryi è la console di query interattiva osquery. È come la shell dei comandi "mysql" su MySQL e la shell "psql" sul database PostgreSQL.

In questo passaggio impareremo l'utilizzo di base della modalità interattiva 'osqueryi'.

Digita il comando 'osqueryi' sul terminale del server e otterrai la modalità console interattiva osquery.

osqueryi

Successivamente, impareremo i comandi di base della modalità console osqueryi.

Mostra tutti i comandi di base disponibili nella modalità interattiva osqueryi.

.help

Mostra le attuali configurazioni e impostazioni di osquery.

.show

Osquery offre più modalità di visualizzazione per mostrare i risultati della query. La modalità predefinita è la modalità "carino".

Ora cambieremo la modalità di visualizzazione dei risultati della query, per questa guida utilizzeremo la modalità "linea".

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

Osquery espone il sistema operativo come un sistema di database relazionale. Tutte le informazioni sul sistema sono memorizzate nelle tabelle osquery e possiamo esplorare le informazioni sull'intero sistema interrogando tutte le tabelle disponibili.

Per ottenere un elenco di tutte le tabelle disponibili in osquery, esegui il comando seguente.

.tables

Una volta che conosciamo tutte le tabelle disponibili nel sistema osquery, esamineremo le colonne.

Utilizzare il comando seguente per ottenere lo schema (colonne, tipi) delle tabelle.

.schema users
.schema processes

E otterrai tutte le colonne dello schema della tabella.

Passaggio 3 - Monitoraggio Linux di base tramite query

In questo passaggio, monitoreremo un sistema Linux live utilizzando osquery. Monitoreremo le informazioni sul profilo del sistema, gli utenti, le interfacce di rete ecc. attraverso la modalità interattiva osqueryi.

Ottieni informazioni di sistema

Mostra dettagli sull'hardware del sistema.

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

Ottieni la versione del sistema operativo

Mostra le informazioni sul sistema operativo corrente, inclusa la versione del sistema operativo, la piattaforma, la patch del sistema operativo e il nome in codice.

SELECT * FROM os_version;

Visualizza versione del kernel e moduli

Per controllare le informazioni sul kernel del sistema, osquery fornisce le tabelle 'kernel_info' e 'kernel_modules'.

Mostra il kernel utilizzato dal sistema.

SELECT * FROM kernel_info;

Mostra tutti i moduli del kernel caricati sul sistema.

SELECT * FROM kernel_modules LIMIT 5;

Controllo di repository e pacchetti

osquery fornisce tabelle per il controllo dei repository e dei pacchetti installati sia su Linux Ubuntu che su CentOS.

- Su Ubuntu

Su Ubuntu, possiamo controllare i repository disponibili tramite 'apt_sources' e controllare i pacchetti installati tramite 'deb_packages'.

Controlla tutti i repository Ubuntu disponibili.

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

Controlla tutti i pacchetti installati usando la tabella deb_packages.

SELECT * FROM deb_packages;

Mostra solo il nome del pacchetto e la versione.

SELECT name, version FROM deb_packages ORDER BY name;

Per un pacchetto specifico, aggiungi il filtro del nome.

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

- Su CentOS

Su CentOS, possiamo controllare il repository disponibile tramite 'yum_sources' e controllare i pacchetti installati tramite 'rpm_packages'.

Controlla tutti i repository CentOS disponibili.

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

Verifica il repository abilitato aggiungendo il filtro 'abilitato'.

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

Controlla tutti i pacchetti installati usando la tabella rpm_packages.

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

Per un nome di pacchetto specifico, aggiungi il filtro del nome.

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

Monta informazioni sul disco

Possiamo utilizzare la tabella dei mount per controllare tutti i dettagli sull'unità di sistema, inclusi inode gratuiti, flag, tipo ecc.

Controlla tutti i dischi montati dal sistema.

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

Per il tipo specifico di dispositivo.

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

Informazioni sulla memoria

Controllo della memoria di sistema in byte.

SELECT * FROM memory_info;

Informazioni sull'interfaccia di rete

Controllo dell'indirizzo di rete utilizzando 'interface_addresses'.

SELECT * FROM interface_addresses;

Verifica dei dettagli dell'interfaccia di rete utilizzando 'interface_details'.

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

Tempo di attività del server

Controllo del tempo di attività del server.

SELECT * FROM uptime;

Controllo utente

osqery fornisce tabelle di dettaglio per il controllo degli utenti del sistema. Possiamo usare la tabella 'users' per controllare tutti gli utenti sul sistema, usando la tabella 'last' per controllare l'ultimo login degli utenti e usando 'logged_in_users' per ottenere l'utente che ha effettuato l'accesso con la shell attiva.

Per controllare tutti gli utenti disponibili sul server, utilizza la tabella "utenti".

SELECT * FROM users;

Per gli utenti normali, possiamo specificare l'uid su '>=1000'.

SELECT * FROM users WHERE uid>=1000;

Per controllare gli ultimi utenti di accesso, usa la tabella 'last'.

SELECT * FROM last;

Per gli utenti normali, inserisci "digita" fino a "7".

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

Verificando l'utente che ha effettuato l'accesso con la shell attiva, usa le tabelle 'logged_in_users'.

SELECT * FROM logged_in_users;

Informazioni firewall tabelle IP

Con la tabella 'tabelle', possiamo controllare tutte le regole disponibili del firewall, inclusi catena, policy, IP src/dst e porta ecc.

Mostra tutte le regole di iptables.

SELECT * FROM iptables;

Specifica la regola utilizzando la query personalizzata di seguito.

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

Informazioni sul processo

Possiamo controllare tutto il processo di richiesta utilizzando la tabella 'processi'. Fornisce informazioni dettagliate sul processo inclusi pid, nome, percorso, comando ecc.

Query sui processi di base per controllare tutte le app in esecuzione.

SELECT * FROM processes;

Specifica le colonne per pid ecc., il percorso e il comando.

SELECT pid, name, path, cmdline FROM processes;

Controllo Cron Job

Controlla il lavoro cron disponibile e il tempo di esecuzione dello script utilizzando la tabella 'crontab'.

SELECT * FROM crontab;

File binario SUID

SUID (Imposta l'ID utente del proprietario durante l'esecuzione) è un tipo speciale di autorizzazioni di file concesse a un file e principalmente a file eseguibili binari.

Controlla tutti i file binari disponibili.

SELECT * FROM suid_bin;

Specificare il nome utente e il nome del gruppo.

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

E tutto quanto sopra è il monitoraggio di base del sistema Linux tramite osquery.


Linux
  1. Monitora il tuo server Linux con Checkmk

  2. Come monitorare il tuo server Linux?

  3. Come misurare le prestazioni sul tuo server VPS Linux

  4. Come utilizzare OpenSSH per connettersi al tuo server Linux

  5. Come monitorare la sicurezza del server Linux con Osquery

Come monitorare i tuoi server Linux con Checkmk

Come controllare il carico del server nel sistema Linux

Come controllare il tempo di attività del tuo server Linux

Come configurare un demone Rsync sul tuo server Linux

Procedura:Utilizzo di lsof – 10 comandi essenziali per risolvere i problemi del server Linux

Come configurare un firewall sul tuo server Linux