Installa un server di log centralizzato con Rsyslog in Debian 9

 

In Linux, i file di registro sono file che contengono messaggi relativi alle funzioni di sistema utilizzate dagli amministratori di sistema per identificare eventuali problemi sulle macchine. I log aiutano gli amministratori a visualizzare gli eventi accaduti nel sistema in periodi di tempo. Di solito, tutti i file di registro sono tenuti sotto / Var / log directory in Linux. In questa posizione sono disponibili diversi tipi di file di registro per l'archiviazione di vari messaggi, ad esempio un file di registro per la registrazione degli eventi di sistema, un file di registro per i messaggi relativi alla sicurezza, altri file di registro dedicati per il kernel, gli utenti oi lavori cron. Lo scopo principale dei file di registro è di risolvere i problemi di sistema. La maggior parte dei file di registro in Linux sono controllati dal servizio rsyslogd. Nelle versioni più recenti delle distribuzioni Linux, anche i file di registro sono controllati e gestiti dal servizio del sistema journald, che fa parte del programma di inizializzazione del sistema. I log memorizzati dal journal daemon sono scritti in un formato binario e sono principalmente volatili, memorizzati nella RAM e in un ring-buffer in / run / log / journal /. Tuttavia, il servizio journal può essere configurato anche per memorizzare in modo permanente i messaggi Syslog.

In Linux, il server rsyslog può essere configurato per eseguire un gestore di registri centralizzato, in modo modello di client di servizio, e inviare messaggi di registro sulla rete tramite protocolli di trasporto TCP o UDP o ricevere registri da dispositivi di rete, server, router, switch o altri sistemi o dispositivi incorporati che generano registri.

Il daemon Rsyslog può essere configurato per essere eseguito come client e server contemporaneamente. Configurato per l'esecuzione come server, Rsyslog ascolterà sulla porta predefinita 514 TCP e UDP e inizierà a raccogliere i messaggi di registro inviati in rete dai sistemi remoti. Come client, Rsyslog invierà tramite la rete i messaggi di registro interni a un server Ryslog remoto tramite le stesse porte TCP o UDP.

Rsyslog filtrerà i messaggi syslog in base alle proprietà e azioni selezionate. I filtri rsyslog sono i seguenti:

  1. Filer di strutture o priorità
  2. Filtri basati su proprietà
  3. Filtri basati su espressioni

La rotta facilità il filtro è rappresentato dal sottosistema interno Linux che produce i log. Sono classificati come presentato di seguito:

  • auth / authpriv = messaggi prodotti dai processi di autenticazione
  • cron= registri relativi alle attività di cron
  • demone = messaggi relativi ai servizi di sistema in esecuzione
  • Kernel = Messaggi del kernel Linux
  • mail = messaggi del server di posta
  • syslog = messaggi relativi a syslog o altri daemon (il server DHCP invia i log qui)
  • LPR = stampanti o messaggi del server di stampa
  • locale0 - locale7 = messaggi personalizzati sotto il controllo dell'amministratore

La rotta priorità o gravità i livelli sono assegnati a una parola chiave e un numero come descritto di seguito.

  • emerg = Emergenza - 0
  • allarme = Avvisi - 1
  • sbagliare = Errori - 3
  • avvertire = Avvisi - 4
  • bacheca = Notifica - 5
  • info = Informazioni - 6
  • mettere a punto = Debugging - 7 livello più alto

Ci sono anche alcune parole chiave Rsyslog speciali disponibili come l'asterisco (*) firmare per definire tutto
strutture o priorità, il nessuna parola chiave che non specifica priorità, il segno di uguale (=) che seleziona solo quella priorità e il punto esclamativo (!) che nega una priorità.

La parte di azione del syslog è rappresentata dal destinazione dichiarazione. La destinazione di un messaggio di registro può essere un file memorizzato nel file system, un file in / var / log / percorso di sistema, un altro input di processo locale tramite una named pipe o FIFO. I messaggi di log possono anche essere indirizzati agli utenti, scartati in un buco nero (/ dev / null) o inviati a stdout o a un server syslog remoto tramite il protocollo TCP / UDP. I messaggi di log possono anche essere memorizzati in un database, come MySQL o PostgreSQL.

Configura Rsyslog come un server

Il demone Rsyslog viene installato automaticamente nella maggior parte delle distribuzioni Linux. Tuttavia, se Rsyslog non è installato sul tuo sistema, puoi emettere uno dei seguenti comandi per installare il servizio> avrai bisogno dei privilegi di root per eseguire i comandi.

Nelle distribuzioni basate su Debian:

sudo apt-get install rsyslog

Nelle distribuzioni basate su RHEL come CentOS:

sudo yum installa rsyslog

Per verificare se il demone Rsyslog è avviato su un sistema, eseguire i comandi sottostanti, a seconda della versione di distribuzione.

Su nuove distribuzioni Linux con systemd:

status systemctl rsyslog.service

Nelle versioni Linux precedenti con init:

servizio rsyslog stato

/etc/init.d/rsyslog stato

Per avviare il daemon rsyslog, emettere il seguente comando.

Nelle versioni Linux precedenti con init:

servizio rsyslog start

/etc/init.d/rsyslog start

Sulle ultime distribuzioni Linux:

systemctl avvia rsyslog.service

Per configurare un programma rsyslog da eseguire in modalità server, modificare il file di configurazione principale in /etc/rsyslog.conf. In questo file apporta le seguenti modifiche come mostrato nell'esempio seguente.

sudo vi /etc/rsyslog.conf

Individuare e rimuovere i commenti rimuovendo l'hashtag (#) dalle seguenti righe per consentire la ricezione dei messaggi di registro UDP sulla porta 514. Per impostazione predefinita, la porta UDP viene utilizzata da syslog per inviare e ricevere messaggi.

$ ModLoad imudp $ UDPServerRun 514

Poiché il protocollo UDP non è affidabile per lo scambio di dati su una rete, è possibile impostare Rsyslog per inviare messaggi di registro a un server remoto tramite il protocollo TCP. Per abilitare il protocollo di ricezione TCP, aprire /etc/rsyslog.conf file e rimuovere il commento dalle seguenti righe come mostrato di seguito. Ciò consentirà al demone rsyslog di collegarsi e ascoltare su un socket TCP sulla porta 514.

$ ModLoad imtcp $ InputTCPServerRun 514

Entrambi i protocolli possono essere abilitati in rsyslog per essere eseguiti contemporaneamente.

Se si desidera specificare a quali mittenti si autorizza l'accesso al daemon rsyslog, aggiungere la seguente riga dopo le linee del protocollo abilitate:

$ AllowedSender TCP, 127.0.0.1, 10.110.50.0 / 24, * .yourdomain.com

Sarà inoltre necessario creare un nuovo modello che verrà analizzato dal daemon rsyslog prima di ricevere i registri in entrata. Il modello dovrebbe indicare al server Rsyslog locale dove memorizzare i messaggi di registro in entrata. Definire il modello subito dopo $ AllowedSender linea come mostrato nel seguente esempio.

$ in entrata-logs, "/ var / log /% HOSTNAME% /% PROGRAMNAME% .log" 
*. *  ? Registri in arrivo & ~

Per registrare solo i messaggi generati dalla funzione kern, utilizzare la seguente sintassi.

kern. *? Incoming-logs

I log ricevuti vengono analizzati dal modello precedente e verranno archiviati nel file system locale nella directory / var / log /, in file denominati in base alla struttura client del client hostname che ha prodotto i messaggi: % HOSTNAME% e %NOME DEL PROGRAMMA% variabili.

Il seguente & ~ la regola di reindirizzamento configura il daemon Rsyslog per salvare i messaggi di registro in entrata solo nei file sopra specificati dai nomi delle variabili. In caso contrario, i registri ricevuti verranno ulteriormente elaborati e archiviati anche nel contenuto dei registri locali, come ad esempio il file / var / log / syslog.

Per aggiungere una regola per eliminare tutti i messaggi di log correlati alla posta, è possibile utilizzare la seguente dichiarazione.

mail. * ~

Altre variabili che possono essere utilizzate per l'output dei nomi di file sono:% syslogseverity%,% syslogfacility%,% timegenerated%,% HOSTNAME%,% syslogtag%,% msg%,% FROMHOST-IP%,% PRI%,% MSGID%, % APP-NAME%,% TIMESTAMP%,% $ anno%,% $ mese%,% $ giorno%

A partire dalla versione 7 di Rsyslog, è possibile utilizzare un nuovo formato di configurazione per dichiarare un modello in un server Rsyslog.

Un esempio di modello di versione 7 può apparire come mostrato nelle righe seguenti.

template (name = "MyTemplate" type = "string" string = "/ var / log /% FROMHOST-IP% /% PROGRAMNAME ::: secpath-replace% .log")

Un'altra modalità in cui è possibile scrivere il modello sopra può anche essere la seguente:

template (name = "MyTemplate" type = "list") {constant (value = "/ var / log /") proprietà (name = "fromhost-ip") costante (valore = "/") proprietà (name = "nomeprogramma "SecurePath =" replace ") constant (value =". Log ")} 

Per applicare le modifiche apportate al file di configurazione rsyslog, è necessario riavviare il daemon per caricare la nuova configurazione.

riavvio del servizio sudo rsyslog

sudo systemctl restart rsyslog

Per verificare quali socket rsyslog in stato di ascolto sono aperti su un sistema Debian Linux, è possibile eseguire netstat comando con privilegi di root. Passare i risultati tramite un'utilità di filtro, ad esempio grep.

sudo netstat -tulpn | grep rsyslog

Tenere presente che è necessario aprire anche le porte Rsyslog nel firewall per consentire la creazione di connessioni in ingresso.

Nelle distribuzioni basate su RHEL con il problema attivato Firewalld i seguenti comandi:

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

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

firewall-cmd -reload

Nelle distribuzioni basate su Debian con il problema attivo del firewall UFW, i seguenti comandi:

ufw consentire 514 / tcp

ufw consentire 514 / udp

Regole del firewall Iptables:

iptables -A INPUT -p tcp -m tcp --dport 514 -j ACCETTA

iptables -A INPUT -p udp --dport 514 -j ACCETTA

Configura Rsyslog come client

Per abilitare il daemon rsyslog per l'esecuzione in modalità client e l'output di messaggi di log locali su un server Rsyslog remoto, modificare /etc/rsyslog.conf file e aggiungi una delle seguenti righe:

*. * @IP_REMOTE_RSYSLOG_SERVER: 514

*. * @FQDN_RSYSLOG_SERVER: 514

Questa riga consente al servizio Rsyslog di generare tutti i log interni su un server Rsyslog remoto sulla porta UDP 514.

Per inviare i registri tramite il protocollo TCP, utilizzare il seguente modello:

*. * @@ IP_reomte_syslog_server: 514

Per stampare solo i registri cron associati con tutte le priorità a un server rsyslog, usa il modello seguente:

cron. * @ IP_reomte_syslog_server: 514

Nei casi in cui il server Rsyslog non è raggiungibile tramite rete, aggiungere le righe seguenti al file /etc/rsyslog.conf sul lato client per archiviare temporaneamente i registri in un file su disco, fino a quando il server non è in linea.

$ ActionQueueFileName queue $ ActionQueueMaxDiskSpace 1g $ ActionQueueSaveOnShutdown su $ ActionQueueType LinkedList $ ActionResumeRetryCount -1

Per applicare le regole di cui sopra, il daemon Rsyslog deve essere riavviato per funzionare come client.

Fonte