Il caricamento dei registri su un host remoto ci consente di centralizzare i report per più di un dispositivo e di conservare un backup dei report per la ricerca nel caso in cui qualcosa non riesca impedendoci di accedere ai registri localmente.
Questo tutorial mostra come configurare un server remoto per ospitare i registri e come inviare questi registri dai dispositivi client e come classificare o dividere i registri nelle directory per host client.
Per seguire le istruzioni puoi utilizzare un dispositivo virtuale, ho preso un VPS di livello gratuito da Amazon (se hai bisogno di aiuto per configurare un dispositivo Amazon, hanno degli ottimi contenuti dedicati su LinuxHint all'indirizzo https://linuxhint.com/categoria/aws/). Nota che l'IP pubblico del server è diverso dal suo IP interno.
Prima di iniziare:
Il software utilizzato per inviare i log in remoto è rsyslog, viene fornito di default su Debian e distribuzioni Linux derivate, nel caso in cui non lo si esegue:
# sudo apt install rsyslogPuoi sempre controllare lo stato di rsyslog eseguendo:
# sudo service rsyslog status
Come puoi vedere lo stato sullo screenshot è attivo, se il tuo rsyslog non è attivo puoi sempre avviarlo eseguendo:
# sudo service rsyslog startO
# systemctl avvia rsyslog
Nota: Per ulteriori informazioni su tutte le opzioni per gestire i servizi Debian, controlla Arrestare, avviare e riavviare i servizi su Debian.
L'avvio di rsyslog non è rilevante in questo momento perché dovremo riavviarlo dopo aver apportato alcune modifiche.
Come inviare i log di Linux a un server remoto: il lato server
Prima di tutto, sul server modifica il file /etc/resyslog.conf usando nano o vi:
# nano /etc/rsyslog.conf
All'interno del file, decommenta o aggiungi le seguenti righe:
modulo (carica = "imudp")input (tipo = "imudp" porta = "514")
modulo(load="imtcp")
input (tipo = "porta imtcp" = "514")
Sopra la ricezione dei log non commentati o aggiunti tramite UDP e TCP, è possibile consentire solo uno di essi o entrambi, una volta decommentati o aggiunti sarà necessario modificare le regole del firewall per consentire i log in ingresso, per consentire la ricezione dei log tramite l'esecuzione TCP:
# ufw allow 514/tcp
Per consentire l'esecuzione dei log in entrata tramite il protocollo UDP:
# ufw allow 514/udp
Per consentire tramite TCP e UDP eseguire i due comandi sopra.
Nota: per maggiori informazioni su UFW puoi leggere Lavorare con i firewall Debian (UFW).
Riavvia il servizio rsyslog eseguendo:
# sudo service rsyslog riavvio
Ora continua sul client per configurare l'invio dei log, quindi torneremo al server per migliorare il formato.
Come inviare i log di Linux a un server remoto: lato client
Sui log di invio client aggiungere la seguente riga, sostituendo l'IP 18.223.3.241 per l'IP del tuo server.
*.* @@18.223.3.241:514
Esci e salva le modifiche premendo CTRL +X.
Una volta modificato riavviare il servizio rsyslog eseguendo:
# sudo service rsyslog riavvio
Lato server:
Ora puoi controllare i log all'interno di /var/log, quando li apri noterai fonti miste per il tuo log, l'esempio seguente mostra i log dall'interfaccia interna di Amazon e dal client Rsyslog (Montsegur):
Uno zoom lo mostra chiaramente:
Avere file misti non è comodo, di seguito modificheremo la configurazione di rsyslog per separare i log in base alla fonte.
Per discriminare i log all'interno di una directory con il nome dell'host del client aggiungere le seguenti righe al server /etc/rsyslog.conf per istruire rsyslog su come salvare i log remoti, per farlo all'interno di rsyslog.conf aggiungi le righe:
$template RemoteLogs,"/var/log/%HOSTNAME%/.registro"*.* ?RemoteLogs
& ~
Uscire dal salvataggio delle modifiche premendo CTRL + X e riavviare nuovamente rsyslog sul server:
# sudo service rsyslog riavvio
Ora puoi vedere nuove directory, una chiamata ip-172.31.47.212 che è l'interfaccia interna di AWS e altre chiamate "montsegur" come il client rsyslog.
All'interno delle directory puoi trovare i log:
Conclusione:
Il logging remoto offre un'ottima soluzione a un problema che può far crollare i servizi se lo storage del server si riempie di log, come detto all'inizio, è anche un must in alcuni casi in cui il sistema può subire gravi danni senza consentire l'accesso ai log , in questi casi un server di log remoto garantisce l'accesso sysadmin alla cronologia del server.
L'implementazione di questa soluzione è tecnicamente piuttosto semplice e persino gratuita considerando che non sono necessarie risorse elevate e server gratuiti come i livelli gratuiti di AWS sono utili per questa attività, se si aumenta la velocità di trasferimento dei registri è possibile consentire solo il protocollo UDP (nonostante la perdita di affidabilità). Esistono alcune alternative a Rsyslog come: Flume o Sentry, ma rsyslog rimane lo strumento più popolare tra gli utenti Linux e gli amministratori di sistema.
Spero che tu abbia trovato utile questo articolo su Come inviare i log di Linux a un server remoto.