GNU/Linux >> Linux Esercitazione >  >> Debian

Installa un server di log centralizzato con Rsyslog in Debian 9

In Linux, i file di registro sono file che contengono messaggi sulle funzioni di sistema utilizzati dagli amministratori di sistema per identificare eventuali problemi sulle macchine. I registri aiutano gli amministratori a visualizzare gli eventi che si sono verificati nel sistema in periodi di tempo. Di solito, tutti i file di registro vengono conservati in /var/log directory in Linux. In questa posizione sono disponibili diversi tipi di file di registro per la memorizzazione di vari messaggi, come un file di registro per la registrazione di eventi di sistema, un file di registro per i messaggi relativi alla sicurezza, altri file di registro dedicati al kernel, agli utenti o ai lavori cron. Lo scopo principale dei file di registro è quello 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, i file di registro sono anche controllati e gestiti dal servizio di sistema journald, che fa parte del programma di inizializzazione di systemd. I log archiviati dal demone journal sono scritti in formato binario e sono principalmente volatili, archiviati nella RAM e in un buffer ad anello in /run/log/journal/. Tuttavia, il servizio journal può anche essere configurato per archiviare in modo permanente i messaggi Syslog.

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

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

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

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

La struttura filter è rappresentato dal sottosistema interno di Linux che produce i log. Sono classificati come presentato di seguito:

  • auth/authpriv =messaggi prodotti dai processi di autenticazione
  • cron =log relativi alle attività cron
  • demone =messaggi relativi ai servizi di sistema in esecuzione
  • kernel =Messaggi del kernel Linux
  • posta =messaggi del server di posta
  • syslog =messaggi relativi a syslog o altri demoni (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 priorità o gravità i livelli sono assegnati a una parola chiave e a un numero come descritto di seguito.

  • emerge =Emergenza – 0
  • avviso =Avvisi – 1
  • err =Errori – 3
  • avviso =Avvertenze – 4
  • avviso =Notifica – 5
  • informazioni =Informazioni – 6
  • debug =Debug – 7 livelli più alti

Sono disponibili anche alcune parole chiave Rsyslog speciali come l'asterisco (* ) segno per definire tutte
strutture o priorità, il nessuno parola chiave che non specificano priorità, il segno di uguale (= ) che seleziona solo quella priorità e il punto esclamativo (! ) che nega una priorità.

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

Configura Rsyslog come 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

In distribuzioni basate su RHEL come CentOS:

sudo yum install rsyslog

Per verificare se il demone Rsyslog è stato avviato su un sistema, esegui i comandi seguenti, a seconda della versione della tua distribuzione.

Sulle distribuzioni Linux più recenti con systemd:

stato systemctl rsyslog.service

Nelle versioni precedenti di Linux con init:

stato del servizio rsyslog
/etc/init.d/rsyslog status

Per avviare il demone rsyslog, esegui il comando seguente.

Nelle versioni precedenti di Linux con init:

avvio del servizio rsyslog
/etc/init.d/rsyslog start

Sulle ultime distribuzioni Linux:

systemctl avvia rsyslog.service

Per impostare un programma rsyslog per l'esecuzione 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 il commento rimuovendo l'hashtag (#) dalle righe seguenti per consentire la ricezione dei messaggi di registro UDP sulla porta 514. Per impostazione predefinita, la porta UDP viene utilizzata da syslog per inviare-ricevere messaggi.

$ModLoad imudp 
$UDPServerRun 514

Poiché il protocollo UDP non è affidabile per lo scambio di dati su una rete, è possibile configurare Rsyslog per inviare messaggi di registro a un server remoto tramite il protocollo TCP. Per abilitare il protocollo di ricezione TCP, apri /etc/rsyslog.conf archiviare e decommentare le seguenti righe come mostrato di seguito. Ciò consentirà al demone rsyslog di eseguire il binding e l'ascolto su un socket TCP sulla porta 514.

$ModLoad imtcp 
$InputTCPServerRun 514

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

Se vuoi specificare a quali mittenti permetti l'accesso al demone rsyslog, aggiungi la seguente riga dopo le righe del protocollo abilitato:

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

Sarà inoltre necessario creare un nuovo modello che verrà analizzato dal demone rsyslog prima di ricevere i log in arrivo. Il modello dovrebbe indicare al server Rsyslog locale dove archiviare i messaggi di registro in arrivo. Definisci il modello subito dopo $AllowedSender linea come mostrato nell'esempio seguente.

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

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

kern.*   ?Log in entrata

I log ricevuti vengono analizzati dal modello di cui sopra e verranno archiviati nel file system locale nella directory /var/log/, in file che prendono il nome dalla struttura client del nome host del client che ha prodotto i messaggi:%HOSTNAME% e %PROGRAMNAME% variabili.

Il sotto &~ la regola di reindirizzamento configura il demone 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 il file /var/log/syslog.

Per aggiungere una regola per eliminare tutti i messaggi di registro correlati alla posta, puoi utilizzare la seguente istruzione.

posta.* ~

Altre variabili che possono essere utilizzate per generare nomi di file sono:%syslogseverity%, %syslogfacility%, %timegenerated%, %HOSTNAME%, %syslogtag%, %msg%, %FROMHOST-IP%, %PRI%, %MSGID%, %APP-NAME%, %TIMESTAMP%, %$year%, %$month%, %$day%

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

Un esempio di modello della 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 puoi scrivere il modello sopra può essere anche quella mostrata di seguito:

template(name="MyTemplate" type="list") {
    constant(value="/var/log/")
    property(name="fromhost-ip")
    constant(value="/")
    property(name="programname" SecurePath="replace")
    constant(value=".log")
    }

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

riavvio del servizio sudo rsyslog
sudo systemctl riavvia rsyslog

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

sudo netstat –tulpn | grep rsyslog

Tieni presente che devi anche aprire le porte Rsyslog nel firewall per consentire la creazione di connessioni in entrata.

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

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

Nelle distribuzioni basate su Debian con firewall UFW attivo emettere i seguenti comandi:

ufw consente 514/tcp
ufw allow 514/udp

Regole del firewall di Iptables:

iptables -A INPUT -p tcp -m tcp --dport 514 -j ACCEPT
iptables -A INPUT -p udp --dport 514 -j ACCEPT

Configura Rsyslog come client

Per consentire l'esecuzione del demone rsyslog in modalità client e l'output di messaggi di registro 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 inviare tutti i registri interni a un server Rsyslog distante sulla porta UDP 514.

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

*. *  @@IP_reomte_syslog_server:514

Per inviare solo i registri relativi a cron con tutte le priorità su un server rsyslog, utilizzare 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 bufferato su disco, fino a quando il server non è online.

Coda $ActionQueueFileName
$ActionQueueMaxDiskSpace 1g
$ActionQueueSaveOnShutdown on
$ActionQueueType LinkedList
$ActionResumeRetryCount -1

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


Debian
  1. Come configurare il server Rsyslog su Debian 11

  2. Come installare Redis Server su Debian 11

  3. Come installare HTTP Git Server con Nginx su Debian 11

  4. Installa WordPress con database remoto su Debian

  5. Installa Cockpit su Debian 9

Installa WordPress 5 con Apache su Debian 9

Come monitorare i file di registro con Graylog v3.1 su Debian 10

Come installare MySQL 8 su Debian 10

Come installare il server FTP vsftpd con TLS su Debian 10

Gestione centralizzata dei log installando rsyslog su Debian 11!

Come installare Nginx con PHP-FPM su Debian 11