Syslog è un protocollo di rete molto utilizzato per trasmettere informazioni di log da una serie di computer verso un server predefinito. In genere viene utilizzato all'interno delle reti aziendali per salvare dati provenienti dai più terminali e renderli accessibili all'amministratore di rete. Tecnicamente qualsiasi dispositivo può diventare un Syslog Server, basta appunto configurarlo a dovere. Quest'oggi analizzeremo una configurazione basata su Raspberry Pi. Tale dispositivo è perfetto per questo compito dato che per gestire Syslog non sono necessarie risorse hardware elevate.
L'hardware per il Syslog Server
Per implementare un Syslog Server con Raspberry Pi è ovviamente necessario reperire tale board. Noi vi consigliamo di affidarvi o al modello più recente, il un Raspberry Pi 4 model B da 8GB di RAM (Random Access Memory). Se preferite potete anche optare per Raspberry Pi 3 model B, sempre da 8GB di RAM. Per il sistema operativo bisogna procurarsi una microSD da almeno 64GB. Inoltre serviranno un alimentatore, un cavo ethernet cat 6 e, per la prima configurazione, anche un monitor con cavo HDMI, la tastiera ed il mouse.
Installazione di Raspberry Pi OS
Iniziamo con il download del file ISO della distribuzione Raspberry Pi OS e del tool per eseguire il flash sulla microSD. L'utility da noi scelta per tale compito è Raspberry Pi Imager. Avviamo quindi l'applicativo e clicchiamo su "Choose OS" per indicare al sistema il media d'installazione di Raspberry Pi OS da utilizzare. Premiamo poi il tasto "Choose Storage" per selezionare la microSD inserita nel terminale ed infine, tramite "Write", avviamo la procedura di flash di Raspberry Pi OS.
Il tutto dovrebbe durare qualche minuto. Una volta che la procedura è ultimata scolleghiamo la microSD dal computer ed inseriamola nel Raspberry Pi tramite l'apposito alloggiamento. Ora colleghiamo mouse, tastiera, cavo ethernet e monitor ed infine connettiamo il dispositivo alla corrente elettrica, sfruttando la porta USB-C, per eseguire il primo boot ed il wizard d'installazione del sistema operativo.
La procedura è alla portata di tutti, dunque non ci dilungheremo ulteriormente su un aspetto che può essere svolto completamente in autonomia.
Impostare un IP statico per Raspberry Pi
Per evitare che i dispositivi connessi in rete non riescano più a reperire il Syslog Server è consigliabile impostare un indirizzo IP statico per Raspberry Pi, cosi che il servizio di Syslog sia sempre disponibile ad un indirizzo IP predefinito. Dunque apriamo bash e digitiamo:
ip r | grep default
Come output si dovrebbe ricevere qualcosa di simile:
default via 192.168.1.3 dev eth0 proto dhcp src 192.168.0.179 metric 202
L'IP che ci interessa è 192.168.1.3
, ovvero quello attualmente assegnato dal router, tramite DHCP, a Raspberry Pi. Dopo aver preso nota di tale IP andiamo a verificare il file di configurazione del DNS Server:
sudo nano /etc/resolv.conf
L'output sarà simile al seguente:
# Generated by resolvconf
nameserver 192.168.1.3
Salviamo l'IP dopo la stringa nameserver
e chiudiamo il file con CTRL+X. Ottenuti questi due dati possiamo procedere alla modifica del file dhcpdc.conf
, che si trova nella directory /etc
, cosi da indicare al sistema di mantenere sempre il medesimo IP:
sudo nano /etc/dhcpcd.conf
La configurazione da immettere è questa:
interface <eth0>
static ip_address=<192.168.1.3>/24
static routers=<192.168.1.1>
static domain_name_servers=<8.8.8.8>
Salviamo la modifica con CTRL+O e chiudiamo il file. Quella che abbiamo appena generato è una modifica al file di configurazione di DHCP, il servizio che si occupa di assegnare in automatico l'IP seguendo le istruzioni di un server DHCP o del router. In questo caso abbiamo bypassato tali setting e deciso di attribuire al nostro Raspberry Pi l'indirizzo IP 192.168.1.3
. Con la voce static router
abbiamo indicato invece l'indirizzo IP del nostro router, il gateway, e come DNS abbiamo optato per quelli di Google, 8.8.8.8
, ma è possibile utilizzare anche i DNS aziendali o uno a nostra scelta.
Per rendere effettiva tale modifiche dobbiamo eseguire un reboot del Raspberry Pi. Dopo il riavvio verifichiamo se tutto è andato a buon fine andando a scrivere in bash:
hostname -I
Se come output viene mostrato l'indirizzo IP impostato in precedenza abbiamo fatto tutto nel modo corretto.
Installazione e configurazione di Syslog
Passiamo quindi ad impostare Syslog nel nostro sistema. Procediamo con la sua installazione:
sudo apt install rsyslog
e successivamente iniziamo a configurarlo per i nostri scopi:
sudo nano /etc/rsyslog.conf
Dobbiamo eliminare i commenti, cioè gli hashtag, da queste stringe cosi da abilitare il funzionamento del programma sulla porta 514
:
module(load="imudp")
input(type="imudp" port="514")
module(load="imtcp")
input(type="imtcp" port="514")
Passiamo adesso nella creazione di un nuovo template di Rsyslog in modo da indicare all'applicativo come gestire i messaggi che riceve:
sudo nano /etc/rsyslog.d/Logditest.conf
Nel nuovo file dobbiamo scrivere questa stringa che indica il nome del log e la directory in cui posizionarlo:
$template logditest, "/var/log/logditest.log"
Inoltre per eseguire il routing dei messaggi di Syslog sul nostro template dobbiamo aggiungere questo setting extra:
if $fromhost-ip startswith "192.168.1.3" then -?logditest & stop
Cosi facendo abbiamo indicato l'IP del Raspberry Pi impostato poco prima ed il nome del log: logditest
. Infine salviamo il documento come indicato in precedenza.
Per rendere operative le modifiche è necessario eseguire un riavvio del demone di Syslog tramite l'init system:
sudo systemctl restart rsyslog
Connettersi tramite SSH a Raspberry Pi per leggere i log di Rsyslog
Adesso accertiamoci che il demone di SSH sia operativo:
sudo systemctl enable ssh
sudo systemctl start ssh
A questo punto possiamo scollegare mouse, tastiera e monitor e lasciare lavorare Rsyslog. Quando desideriamo accedere ai log è possibile farlo semplicemente tramite SSH con il nostro terminale principale:
ssh utenteamministratore@192.168.1.3
Spostiamoci poi nella directory dove è ospitato il log generato da Rsyslog:
cd /var/log
se non ricordiamo il nome del file possiamo digitare:
ls -a
ed infine aprirlo tramite un editor di testo:
sudo nano logditest.log
Se ci è utile possiamo anche copiarlo su un altro PC:
scp utenteamministratore@192.168.1.3:/var/log/logditest.log /home/nomeutente/logditest.log