Come configurare il server di registrazione centrale utilizzando Rsyslog su Ubuntu 20.04

Rsyslog è un’utilità di elaborazione dei log open source. Consente la registrazione di dati provenienti da diversi tipi di sistemi in un repository centrale. Rsyslog è un protocollo Syslog con diverse estensioni, caratteristiche e vantaggi.
Cosa rende rsyslog così potente? Rsyslog può consegnare oltre un milione di messaggi al secondo a destinazioni locali quando viene applicata un’elaborazione limitata.
In questo tutorial impariamo come installare e configurare rsyslog Su Ubuntu 20.04.
Caratteristiche di Rsyslog
Rsyslog è arrivato nel 2004. ed estende il protocollo syslog con nuove funzionalità:
- Supporto per il protocollo RELP
- Supporto per operazioni bufferizzate
- Ascolto di connessioni TCP/UDP (con porta di restrizione, IP)
- Supporto per il caricamento di molti moduli (ad es. modulo per supportare il protocollo RELP)
- Supporto per l’eliminazione di messaggi contenenti regole speciali configurate
In Rsyslog, i file di configurazione rimangono gli stessi di Syslog. Questo significa semplicemente che puoi copiare un file syslog.conf direttamente in rsyslog.conf e funzionerà.
Cosa sono i log e il syslog?
Prima di entrare nel processo di configurazione stesso, vediamo prima a cosa servono i log? Le informazioni di registro possono davvero aiutarti a vedere cosa è successo esattamente sul tuo sistema o cosa sta succedendo esattamente sotto il cofano.
Lascia che ti faccia un esempio: se improvvisamente il tuo computer si è bloccato o forse è andato in crash o anche se il tuo sistema è spento e molte altre informazioni utili che normalmente non puoi vedere quando viene visualizzato il messaggio di errore.
Se sai come utilizzare correttamente i registri, possono fornirti molte funzionalità e vantaggi per le informazioni diagnostiche sul sistema stesso.
Per impostazione predefinita, Linux utilizza il demone syslog per registrare i log su come il sistema è in esecuzione, quindi inserisce questi log in un repository centrale in: /var/log dove possiamo esaminarli e investigarli.
In termini semplici, tutto, dagli eventi del kernel alle azioni dell’utente, viene registrato da Linux, permettendoti di vedere quasi tutte le azioni eseguite sul tuo computer o server.
Nel file system di Linux esiste una directory speciale per l’archiviazione dei registri chiamata /var/log. Questa directory contiene tutti i log del sistema operativo stesso, come: servizi o varie applicazioni in esecuzione sul sistema.
Vediamo come appaiono le strutture di directory e log su Linux Ubuntu 20.04.

Directory in cui sono archiviati diversi tipi di log:
/var/log/syslog – Memorizza tutti i messaggi di avvio, i messaggi di avvio delle app, ecc. Memorizza virtualmente tutti i syslog globali.
/var/log/cron – I lavori Cron sono fondamentalmente una sorta di attività pianificate e automatizzate create nel sistema che vengono eseguite periodicamente e ripetutamente. Puoi vedere cosa memorizzerebbe questa directory di registro.
/var/log/kern.log – memorizza i log del kernel. Non importa quali siano i registri. Registri di eventi, errori o avvisi.
/var/log/auth.log – Registri di autenticazione
/var/log.boot.log – Registri di avvio del sistema
/var/log/mysql.d – Registri Mysql
/var/log/httpd – Directory dei log di Apache
/var/log/maillog – Registri del server di posta elettronica
Configurare il server di registro centralizzato Rsyslog su Ubuntu 20.04
Dopo una breve panoramica, cosa sono i log, Syslog e dove entra in gioco rsyslog, passiamo al processo di configurazione vero e proprio.
Prerequisiti
- Due server che eseguono Ubuntu 20.04
- Un indirizzo IP statico: ad esempio 192.168.0.101 deve essere configurato sul computer server Rsyslog e 192.168.0.102 è configurato sul computer client Rsyslog
Il sistema Ubuntu 20.04 ha rsyslog installato implicitamente fornito con i pacchetti di sistema standard.
Puoi verificare se è in esecuzione:
$ sudo systemctl status rsyslog
● rsyslog.service - System Logging Service
Loaded: loaded (/lib/systemd/system/rsyslog.service; enabled; vendor preset: enabled)
Active: active (running) since Mon 2021-03-22 21:16:34 UTC; 12h ago
TriggeredBy: ● syslog.socket
Docs: man:rsyslogd(8)
https://www.rsyslog.com/doc/
Main PID: 566 (rsyslogd)
Tasks: 4 (limit: 2281)
Memory: 2.7M
CGroup: /system.slice/rsyslog.service
└─566 /usr/sbin/rsyslogd -n -iNONE
Eseguire il comando seguente per verificare la versione di Rsyslog attualmente installata:
$ rsyslogd -v
Produzione:
rsyslogd 8.2001.0 (aka 2020.01) compiled with: PLATFORM: x86_64-pc-linux-gnu PLATFORM (lsb_release -d): FEATURE_REGEXP: Yes GSSAPI Kerberos 5 support: Yes FEATURE_DEBUG (debug build, slow code): No 32bit Atomic operations supported: Yes 64bit Atomic operations supported: Yes memory allocator: system default Runtime Instrumentation (slow code): No uuid support: Yes systemd support: Yes Config file: /etc/rsyslog.conf PID file: /run/rsyslogd.pid Number of Bits in RainerScript integers: 64
Se non è installato o in esecuzione, installa rsyslog utilizzando i seguenti comandi:
$ sudo apt-get update
$ sudo apt-get install rsyslog
Ora è il momento di andare a rsyslog.conf file, per decommentare e modificare alcune righe per eseguire il servizio rsyslog in modalità server:
$ sudo nano /etc/rsyslog.conf
Rimuovere il commento da queste quattro righe che abilitano il binding delle porte udp e tcp:
# provides UDP syslog reception
module(load="imudp")
input(type="imudp" port="514")
# provides TCP syslog reception
module(load="imtcp")
input(type="imtcp" port="514")
Il passaggio successivo che dovremo aggiungere è creare un nuovo modello. Dobbiamo creare un nuovo modello per ricevere messaggi remoti. Un modello istruirà il server rsyslog su come archiviare i messaggi syslog in arrivo.
NOTA: Aggiungi il modello subito prima DIRETTIVE GLOBALI sezione:
$template remote-incoming-logs,"/var/log/%HOSTNAME%/%PROGRAMNAME%.log"
*.* ?remote-incoming-logs
& ~
La riga sopra indica che i log in entrata verranno elaborati e archiviati nella directory /var/log/. È possibile definire nel file /etc/rsyslog.conf dove rsyslog i log.
Il nome del file contiene le variabili %HOSTNAME% e %PROGRAMNAME% rappresentano il nome della macchina client e del programma client che ha prodotto il messaggio di registro.

Salva questo e quindi riavvia il servizio rsyslog:
$ sudo systemctl restart rsyslog
Conferma che il servizio rsyslog è in ascolto sulle porte configurate:
$ ss -tunelp | grep 514
udp UNCONN 0 0 0.0.0.0:514 0.0.0.0:* ino:33591 sk:1 <->
udp UNCONN 0 0 [::]:514 [::]:* ino:33592 sk:4 v6only:1 <->
tcp LISTEN 0 25 0.0.0.0:514 0.0.0.0:* ino:33595 sk:7 <->
tcp LISTEN 0 25 [::]:514 [::]:* ino:33596 sk:9 v6only:1 <->
Se forse disponi di un servizio firewall ufw, devi consentire le regole della porta del firewall rsyslog:
sudo ufw allow 514/tcp
sudo ufw allow 514/udp
a controlla la configurazioneeseguire il seguente comando:
sudo rsyslogd -N1 -f /etc/rsyslog.conf
Configura Rsyslog sul client
Una volta completata questa configurazione del server rsyslog, il passaggio successivo consiste nel configurare la macchina client rsyslog in inviare i log al telecomando server rsyslog.
Mentre andiamo con il file rsyslog.conf su un server remoto, lo stesso file si aprirà sul lato client con il tuo editor preferito e modificherà alcune modifiche:
sudo nano /etc/rsyslog.conf
E consentire la conservazione dell’FQDN: in alternativa, per inviare rsyslog con il nome di dominio completo (FQDN, come system1.example.com) invece del solo nome host (system1), utilizzare la direttiva:
$PreserveFQDN on
Aggiungi il server rsyslog remoto configurato alla fine.
@192.168.0.101:514
Oppure puoi abilitare l’invio dei log tramite UDP. Per TCP usa @@ invece di uno
*.* @@192.168.0.101:514
Infine, aggiungi le seguenti variabili nel caso in cui il server rsyslog si blocchi:
$ActionQueueFileName queue
$ActionQueueMaxDiskSpace 1g
$ActionQueueSaveOnShutdown on
$ActionQueueType LinkedList
$ActionResumeRetryCount -1
Quindi riavviare il servizio rsyslog:
sudo systemctl restart rsyslog
Controlla i log
Al termine della configurazione sul computer client, vogliamo verificare che tutto sia andato a buon fine.
Vai al tuo server Rsyslog per controllare i log dal tuo computer client:
$ ls /var/log/
Troverai qualcosa del genere:

Nel mio caso, la directory denominata obrad è il nome del mio computer client che sto attualmente utilizzando. Andremo in questa directory e vedremo qualcosa del tipo:

Dovresti vedere tutti i file di registro generati da Rsyslog.
Puoi controllare uno qualsiasi di questi log con il seguente comando: Let’s inspect, per esempio systemd.log.
$ tail -f /var/log/obrad/systemd.log
E vedrai qualcosa come:
2021-03-25T11:31:59+00:00 obrad systemd[1206]: Started VTE child process 42166 launched by gnome-terminal-server process 3186.
2021-03-25T11:32:28+00:00 obrad systemd[1206]: Created slice dbusx2d:1.2x2dorg.gnome.gedit.slice.
2021-03-25T11:32:28+00:00 obrad systemd[1206]: Started dbus-:1.2-org.gnome.gedit@0.service.
2021-03-25T11:32:31+00:00 obrad systemd[1206]: dbus-:1.2-org.gnome.gedit@0.service: Succeeded.
Come puoi vedere, ho avviato il terminale e l’editor di testo gedit sul mio computer client e Rsyslog lo ha generato e visualizzato nell’output.
Conclusione
In questo tutorial, abbiamo imparato come configurare i parametri di base per rsyslog utilizzando il modello client-server su Ubuntu 20.04. Syslog-ng, FluentD, Logstash, GreyLog2 e Logagent, Filebeat sono le altre alternative a Rsyslog.