Ricerca nel sito web

Configura un server di registro centralizzato con Rsyslog in CentOS/RHEL 8


Affinché un amministratore di sistema possa riconoscere o analizzare i problemi su un server CentOS 8 o RHEL 8, è importante conoscere e visualizzare gli eventi che si sono verificati sul server in un particolare periodo di tempo dai file di log trovati nella directory /var/log nel sistema.

Il sistema Syslog (System Logging Protocol) sul server può fungere da punto centrale di monitoraggio dei registri su una rete in cui tutti i server, i dispositivi di rete, gli switch, i router e i servizi interni che creare log, siano essi legati a un particolare problema interno o semplicemente messaggi informativi possono inviare i propri log.

Su un server CentOS/RHEL 8, il demone Rsyslog è il server di registro più importante preinstallato per impostazione predefinita, seguito da Systemd Journal Daemon (giornale).

Rsyslog è un'utilità open source, sviluppata come servizio di architettura client/server e può svolgere entrambi i ruoli in modo indipendente. Può funzionare come server e raccogliere tutti i registri trasmessi da altri dispositivi sulla rete oppure può funzionare come client inviando tutti gli eventi interni del sistema registrati a un server Syslog remoto.

Requisiti

  1. Installazione di “CentOS 8.0″ con screenshot
  2. Installazione di RHEL 8 con screenshot

Per configurare un server di registro centralizzato su un server CentOS/RHEL 8, è necessario verificare e confermare che la partizione /var abbia spazio sufficiente (alcuni GB minimo ) per archiviare tutti i file di registro registrati sul sistema e inviati da altri dispositivi sulla rete. Ti consiglio di avere un'unità separata (LVM o RAID) per montare la directory /var/log/.

Come configurare il server Rsyslog in CentOS/RHEL 8

1. Come ho detto, il servizio Rsyslog è installato e funziona automaticamente nel server CentOS/RHEL 8. Per verificare che il demone sia in esecuzione nel sistema, esegui il comando seguente.

systemctl status rsyslog.service

Se il servizio non è in esecuzione per impostazione predefinita, esegui il comando seguente per avviare il demone rsyslog.

systemctl start rsyslog.service

2. Se l'utilità Rsyslog non è installata per impostazione predefinita sul sistema che intendi utilizzare come server di registrazione centralizzato, esegui il seguente comando dnf per installare il pacchetto rsyslog e avviare il demone.


dnf install rsyslog
systemctl start rsyslog.service

3. Una volta installata l'utilità Rsyslog, ora puoi configurare rsyslog come server di registrazione centralizzato aprendo il file di configurazione principale /etc/rsyslog.conf , per ricevere messaggi di registro per client esterni.

vi /etc/rsyslog.conf

Nel file di configurazione /etc/rsyslog.conf, trova e decommenta le seguenti righe per garantire la ricezione del trasporto UDP al server Rsyslog tramite la porta 514 . Rsyslog utilizza il protocollo standard UDP per la trasmissione dei log.

module(load="imudp") # needs to be done just once
input(type="imudp" port="514")

4. Il protocollo UDP non ha il sovraccarico TCP e rende la trasmissione dei dati più veloce del protocollo TCP. D’altro canto il protocollo UDP non garantisce l’affidabilità dei dati trasmessi.

Tuttavia, se desideri utilizzare il protocollo TCP per la ricezione dei log, devi trovare e decommentare le seguenti righe nel file di configurazione /etc/rsyslog.conf per poter configurare Rsyslog demone per associare e ascoltare un socket TCP sulla porta 514.

module(load="imtcp") # needs to be done just once
input(type="imtcp" port="514")

5. Ora crea un nuovo modello per ricevere messaggi remoti, poiché questo modello guiderà il server Rsyslog locale, dove salvare i messaggi ricevuti inviati dai client di rete Syslog.


$template RemoteLogs,"/var/log/%HOSTNAME%/%PROGRAMNAME%.log" 
*.* ?RemoteLogs

La direttiva $template RemoteLogs guida il demone Rsyslog a raccogliere e scrivere tutti i messaggi di log trasmessi su file distinti, in base al nome del client e all'applicazione client remota che ha creato i messaggi in base alle proprietà descritte aggiunte nel file configurazione del modello: %HOSTNAME% e %PROGRAMNAME%.

Tutti i file di registro ricevuti verranno scritti nel file system locale in un file allocato denominato in base al nome host della macchina client e conservato nella directory /var/log/.

La regola di reindirizzamento & ~ indica al server Rsyslog locale di interrompere ulteriormente l'elaborazione del messaggio di registro ricevuto e di rimuovere i messaggi (non di scriverli nei file di registro interni).

RemoteLogs è un nome arbitrario dato a questa direttiva del template. Puoi utilizzare il nome che preferisci più adatto al tuo modello.

Per configurare modelli Rsyslog più complessi, leggi il manuale del file di configurazione Rsyslog eseguendo il comando man rsyslog.conf o consulta la documentazione online di Rsyslog.

man rsyslog.conf

6. Dopo aver apportato le modifiche alla configurazione di cui sopra, puoi riavviare il demone Rsyslog per applicare le modifiche recenti eseguendo il comando seguente.

service rsyslog restart

7. Dopo aver riavviato il server Rsyslog, ora dovrebbe agire come un server di registro centralizzato e registrare i messaggi dai client Syslog. Per verificare i socket di rete Rsyslog, eseguire il comando netstat e utilizzare l'utilità grep per filtrare la stringa rsyslog.

netstat -tulpn | grep rsyslog 

Se il comando netstat non è installato su CentOS 8, puoi installarlo utilizzando il seguente comando.


dnf whatprovides netstat
dnf install net-tools

8. Se hai SELinux attivo in CentOS/RHEL 8, esegui il seguente comando per consentire il traffico rsyslog in base al tipo di socket di rete.

semanage port -a -t syslogd_port_t -p udp 514
semanage port -a -t syslogd_port_t -p tcp 514

Se il comando semanage non viene installato su CentOS 8, puoi installarlo utilizzando il seguente comando.


dnf whatprovides semanage
dnf install policycoreutils-python-utils

9. Se hai un firewall attivo sul sistema, esegui il comando seguente per aggiungere le regole necessarie per consentire il traffico rsyslog sulle porte in Firewalld.


firewall-cmd --permanent --add-port=514/tcp
firewall-cmd --permanent --add-port=514/udp
firewall-cmd --reload

Puoi anche limitare le connessioni in entrata sulla porta 514 dagli intervalli IP autorizzati come mostrato.


firewall-cmd --permanent --add-rich-rule 'rule family="ipv4" source address="123.123.123.0/21" port port="514" protocol="tcp" accept'
firewall-cmd --permanent --add-rich-rule 'rule family="ipv4" source address="123.123.123.0/21" port port="514" protocol="udp" accept'
firewall-cmd --reload

È tutto! Rsyslog è ora configurato come server di log centralizzato e può raccogliere log da client remoti. Nel prossimo articolo vedremo come configurare il client Rsyslog sul server CentOS/RHEL 8.