51 06/04/2026 07/04/2026 6 min

Installazione di rsyslog su Ubuntu 22.04

Su Ubuntu 22.04 rsyslog è il demone standard per la raccolta e la distribuzione dei log di sistema. In molti casi è già presente, ma conviene verificare il pacchetto e lo stato del servizio prima di toccare la configurazione.

Obiettivo operativo: avere un sistema che scrive correttamente in /var/log, applica regole personalizzate e, se serve, inoltra i log verso un server centrale senza rompere il logging locale.

Verifica rapida della presenza del pacchetto:

dpkg -l | grep rsyslog

Se non risulta installato, procedi con:

sudo apt update
sudo apt install rsyslog

Subito dopo controlla che il servizio sia attivo:

systemctl status rsyslog

Stato atteso: active (running). Se il servizio non parte, prima di cambiare configurazioni conviene leggere gli errori recenti:

journalctl -u rsyslog -b --no-pager

Su una macchina Ubuntu standard, l’installazione non richiede passaggi aggiuntivi: il pacchetto porta con sé il servizio systemd, la configurazione base in /etc/rsyslog.conf e gli include in /etc/rsyslog.d/.

Come funziona la struttura di configurazione

La configurazione di rsyslog su Ubuntu è divisa in due livelli:

  • file principale: /etc/rsyslog.conf
  • file modulari: /etc/rsyslog.d/*.conf

La buona pratica è non mettere le personalizzazioni direttamente nel file principale, salvo casi di laboratorio. Usa invece un file dedicato in /etc/rsyslog.d/, così hai maggiore tracciabilità e rollback più semplice.

Prima di modificare qualsiasi cosa, salva un backup della configurazione:

sudo cp /etc/rsyslog.conf /etc/rsyslog.conf.bak.$(date +%F)

Se stai lavorando su un file dedicato, il backup è ancora più semplice:

sudo cp /etc/rsyslog.d/50-custom.conf /etc/rsyslog.d/50-custom.conf.bak.$(date +%F)

Questa è la base per un change controllato: cambi un solo file, testi la sintassi, riavvii il servizio solo se la validazione è pulita.

Verifica del logging locale

Prima di aggiungere regole complesse, verifica che rsyslog stia ricevendo e scrivendo log localmente. Il controllo più semplice è generare un messaggio di test con logger:

logger -t test-rsyslog "messaggio di prova"

Ora cerca il messaggio nei log di sistema, ad esempio in /var/log/syslog:

grep test-rsyslog /var/log/syslog

Stato atteso: la riga compare nel file con timestamp, hostname e tag test-rsyslog. Se non compare, verifica questi punti:

  1. il servizio è davvero attivo con systemctl is-active rsyslog
  2. il file /var/log/syslog esiste e viene aggiornato
  3. non ci sono errori di parsing in journalctl -u rsyslog -b --no-pager

Se vuoi osservare in tempo reale, usa:

tail -f /var/log/syslog

Questa verifica è importante prima di introdurre regole personalizzate: se il logging locale non funziona, il problema va risolto lì, non dopo.

Creare una regola base personalizzata

Per una configurazione pulita, crea un file dedicato in /etc/rsyslog.d/, ad esempio /etc/rsyslog.d/50-custom.conf. Un caso semplice è separare i messaggi del kernel in un file dedicato:

sudo nano /etc/rsyslog.d/50-custom.conf

Contenuto di esempio:

kern.*    /var/log/kernel.log

Questa regola invia tutti i messaggi del kernel in /var/log/kernel.log. Dopo il salvataggio, verifica la sintassi e ricarica il servizio:

sudo rsyslogd -N1

Se il controllo è pulito, applica la modifica:

sudo systemctl restart rsyslog

Controlla che il file venga creato e popolato:

ls -l /var/log/kernel.log
tail -n 20 /var/log/kernel.log

Se vuoi una regola più mirata, puoi filtrare per programma. Ad esempio, per salvare i messaggi di un servizio specifico in un file dedicato, usa una sintassi coerente con il formato supportato dalla tua versione di rsyslog e valida sempre con rsyslogd -N1 prima del riavvio.

Abilitare il logging remoto in modo sicuro

rsyslog può inoltrare i log verso un server centrale. La scelta più semplice è usare il forwarding TCP con TLS quando disponibile, così eviti l’invio in chiaro sulla rete.

Per inviare tutti i log a un server remoto, crea un file dedicato come /etc/rsyslog.d/60-forward.conf:

sudo nano /etc/rsyslog.d/60-forward.conf

Configurazione base via TCP:

*.* @@logserver.example.com:514

Nota operativa: @ indica UDP, @@ indica TCP. Per un ambiente serio, preferisci TCP e, quando possibile, TLS. Se il server remoto richiede certificati, la configurazione va estesa con i parametri di sicurezza appropriati e con la validazione dei certificati lato client e lato server.

Dopo aver inserito la regola, valida la configurazione:

sudo rsyslogd -N1

Se non ci sono errori, riavvia il servizio:

sudo systemctl restart rsyslog

Per verificare il forwarding, controlla sia il lato client sia il lato server. Sul client, cerca eventuali errori di connessione:

journalctl -u rsyslog -b --no-pager | grep -i -E 'error|fail|warn'

Sul server remoto, verifica che il listener sia attivo e che arrivino eventi nel file o nella coda configurata. Se usi una porta non standard, assicurati che firewall e rete consentano il traffico in ingresso.

Configurazione sicura con TLS

Per evitare che i log viaggino in chiaro, la soluzione corretta è usare TLS. In questo caso servono certificati validi, trust chain corretta e una configurazione coerente tra client e server.

In pratica devi verificare almeno questi punti:

  • il server remoto ascolta su una porta TLS dedicata
  • il certificato del server è firmato da una CA attendibile dal client
  • il client punta al nome DNS corretto del server
  • la rete consente la connessione verso la porta configurata

Se la tua infrastruttura usa una CA interna, distribuisci il certificato CA sul client e fai riferimento al percorso corretto nella configurazione rsyslog. Dopo ogni modifica, esegui sempre la validazione sintattica con rsyslogd -N1 e controlla i log del servizio se la connessione non si stabilisce.

Se TLS non è ancora disponibile, valuta il forwarding TCP come soluzione temporanea, ma trattalo come eccezione e non come stato finale.

Test finale e manutenzione

Dopo aver configurato regole locali e remote, esegui un test end-to-end:

  1. genera un messaggio con logger -t test-rsyslog "verifica finale"
  2. controlla la presenza in /var/log/syslog o nel file dedicato
  3. verifica la ricezione sul server remoto
  4. controlla eventuali errori in journalctl -u rsyslog -b --no-pager

Se tutto è corretto, conserva la configurazione in file separati sotto /etc/rsyslog.d/ e documenta il motivo di ogni regola. Questo semplifica il rollback e riduce gli errori quando il sistema cresce.

Per il rollback, basta rimuovere o rinominare il file di override e riavviare il servizio:

sudo mv /etc/rsyslog.d/60-forward.conf /etc/rsyslog.d/60-forward.conf.disabled
sudo systemctl restart rsyslog

Assunzione: l’ambiente usa la configurazione standard di Ubuntu 22.04, con systemd attivo e accesso amministrativo per installare pacchetti e modificare i file in /etc/rsyslog.d/.