Graylog

Graylog è un’applicazione linux che permette di registrare i log provenienti dai device di una rete. Graylog è molto di più di un syslog server come rsyslog. Elenco alcune caratteristiche chiave che rendono fruibile questo prodotto.

  • Input: ovviamente può ascoltare i messaggi sulla classica porta 514udp ma puoi avere diversi imput in modo da differenziare i tuoi dispositivi anche a seconda di quel che possono inviare: mi spiego meglio, se hai uno switch HP 1920 hai poco da giocare, imposti l’ip del server e lui invia quello che il progettista del software ha programmato e via; ma se hai un sistema più complesso, come ad esempio un server linux o peggio una macchina Windows ti piacerebbe ‘forse’ ricevere solo le cose che reputi interessanti o/e magari con certi livelli di priorità, quindi potrebbe essere meglio usare un collector che possa inviare ‘solo’ le cose che reputi interessanti e magari in tcp e non in udp. Ad esempio puoi usare WinFileBeat che comunica con il server in porta 5044/tcp e quindi Graylog ti permette di aprire una porta in ascolto compatibile con quel collector.
  • Gli Stream sono delle regole che ti permettono di isolare gli eventi registrati in modo da esaminare solo le source (il dispositivo che invia i log) che ti interessano in quel momento attraverso un semplice meccanismo di regole e di input. Riassumendo uno stream si collega ad un input e attraverso delle regole estrae solo quello che ti interessa. Puo’ essere usato anche per ridirigere la registrazione su un set di indici dedicati con una politica di cancellazione diversa dalla default.
  • Gli Alert sono come dice il nome degli avvisi quado si verifica qualcosa che vale la pesa evidenziare all IT. Ti faccio un esempio banalissimo: se normalmente ricevi 1000 eventi all’ora potresti essere interessato se gli eventi nell’ultima ora sono 2000
  • Dashboard sono delle particolari visualizzazioni che ti permettono di salvare delle query correate da grafici e dati in modo da poterle richiamare quando vuoi, come ad esempio una dashboard che ti visualizza il numero di eventi nelle ultime 24 ore per sorgente
  • Sidecar: è forse la caratteristica più eclatante di Graylog. E’ possibile avere la gestione centralizzata degli agent che inviano i log attraversoil collector. Mi soffermo su sidecar in quanto è secondo me un ottimo modo per collezionare i log provenienti da Windows filtrando solo gli eventi interessanti per i nostri scopi. In sostanza sidecar è ‘solo’ un’applicazione che gira sulla macchina della quale vogliamo raccogliere i log che ogni pochi secondi controlla sul server Graylog se esiste una nuova configurazione per il collettore di eventi. Per spiegarsi meglio, nel caso di una macchina Windows Sidecar (agent di management) e WinLogBeat (agent collector) sono installati sulla macchina Windows. Il compito di sidecar è lanciare/fermare/riconfigurare il servizio WinLogBeat presente sulla macchina Windows. Quindi abbiamo un sistema dal quale posso riconfigurare gli agenti collettori dei log in modo da istruirli in modo da farmi arrivare solo gli eventi interessanti o che reputo tali. Questo potrebbe sembrare poco importante ma considerando installazioni con centinaia di macchine Windows (con collettore WinLogBeat)oppure Linux (con collettore FileBeat) posso riconfigurare in pochi secondi tutto il sistema di collezione dei log. Posso inoltre avere diversi file di configurazione con i quali posso fare dei test solo su alcune macchine per verificare che la configurazione funzioni correttamente. E anche se invio un file di configurazione che blocca il collector, non e’ un problema, dalla console vedo che il collector non sta funzionando e posso riconfigurarlo attraverso il sidecar. Tieni a mente che tutto ciò è gratuito e open source.
  • Politiche di ritenzione degli eventi: i dati vengono immagazinati nello storage ma occorre che ci sia una politica di cancellazione degli stessi in modo da essere compliants con GDPR (o privacy) e comunque per non saturare lo storage. Graylog scrive su un database basato su Elastic che chima indici. Un indice viene chiuso quando raggiunge un certo numero di byte oppure di eventi al suo interno. Puoi configurare quanti indici mantenere sul tuo storage, di norma un indice viene chiuso quando hai 20 milioni di eventi (che Graylog chiama docs) e sempre di default hai uno storico di 20 indici, quando arriva al numero 20 gli indici ruotano cancellando il più vecchio. Inoltre puoi avere indici dedicati ad un particolare input: metti caso che c’e’ un dispositivo che (per ragioni allucinanti che non so dirti ma se chiedi al tuo DPO ti spiegherà) devi mantenere solo per 3 indici da 1000 eventi ciascuno, puoi fare in modo di avere un’altra politica di storage che cancellera’ i tuoi indici con quel criterio. Questa caratteristica si ottiene attraverso gli stream.

Installazione su Windows in modalità silent:

graylog_sidecar_installer_1.0.0-1.exe /S -SERVERURL=http:/put.your.ip.here:9000/api -APITOKEN=yourapitoken

"C:\Program Files\graylog\sidecar\graylog-sidecar.exe" -service install
"C:\Program Files\graylog\sidecar\graylog-sidecar.exe" -service start

Installazione su linux Redhat/CentOS/Rocky/Alma

Bisogna installare sia il sidecar che il filebeat che sarebbe il collector:

[root@mario~]# rpm -Uvh graylog-sidecar-1.2.0-1.x86_64.rpm
Verifying… ################################# [100%]
Preparing… ################################# [100%]
Updating / installing…
1:graylog-sidecar-1.2.0-1 ################################# [100%]

graylog-sidecar -service install
systemctl enable graylog-sidecar
systemctl start graylog-sidecar

[root@mario ~]# rpm -Uvh filebeat-8.5.2-x86_64.rpm
warning: filebeat-8.5.2-x86_64.rpm: Header V4 RSA/SHA512 Signature, key ID d88e42b4: NOKEY
Verifying… ################################# [100%]
Preparing… ################################# [100%]
Updating / installing…
1:filebeat-8.5.2-1 ################################# [100%]

Poi bisogna configurare Sidecar per connettersi al server graylog con la propria API editando il file:

[root@mario ~]# vi /etc/graylog/sidecar/sidecar.yml

Semplicemente inserire in questo file, nelle prime righe l’ip del server e la API generata precedentemente.