Ricerca nel sito web

Come gestire i registri di sistema (configurare, ruotare e importare nel database) in RHEL 7 - Parte 5


Per mantenere sicuri i tuoi sistemi RHEL 7, devi sapere come monitorare tutte le attività che si svolgono su tali sistemi esaminando i file di registro. Pertanto, sarai in grado di rilevare qualsiasi attività insolita o potenzialmente dannosa ed eseguire la risoluzione dei problemi del sistema o intraprendere un'altra azione appropriata.

In RHEL 7, il demone rsyslogd è responsabile della registrazione del sistema e legge la sua configurazione da /etc/rsyslog.conf (questo file specifica la posizione predefinita per tutti i registri di sistema) e dai file all'interno di /etc/rsyslog.d, se presenti.

Configurazione Rsyslogd

Per iniziare sarà utile una rapida ispezione di rsyslog.conf. Questo file è diviso in 3 sezioni principali: Moduli (poiché rsyslog segue un design modulare), direttive Globali (utilizzate per impostare le proprietà globali del demone rsyslogd) e Regole. Come probabilmente indovinerai, quest'ultima sezione indica cosa viene registrato o mostrato (noto anche come selettore) e dove, e sarà il nostro focus in questo articolo.

Una riga tipica in rsyslog.conf è la seguente:

Nell'immagine sopra, possiamo vedere che un selettore è costituito da una o più coppie Facility:Priority separate da punto e virgola, dove Facility descrive il tipo di messaggio (fare riferimento alla sezione 4.1.1 in RFC 3164 per vedere l'elenco completo delle funzionalità disponibili per rsyslog) e la Priorità ne indica la gravità, che può essere una delle seguenti parole autoesplicative:

  1. eseguire il debug
  2. informazioni
  3. avviso
  4. avvertimento
  5. errare
  6. critico
  7. mettere in guardia
  8. emergente

Sebbene non sia una priorità in sé, la parola chiave nessuna significa nessuna priorità per la struttura specificata.

Nota: una determinata priorità indica che tutti i messaggi con tale priorità e superiore dovrebbero essere registrati. Pertanto, la riga nell'esempio sopra indica al demone rsyslogd di registrare tutti i messaggi con informazioni di priorità o superiore (indipendentemente dalla struttura) tranne quelli appartenenti a mail, authpriv e cron (nessun messaggio proveniente da queste strutture verrà preso in considerazione) su /var/log/messages.

Puoi anche raggruppare più strutture utilizzando i due punti per applicare a tutte la stessa priorità. Pertanto, la riga:

*.info;mail.none;authpriv.none;cron.none                /var/log/messages

Potrebbe essere riscritto come

*.info;mail,authpriv,cron.none                /var/log/messages

In altre parole, le strutture mail, authpriv e cron vengono raggruppate e viene applicata la parola chiave none tre di loro.

Creazione di un file di registro personalizzato

Per registrare tutti i messaggi del demone su /var/log/tecmint.log, dobbiamo aggiungere la seguente riga in rsyslog.conf o in un file separato (più facile da gestire ) all'interno di /etc/rsyslog.d:

daemon.*    /var/log/tecmint.log

Riavviamo il demone (nota che il nome del servizio non termina con una d):

systemctl restart rsyslog

E controlla il contenuto del nostro registro personalizzato prima e dopo aver riavviato due demoni casuali:

Come esercizio di autoapprendimento, ti consiglierei di giocare con le strutture e le priorità e di registrare messaggi aggiuntivi nei file di registro esistenti o di crearne di nuovi come nell'esempio precedente.

Rotazione dei registri utilizzando Logrotate

Per evitare che i file di registro crescano all'infinito, l'utilità logrotate viene utilizzata per ruotare, comprimere, rimuovere e, in alternativa, inviare per posta i registri, facilitando così l'amministrazione dei sistemi che generano un gran numero di file di registro.

Lettura consigliata: Come impostare e gestire la rotazione dei registri utilizzando Logrotate in Linux

Logrotate viene eseguito quotidianamente come lavoro cron (/etc/cron.daily/logrotate) e legge la sua configurazione da /etc/logrotate .conf e dai file situati in /etc/logrotate.d, se presenti.

Come nel caso di rsyslog, anche quando puoi includere impostazioni per servizi specifici nel file principale, la creazione di file di configurazione separati per ciascuno ti aiuterà a organizzare meglio le tue impostazioni.

Diamo un'occhiata a un tipico logrotate.conf:

Nell'esempio sopra, logrotate eseguirà le seguenti azioni per /var/loh/wtmp: tenterà di ruotare solo una volta al mese, ma solo se il file è almeno 1 MB di dimensione, quindi crea un nuovo file di registro con le autorizzazioni impostate su 0664 e la proprietà assegnata all'utente root e al gruppo utmp. Successivamente, conserva solo un log archiviato, come specificato dalla direttiva rotate:

Consideriamo ora un altro esempio trovato in /etc/logrotate.d/httpd:

Puoi leggere ulteriori informazioni sulle impostazioni di logrotate nelle sue pagine man (man logrotate e man logrotate.conf). Entrambi i file vengono forniti insieme a questo articolo in formato PDF per comodità di lettura.

Come ingegnere di sistema, spetterà a te decidere per quanto tempo verranno archiviati i log e in quale formato, a seconda che tu abbia /var in una partizione separata /< volume logico. Altrimenti, dovresti davvero prendere in considerazione la rimozione dei vecchi registri per risparmiare spazio di archiviazione. D’altra parte, potresti essere costretto a conservare diversi registri per futuri controlli di sicurezza in base alle politiche interne della tua azienda o del tuo cliente.

Salvataggio dei registri in un database

Naturalmente esaminare i log (anche con l'aiuto di strumenti come grep e le espressioni regolari) può diventare un compito piuttosto noioso. Per questo motivo, rsyslog ci permette di esportarli in un database (gli RDBMS supportati da OTB includono MySQL, MariaDB, PostgreSQL e Oracle.

Questa sezione del tutorial presuppone che tu abbia già installato il server e il client MariaDB nella stessa casella RHEL 7 in cui vengono gestiti i log:

yum update && yum install mariadb mariadb-server mariadb-client rsyslog-mysql
systemctl enable mariadb && systemctl start mariadb

Quindi utilizza l'utility mysql_secure_installation per impostare la password per l'utente root e altre considerazioni sulla sicurezza:

Nota: se non desideri utilizzare l'utente root MariaDB per inserire messaggi di registro nel database, puoi configurare un altro account utente fare così. Spiegare come farlo non rientra nell'ambito di questo tutorial ma è spiegato in dettaglio nella knowledge base di MariaDB. In questo tutorial utilizzeremo l'account root per semplicità.

Successivamente, scarica lo script createDB.sql da GitHub e importalo nel tuo server database:

mysql -u root -p < createDB.sql

Infine, aggiungi le seguenti righe a /etc/rsyslog.conf:

$ModLoad ommysql
$ActionOmmysqlServerPort 3306
*.* :ommysql:localhost,Syslog,root,YourPasswordHere

Riavvia rsyslog e il server del database:

systemctl restart rsyslog 
systemctl restart mariadb

Interrogazione dei log utilizzando la sintassi SQL

Ora esegui alcune attività che modificheranno i log (come l'arresto e l'avvio dei servizi, ad esempio), quindi accedi al tuo server DB e utilizza i comandi SQL standard per visualizzare ed eseguire ricerche nei log:

USE Syslog;
SELECT ReceivedAt, Message FROM SystemEvents;

Riepilogo

In questo articolo abbiamo spiegato come impostare la registrazione del sistema, come ruotare i registri e come reindirizzare i messaggi a un database per una ricerca più semplice. Ci auguriamo che queste competenze ti siano utili durante la preparazione all'esame RHCE e anche nelle tue responsabilità quotidiane.

Come sempre, il tuo feedback è più che benvenuto. Sentiti libero di utilizzare il modulo sottostante per contattarci.