In questa guida andremo a scoprire come installare e configurare un server Syslog su Raspberry Pi o su qualsiasi altro dispositivo con a bordo una distribuzione GNU/Linux.

Syslog è un protocollo utilizzato da vari sistemi informatici per inviare i registri (file di log) a un server syslog centralizzato, in maniera tale da avere tutti i log in unico punto e salvarli in caso di riavvio del dispositivo, poiché solitamente dispositivi come i modem/router, dopo un riavvio, perdono i log.

Tale protocollo è supportato da anni su svariati modelli di modem/router, quindi dovrebbe essere piuttosto semplice attivarlo. Dovrebbe essere presente anche sui NAS, a prescindere dal modello e dalla marca, poiché è una funzionalità piuttosto standard.

In questo tutorial, utilizzeremo il software open-source rsyslog che è installato di default su diverse distribuzioni GNU/Linux ed è uno dei più utilizzati. Solitamente viene utilizzato per gestire i file di log in /var/log/ ed effettuarne la rotazione su base giornaliera, settimanale o mensile.

Requisiti

Premesso che in questa guida ci focalizzeremo su distribuzioni GNU/Linux basate su Debian (come Ubuntu o Raspberry Pi OS), i requisiti per questo progetto sono piuttosto facili da soddisfare:

  • Raspberry PI dal modello 1 in poi (o dispositivo equivalente, sia esso un mini-PC, un vecchio computer o una board equivalente tipo un Banana Pi o simili);
  • Diversi GB di spazio libero su disco, questo soprattutto per archiviare i log per periodi di tempo più lunghi, suggerirei almeno 8 GB di spazio liberi;
  • Connettività via Ethernet o Wi-Fi.

Preparazione all’installazione del server Syslog

Prima di proseguire, dovremmo accertarci di aver impostato un indirizzo IP statico sul dispositivo che intendiamo utilizzare come server Syslog. La procedura è piuttosto semplice e varia in base alla distribuzione GNU/Linux che avete installato. C’è un esempio nella guida su come installare Debian Server. Alternativamente, è possibile assegnare un indirizzo IP statico direttamente dal vostro modem/router.

Fatto questo, possiamo procedere con i seguenti passi:

1. Come sempre, prima di procedere, è bene aggiornare l’elenco dei pacchetti disponibili e installare gli ultimi aggiornamenti per la nostra distribuzione Debian-based (Debian, Ubuntu, Raspberry Pi OS, ecc.):

sudo apt update && sudo apt upgrade -y

2. Dopodiché procediamo, qualora non fosse già stato installato sul sistema (ad esempio su Debian, se si utilizza la ISO netinstall che è super minimalista, non viene solitamente installato), procediamo con l’installazione del pacchetto rsyslog:

sudo apt install -y rsyslog

Configurazione di Rsyslog come server

Ora che il nostro dispositivo è pronto, possiamo finalmente procedere con la configurazione del software Rsyslog per agire come un server syslog.

Abilitare la ricezione di messaggi esterni su Rsyslog

Per continuare, dobbiamo modificare la configurazione di Rsyslog in modo che si metta in ascolto di messaggi sulla porta 514.

Se utilizzi un firewall (ad esempio UFW), ricordati di abilitare il traffico in ingresso sulla porta 514 sia per UDP che per TCP, ad esempio eseguendo:

sudo ufw allow 514/tcp && sudo ufw allow 514/udp

1. Per impostazione predefinita, Rsyslog non è configurato per ascoltare eventuali messaggi syslog provenienti dalla rete.

Per modificare questo comportamento, dobbiamo apportare modifiche al file di configurazione del software.

Iniziamo a modificare il file di configurazione utilizzando l’editor di nano testo eseguendo il seguente comando:

sudo nano /etc/rsyslog.conf

2. All’interno di questo file, è necessario trovare e de-commentare le seguenti righe.

Puoi de-commentare le righe in questione rimuovendo il cancelletto (#) davanti a loro.

#module(load="imudp")
#input(type="imudp" port="514")

#module(load="imtcp")
#input(type="imtcp" port="514")

Una volta fatte le modifiche, le righe in questione dovrebbero apparire come segue:

module(load="imudp")
input(type="imudp" port="514")

module(load="imtcp")
input(type="imtcp" port="514")

In questo modo, stiamo riconfigurando il software rsyslog per consentire la ricezione di messaggi syslog tramite i protocolli UDP e TCP sul nostro dispositivo GNU/Linux.

3. Possiamo quindi salvare e uscire premendo CTRL + X, seguito da Y e poi il tasto ENTER.

Creazione di un nuovo template per Rsyslog

Ora che il nostro server syslog su Raspberry Pi è configurato per accettare messaggi esterni, dobbiamo creare un template.

Questo template indicherà a Rsyslog dove instradare i messaggi ricevuti. Per questo, è necessario conoscere l’indirizzo IP del dispositivo.

1. Creiamo un file di configurazione all’interno della directory /etc/rsyslog.d.

Qualsiasi file di configurazione che scriviamo all’interno di questa directory verrà caricato automaticamente da Rsyslog in fase di avvio.

All’interno di questo file, definiremo il template per instradare i vari messaggi ricevuti verso un file di log locale.

In questo esempio, chiameremo il file ModemLog.conf ma puoi scegliere qualsiasi nome tu voglia, basta che il file termini con l’estensione .conf

sudo nano /etc/rsyslog.d/ModemLog.conf

2. All’interno di questo file, avremo bisogno di inserire alcune nuove righe.

La prima cosa che faremo è definire un nuovo template, che utilizza il formato seguente e indica al server syslog dove salvare i log:

$template NomeDelTemplate, "DirectoryDoveSonoILog/nomeFileDiLog.log

Nel nostro caso, daremo a questo template il nome modemlog e andremo a salvare i file di log in /var/log/modem.log

$template modemlog, "/var/log/modem.log"

3. Per indirizzare i messaggi syslog al nostro nuovo template, dobbiamo fare qualche configurazione extra.

Dovrai quindi sostituire INDIRIZZO-IP-DA-USARE con l’IP del dispositivo da cui ti aspetti di ricevere i messaggi syslog.

Inoltre, dovrai anche sostituire nometemplate con il nome che hai specificato nel passaggio precedente.

if $fromhost-ip startswith "INDIRIZZO-IP-DA-USARE" then -?nometemplate
& stop

Nel nostro caso, utilizzeremo l’indirizzo IP 192.168.1.1 e il nome del template modemlog

if $fromhost-ip startswith "192.168.1.1" then -?modemlog
& stop

4. Una volta fatto, il file dovrebbe apparire come riportato di seguito:

$template modemlog, "/var/log/modem.log"

if $fromhost-ip startswith "192.168.1.1" then -?modemlog
& stop

Come sempre, salviamo e usciamo premendo CTRL + X poi Y seguito dal tasto ENTER.

Riavvio di rsylog per applicare le modifiche

Ora che abbiamo configurato il nostro server syslog per ricevere messaggi esterni, dobbiamo riavviarlo.

Per farlo, procederemo riavviando il servizio in modo che carichi tutte le modifiche effettuate dalla nostra configurazione.

Digitiamo quindi il seguente comando nel terminale:

sudo systemctl restart rsyslog

Prossimi passi e conclusione

A questo punto, dovresti aver configurato con successo il tuo Raspberry Pi o dispositivo GNU/Linux equivalente come server syslog.

Tutto quello che devi fare ora è abilitare il protocollo syslog sul dispositivo da cui vuoi salvare i log sul tuo Raspberry Pi (nel nostro esempio era un Modem/Router con IP 192.168.1.1, basterà quindi accedervi, trovare le impostazioni di Syslog, attivarlo e inserire l’indirizzo IP del Raspberry Pi).

Il Raspberry Pi inizierà a ricevere i messaggi di log dal dispositivo, salvandoli nel file di registro specificato nel template.

Se hai problemi a farlo funzionare, lascia pure un commento qui sotto.

Inoltre, se ti va, dai pure un’occhiata ai nostri altri interessanti progetti.

Rispondi