Ricerca nel sito web

Come configurare il client Rsyslog per inviare registri al server Rsyslog in CentOS 7


La gestione dei log è uno dei componenti più critici in un'infrastruttura di rete. I messaggi di log vengono costantemente generati da numerosi software di sistema, come utilità, applicazioni, demoni, servizi relativi alla rete, kernel, dispositivi fisici e così via.

I file di registro si rivelano utili in caso di risoluzione dei problemi del sistema Linux, monitoraggio del sistema ed esame della forza e dei problemi di sicurezza del sistema.

Rsyslog è un programma di registrazione Open Source, che è il meccanismo di registrazione più popolare in un gran numero di distribuzioni Linux. È anche il servizio di registrazione predefinito in CentOS 7 o RHEL 7.

Il demone Rsyslog in CentOS può essere configurato per essere eseguito come server per raccogliere messaggi di registro da più dispositivi di rete. Questi dispositivi fungono da client e sono configurati per trasmettere i propri registri a un server rsyslog.

Tuttavia il servizio Rsyslog può essere configurato e avviato anche in modalità client. Questa configurazione indica al demone rsyslog di inoltrare i messaggi di registro a un server Rsyslog remoto utilizzando i protocolli di trasporto TCP o UDP. Il servizio Rsyslog può anche essere configurato per essere eseguito come client e come server contemporaneamente.

In questo tutorial descriveremo come configurare un demone Rsyslog CentOS/RHEL 7 per inviare messaggi di registro a un server Rsyslog remoto. Questa configurazione garantisce che lo spazio su disco della macchina possa essere preservato per l'archiviazione di altri dati.

Il luogo in cui quasi tutti i file di registro vengono scritti per impostazione predefinita in CentOS è il percorso di sistema /var. È inoltre consigliabile creare sempre una partizione separata per la directory /var, che può essere ampliata dinamicamente, in modo da non esaurire la partizione /(root).

Un client Rsyslog invia sempre i messaggi di registro in testo semplice, se non specificato diversamente. Non dovresti configurare un client Rsyslog per trasmettere messaggi di registro su Internet o reti che non sono sotto il tuo completo controllo.

Requisiti

  1. Procedura di installazione di CentOS 7.3
  2. RHEL 7.3 Procedura di installazione
  3. Configurare un server Rsyslog in CentOS/RHEL 7

Passaggio 1: verificare l'installazione di Rsyslog

1. Per impostazione predefinita, il demone Rsyslog è già installato e in esecuzione in un sistema CentOS 7. Per verificare se il servizio rsyslog è presente nel sistema, emettere i seguenti comandi.

rpm -q | grep rsyslog
rsyslogd -v

2. Se il pacchetto Rsyslog non è installato in CentOS, esegui il comando seguente per installare il servizio.

yum install rsyslog

Passaggio 2: configurare il servizio Rsyslog come client

3. Per imporre al demone Rsyslog installato su un sistema CentOS 7 di agire come client di registro e instradare tutti i messaggi di registro generati localmente a un server Rsyslog remoto, modificare il file di configurazione rsyslog come segue:

Per prima cosa apri il file di configurazione principale per la modifica.

vi /etc/rsyslog.conf

Quindi, aggiungi la riga seguente alla fine del file, come illustrato nell'estratto seguente.

*. *  @192.168.10.254:514

Nella riga precedente assicurati di sostituire di conseguenza l'indirizzo IP dell'FQDN del server rsyslog remoto. La riga precedente indica al demone Rsyslog di inviare tutti i messaggi di registro, indipendentemente dalla struttura o dalla gravità, all'host con l'IP 192.168.10.254 tramite la porta 514/UDP.

4. Se il server di registro remoto è configurato per ascoltare solo su connessioni TCP o desideri utilizzare un protocollo di rete di trasporto affidabile, come TCP, aggiungi un altro carattere @ davanti dell'host remoto come mostrato nell'esempio seguente:

*. *  @@logs.domain.lan:514

Il rsyslog di Linux consente anche di avere alcuni caratteri speciali, come = o !, che possono essere preceduti dai livelli di priorità per indicare "solo questa priorità " per il segno di uguale e "non questa priorità o superiore a questa ".

Alcuni esempi di qualificatori del livello di priorità Rsyslog in CentOS 7:

  • kern.info=log del kernel con priorità informazioni e superiore.
  • kern.=info=solo messaggi del kernel con priorità info.
  • kern.info;kern.!err=solo messaggi del kernel con priorità di informazioni, avvisi e avvisi.
  • kern.debug;kern.!=warning=tutte le priorità del kernel tranne warning.
  • kern.*=tutti i messaggi di priorità del kernel.
  • kern.none=non registra alcun messaggio relativo alle funzionalità del kernel indipendentemente dalla priorità.

Ad esempio, supponendo che tu voglia inviare solo messaggi di una struttura specifica a un server di registro remoto, come tutti i messaggi di posta correlati indipendentemente dal livello di priorità, aggiungi la riga seguente al file di configurazione rsyslog:

mail.* @192.168.10.254:514 

5. Infine, per applicare la nuova configurazione, il servizio Rsyslog deve essere riavviato affinché il demone possa rilevare le modifiche, eseguendo il comando seguente:

systemctl restart rsyslog.service

6. Se per qualche motivo il demone Rsyslog non è abilitato durante l'avvio, emettere il comando seguente per abilitare il servizio a livello di sistema:

systemctl enable rsyslog.service

Passaggio 3: invia i registri Apache e Nginx a un server di registro remoto

7. Il server HTTP Apache può essere configurato per inviare messaggi di log a un server syslog remoto aggiungendo la seguente riga al suo file di configurazione principale come illustrato nell'esempio seguente.

vi /etc/httpd/conf/httpd.conf

Nel file di configurazione principale di Apache aggiungi la riga seguente.

CustomLog "| /bin/sh -c '/usr/bin/tee -a /var/log/httpd/httpd-access.log | /usr/bin/logger -thttpd -plocal1.notice'" combined

La linea imporrà al demone HTTP di scrivere i messaggi di registro internamente nel file di registro del filesystem, ma elaborerà anche ulteriormente i messaggi attraverso un'utilità pipe to logger, che li invierà a un server syslog distante, contrassegnandoli come provenienti dal local1 facilità.

8. Se desideri indirizzare anche i messaggi del registro degli errori Apache a un server syslog remoto, aggiungi una nuova regola come quella presentata nell'esempio precedente, ma assicurati di sostituire il nome del file di log httpd e il livello di gravità del file di log in modo che corrisponda alla priorità dell'errore, come mostrato nell'esempio seguente:

ErrorLog "|/bin/sh -c '/usr/bin/tee -a /var/log/httpd/httpd-error.log | /usr/bin/logger -thttpd -plocal1.err'"

9. Dopo aver aggiunto le righe precedenti, è necessario riavviare il demone Apache per applicare le modifiche, emettendo il seguente comando:

systemctl restart httpd.service                 

10. A partire dalla versione 1.7.1, il server web Nginx ha funzionalità integrate per registrare direttamente i suoi messaggi su un server syslog remoto, aggiungendo le seguenti righe di codice in un file di configurazione nginx.

error_log syslog:server=192.168.1.10:514,facility=local7,tag=nginx,severity=error;
access_log syslog:server=192.168.10.254:514,facility=local7,tag=nginx,severity=info main;

Per un server IPv6, utilizza il seguente formato di sintassi per racchiudere l'indirizzo IPv6.

access_log syslog:server=[7101:dc7::9]:514,facility=local7,tag=nginx,severity=info;

11. Sul server Rsyslog remoto è necessario apportare la seguente modifica al file di configurazione rsyslog, per ricevere i log inviati dal server web Apache.

local1.* @Apache_IP_address:514

È tutto! Hai configurato con successo il demone Rsyslog per l'esecuzione in modalità client e, inoltre, hai indicato al server Apache HTTP o Nginx di inoltrare i suoi messaggi di registro a un server syslog remoto.

In caso di arresto anomalo del sistema, dovresti essere in grado di indagare sul problema controllando il contenuto dei file di registro archiviati sul server syslog remoto.