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 rsyslogSe non risulta installato, procedi con:
sudo apt update
sudo apt install rsyslogSubito dopo controlla che il servizio sia attivo:
systemctl status rsyslogStato atteso: active (running). Se il servizio non parte, prima di cambiare configurazioni conviene leggere gli errori recenti:
journalctl -u rsyslog -b --no-pagerSu 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/syslogStato atteso: la riga compare nel file con timestamp, hostname e tag test-rsyslog. Se non compare, verifica questi punti:
- il servizio è davvero attivo con
systemctl is-active rsyslog - il file
/var/log/syslogesiste e viene aggiornato - non ci sono errori di parsing in
journalctl -u rsyslog -b --no-pager
Se vuoi osservare in tempo reale, usa:
tail -f /var/log/syslogQuesta 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.confContenuto di esempio:
kern.* /var/log/kernel.logQuesta regola invia tutti i messaggi del kernel in /var/log/kernel.log. Dopo il salvataggio, verifica la sintassi e ricarica il servizio:
sudo rsyslogd -N1Se il controllo è pulito, applica la modifica:
sudo systemctl restart rsyslogControlla che il file venga creato e popolato:
ls -l /var/log/kernel.log
tail -n 20 /var/log/kernel.logSe 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.confConfigurazione base via TCP:
*.* @@logserver.example.com:514Nota 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 -N1Se non ci sono errori, riavvia il servizio:
sudo systemctl restart rsyslogPer 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:
- genera un messaggio con
logger -t test-rsyslog "verifica finale" - controlla la presenza in
/var/log/syslogo nel file dedicato - verifica la ricezione sul server remoto
- 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 rsyslogAssunzione: 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/.
Commenti (0)
Nessun commento ancora.
Segnala contenuto
Elimina commento
Eliminare definitivamente questo commento?
L'azione non si può annullare.