Molto tempo fa, quando ero amministratore di sistema per un'altra azienda su un'altra piattaforma, non avevamo un mezzo per centralizzare i file di registro. La maggior parte delle mattine, quando arrivavo al lavoro, mi versavo una tazza di caffè e passavo dai 20 ai 30 minuti in remoto su ciascun server, rivedendo i registri degli eventi e poi annotando eventuali problemi rilevati. Ti assicuro che questo non era il modo più efficiente per gestire i log. Era, tuttavia, l'unica opzione che avevo.
Linux, tuttavia, utilizza lo strumento syslog basato su Unix per gestire i file di registro locali. La maggior parte delle moderne distribuzioni Linux utilizza effettivamente un demone nuovo e migliorato chiamato rsyslog . rsyslog
è in grado di inoltrare i registri a server remoti. La configurazione è relativamente semplice e consente agli amministratori Linux di centralizzare i file di registro per l'archiviazione e la risoluzione dei problemi. In questo articolo, ti mostro come configurare un server per fungere da repository di file di registro e quindi come configurare i server Linux per inoltrargli i loro registri.
I file di registro sono un componente critico dell'infrastruttura del server. Gli amministratori di sistema utilizzano i file di registro per eseguire molte attività:
- Risoluzione dei problemi
- Verifica dei contratti di servizio (SLA)
- Linea di base
- Manutenzione preventiva
Configura l'host del registro
Farò riferimento al server che ospita i file di registro come host di registro . Questo server potrebbe richiedere alcune configurazioni uniche rispetto ad altri dispositivi Linux. Considera le seguenti impostazioni per il tuo server host di log.
Partizione separata per /var/log
Le linee guida per l'installazione spesso consigliano agli amministratori di montare /var/log
su una partizione separata per evitare che i log fuori controllo riempiano la memoria in cui risiede la radice del filesystem. Tale pratica è fondamentale quando il server riceve file di registro da un gran numero di dispositivi remoti.
File di configurazione
Il vero rsyslog
la configurazione è gestita tramite un file di configurazione in /etc
directory. Dovrai modificare diverse righe. Le impostazioni potrebbero essere leggermente diverse, a seconda della distribuzione. Eseguire il backup del file di configurazione originale, quindi aprire /etc/rsyslog.conf
file con il tuo editor di testo preferito.
Innanzitutto, decommenta le due righe per UDP:
# Provides UDP syslog reception
$ModLoad imudp.so
$UDPServerRun 514
Puoi anche usare TCP come protocollo di trasporto.
# Provides TCP syslog reception
$ModLoad imtcp.so
$InputTCPServerRun 514
Troverai queste righe nella parte superiore del file di configurazione nei Moduli sezione.
Quindi, configura un modello per i log in entrata. Se non configuri un modello, tutte le voci di registro dai server remoti si mescolano con i registri locali del server host di registro.
$template DynamicFile,"/var/log/%HOSTNAME%/forwarded-logs.log"
*.* -?DynamicFile
Questo modello inserisce tutti i registri da un determinato host in una directory denominata per quell'host. Ad esempio, se hai un server denominato WebServer1 , una directory denominata WebServer1
viene creato e tutti i registri di quel server vengono archiviati in quella directory. I modelli sono impostati in un Modelli sezione del file di configurazione. Se non viene definita alcuna sezione specifica, assicurati solo che i modelli siano definiti prima delle Regole .
Ci sono molte diverse opzioni di modelli disponibili online.
Dopo aver decommentato il protocollo del livello di trasporto e impostato un modello, salva le modifiche al file. Non dimenticare di riavviare rsyslog
.
# systemctl restart rsyslog
Firewall
rsyslog
utilizza la porta 514 per la connettività di rete, indipendentemente dal fatto che utilizzi TCP o UDP. È necessario aprire la porta 514 nel firewall sul server host del registro. Supponendo che tu stia utilizzando UDP, la configurazione del firewall è simile a questa:
# firewall-cmd --add-port=514/udp --permanent
# firewall-cmd --reload
Usa il seguente comando per confermare la tua configurazione:
# firewall-cmd --list-all
Logrotate
Potrebbe essere utile configurare logrotate
, anche. logrotate
aiuta gli amministratori a gestire un numero elevato di file di registro implementando l'archiviazione, la compressione, l'eliminazione e altre attività di gestione dei file di registro necessarie. Questo strumento è stato efficacemente trattato da Edem Afenyo nell'articolo Enable Sysadmin Configurazione di Logrotate in Linux, quindi non c'è motivo per me di parlarne qui.
Documentare l'indirizzo IP del server host di log
Usa ifconfig
o ip addr
per documentare l'indirizzo IP del server host del registro. Utilizzerai questo indirizzo nei file di configurazione del client.
Nota bonus :Consiglio di utilizzare gli indirizzi IP nei file di configurazione come /etc/rsyslog.conf
invece dei nomi host. In questo modo si semplifica la configurazione e si rimuove la risoluzione dei nomi dal processo di connessione del computer e dal processo di risoluzione dei problemi dell'amministratore di sistema. Elimina un intero seguito di complessità.
[ Potrebbe piacerti anche: Configurazione di logrotate in Linux ]
Configura un client di registro
Inizierò questa sezione configurando un server Linux di base per inoltrare i suoi file di registro al server host di registro configurato in precedenza. Questa configurazione è un po' più corta. Non dimenticare di eseguire il backup del /etc/rsyslog.conf
originale file.
Apri il /etc/rsyslog.conf
file di configurazione con il tuo editor preferito (preferisco Vim, ma qualunque cosa funzioni per te va bene). Passa alle Regole sezione e creare una nuova riga prima di qualsiasi altra voce. Per essere chiari, stai aggiungendo questa riga prima della struttura .gravità inserimenti. In questo modo tutte le corrispondenze verranno inoltrate al server di destinazione.
Aggiungi le seguenti informazioni, dove IP è l'indirizzo IP del server host del registro:
*.* @IP
Nota :Se stai usando TCP, la sintassi è *.* @@IP
Salva le modifiche nel file di configurazione, quindi riavvia il rsyslog
servizio:
# systemctl restart rsyslog
Verifica la configurazione
Il logger
comando viene utilizzato per creare manualmente una voce del file di registro. Esegui il comando seguente per generare una voce:
# logger Test
Verifica la voce del file di registro utilizzando tail
comando per visualizzare le voci più recenti in /var/log/messages
accedere al server locale:
# tail /var/log/messages
Dovresti vedere il messaggio di prova.
Quindi, passa al server host del registro, quindi visualizza il contenuto di /var/log
:
# ls /var/log
Dovresti vedere una directory denominata per il server remoto che hai configurato. Se ls
il contenuto di quella directory, dovresti vedere i log inoltrati dal server. Puoi usare la tail
comando per visualizzare il contenuto dei registri nella sottodirectory di questo server. Dovresti anche vedere il messaggio Test ripetuto qui.
Configura i tuoi server rimanenti
A questo punto, puoi configurare i tuoi server Linux rimanenti per inoltrare i loro log all'host di log. Potresti distribuire una nuova versione di /etc/rsyslog.conf
file utilizzando rsync, SSH o anche impostare la configurazione con Ansible.
Inoltra registri specifici
Le impostazioni di esempio sopra inoltrano tutti i registri al sistema host dei registri (da cui il *.* sintassi). Puoi scegliere di inoltrare solo voci per singole strutture o inoltrare voci per strutture diverse a server host di log diversi.
Supponiamo che tu voglia inviare cron accede a hostlogserver1 (dove gli amministratori di sistema possono rivedere le voci) e FTP accede a hostlogserver2 (dove gli amministratori di rete possono controllare le voci). La configurazione è simile a questa:
cron.* @10.1.1.15
ftp.* @10.1.1.20
Dove hostlogserver1 ha un indirizzo IP di 10.1.1.15 e hostlogserver2 ha un indirizzo IP di 10.1.1.20 .
Puoi anche inoltrare le stesse voci a due server diversi:
*.* @10.1.1.15
*.* @10.1.1.20
Altre piattaforme
Ricordiamo che nell'introduzione ho sottolineato che questo meccanismo di file di registro è in realtà un sistema Unix, non una funzione specifica per Linux. Ciò significa che può partecipare praticamente qualsiasi dispositivo basato su Unix che conserva i log.
Configura i router per inoltrare i log
Recentemente stavo lavorando nell'ambiente di laboratorio di un cliente che utilizzava un router configurato con VyOS. VyOS è un router basato su Linux, VPN, firewall e distribuzione NAT. Abbiamo usato il processo sopra (modificando il /etc/rsyslog.conf
file di configurazione) per impostare il router in modo che inoltri i propri log a un server centrale. Gli amministratori di rete possono archiviare facilmente router, VPN e altri registri utilizzando rsyslog
.
Un altro sistema operativo utilizzato nell'ambiente di laboratorio era pfSense. pfSense è un sistema operativo derivato da FreeBSD che può anche inoltrare i log a una posizione centrale usando rsyslog
. Ancora una volta, era una configurazione semplice, anche se questa volta avveniva tramite una GUI basata sul Web.
[ Corso online gratuito:panoramica tecnica di Red Hat Enterprise Linux. ]
Concludi
Considera le opzioni disponibili per gli amministratori di sistema con rsyslog
inoltro del registro. Il tuo team di rete potrebbe centralizzare i log per tutti i router interni e perimetrali, le appliance VPN e i firewall. Gli amministratori di sistema potrebbero organizzare i registri in base alle aree di responsabilità o all'area geografica. La centralizzazione può influire sui team di sicurezza, service desk e amministratori del server. rsyslog
è un servizio Linux di base ma essenziale e sfruttare la sua capacità di centralizzare i log ti consente di trarne il massimo.