Cum să configurați serverul central de logare cu Rsyslog în Linux


Jurnalele sunt o componentă critică a oricărui software sau sistem de operare. Jurnalele înregistrează de obicei acțiunile utilizatorului, evenimentele de sistem, activitatea în rețea și multe altele, în funcție de ceea ce sunt destinate. Unul dintre cele mai utilizate sisteme de înregistrare pe sistemele Linux este rsyslog.

Rsyslog este un sistem de procesare a jurnalelor puternic, sigur și de înaltă performanță, care acceptă date din diferite tipuri de surse (sisteme/aplicații) și le trimite în mai multe formate.

Acesta a evoluat de la un daemon obișnuit de syslog la un sistem complet de înregistrare la nivel de întreprindere. Este proiectat într-un model client/server, prin urmare poate fi configurat ca client și/sau ca server central de înregistrare pentru alte servere, dispozitive de rețea și aplicații la distanță.

Mediul de testare

În scopul acestui ghid, vom folosi următoarele gazde:

  • Server: 192.168.241.140
  • Client: 172.31.21.58

Cum se instalează și se configurează Rsyslog Server

Majoritatea distribuțiilor Linux vin cu pachetul rsyslog preinstalat. În cazul în care nu este instalat, îl puteți instala folosind instrumentul de gestionare a pachetelor Linux, așa cum se arată.

sudo yum update && yum install rsyslog 	#CentOS 7
sudo apt update && apt install rsyslog	#Ubuntu 16.04, 18.04

Odată instalat rsyslog, trebuie să porniți serviciul deocamdată, să îl activați să pornească automat la pornire și să verificați starea acestuia cu comanda systemctl.

sudo systemctl start rsyslog
sudo systemctl enable rsyslog
sudo systemctl status rsyslog

Fișierul principal de configurare rsyslog se află la /etc/rsyslog.conf, care încarcă module, definește directivele globale, conține reguli pentru procesarea mesajelor de jurnal și include, de asemenea, toate fișierele de configurare din /etc /rsyslog.d/pentru diverse aplicații/servicii.

sudo vim /etc/rsyslog.conf

Implicit, rsyslog folosește modulele imjournal și imusock pentru a importa mesaje jurnal structurate din systemd journal și pentru a accepta syslog mesajele de la aplicațiile care rulează pe sistemul local prin intermediul socket-urilor Unix, respectiv.

Pentru a configura rsyslog ca server de înregistrare de rețea/central, trebuie să setați protocolul (fie UDP, fie TCP sau ambele) pe care îl va folosi pentru recepția syslog la distanță, precum și pentru portul pe care ascultă.

Dacă doriți să utilizați o conexiune UDP, care este mai rapidă, dar nesigură, căutați și decomentați liniile de mai jos (înlocuiți 514 cu portul pe care doriți să îl asculte, acesta ar trebui să potriviți cu adresa portului către care clienții trimit mesaje, ne vom uita la asta mai mult atunci când configurăm un client rsyslog).

$ModLoad imudp
$UDPServerRun 514

Pentru a utiliza conexiunea TCP (care este mai lentă, dar mai fiabilă), căutați și decomentați rândurile de mai jos.

$ModLoad imtcp
$InputTCPServerRun 514

În acest caz, dorim să folosim atât conexiunile UDP, cât și TCP în același timp.

Apoi, trebuie să definiți setul de reguli pentru procesarea jurnalelor de la distanță în următorul format.

facility.severity_level	destination (where to store log)

Unde :

  • facilitate: este tipul de mesaj generator de proces/aplicație, acestea includ auth, cron, daemon, kernel, local0..local7. Folosirea * înseamnă toate facilitățile.
  • severity_level: este tipul de mesaj de jurnal: emerg-0, alert-1, crit-2, err-3, warn-4, notice-5, info-6, debug-7. Folosirea * înseamnă toate nivelurile de severitate și niciunul nu implică niciun nivel de severitate.
  • destinație: este fie un fișier local, fie un server rsyslog la distanță (definit sub forma IP:port).

Vom folosi următorul setul de reguli pentru colectarea jurnalelor de la gazde la distanță, folosind șablonul RemoteLogs. Rețineți că aceste reguli trebuie să fie înaintea oricăror reguli de procesare a mesajelor locale, așa cum se arată în captură de ecran.

$template RemoteLogs,"/var/log/%HOSTNAME%/%PROGRAMNAME%.log"
*.* ?RemoteLogs 
& ~

Privind la setul de reguli de mai sus, prima regulă este „$template RemoteLogs”,/var/log/%HOSTNAME%/%PROGRAMNAME%.log” ”.

Directiva $template îi spune demonului rsyslog să adune și să scrie toate mesajele primite la distanță în jurnalele distincte sub /var/log, pe baza numele de gazdă > (numele mașinii client) și facilitate client la distanță (program/aplicație) care a generat mesajele așa cum sunt definite de setările prezente în șablonul RemoteLogs.

A doua linie „*.* ?RemoteLogs ” înseamnă înregistrarea mesajelor de la toate facilitățile la toate nivelurile de severitate folosind configurația șablonului RemoteLogs.

Linia finală „& ~ ” indică rsyslog să oprească procesarea mesajelor odată ce acestea sunt scrise într-un fișier. Dacă nu includeți „& ~”, mesajele vor fi scrise în fișierele locale.

Există multe alte șabloane pe care le puteți utiliza, pentru mai multe informații, consultați pagina de manual de configurare rsyslog (man rsyslog.conf) sau consultați documentația online Rsyslog.

Asta e cu configurarea serverului rsyslog. Salvați și închideți fișierul de configurare. Pentru a aplica modificările recente, reporniți demonul rsyslog cu următoarea comandă.

sudo systemctl restart rsyslog

Acum verificați prizele de rețea rsyslog. Utilizați comanda ss (sau netstat cu aceleași steaguri) și direcționați ieșirea către grep pentru a filtra conexiunile rsyslogd.

sudo ss -tulnp | grep "rsyslog"

Apoi, pe CentOS 7, dacă aveți SELinux activat, rulați următoarele comenzi pentru a permite traficul rsyslog pe baza tipului de soclu de rețea.

sudo semanage -a -t syslogd_port_t -p udp 514
sudo semanage -a -t syslogd_port_t -p tcp 514 

Dacă sistemul are firewall activat, trebuie să deschideți portul 514 pentru a permite ambele conexiuni UDP/TCP la serverul rsyslog, prin rulare.

------------- On CentOS ------------- 
sudo firewall-cmd --permanent --add-port=514/udp
sudo firewall-cmd --permanent --add-port=514/tcp
sudo firewall-cmd --reload

------------- On Ubuntu -------------
sudo ufw allow 514/udp
sudo ufw allow 514/tcp
sudo ufw reload 

Cum se configurează clientul Rsyslog pentru a trimite jurnalele către serverul Rsyslog

Acum, pe sistemul client, verificați dacă serviciul rsyslog rulează sau nu cu următoarea comandă.

sudo systemctl status rsyslog

Dacă nu este instalat, instalați-l și porniți serviciul așa cum se arată mai devreme.

sudo yum update && yum install rsyslog 	#CentOS 7
sudo apt update && apt install rsyslog	#Ubuntu 16.04, 18.04
sudo systemctl start rsyslog
sudo systemctl enable rsyslog
sudo systemctl status rsyslog

Odată ce serviciul rsyslog este activ și rulează, deschideți fișierul de configurare principal unde veți efectua modificări la configurația implicită.

sudo vim /etc/rsyslog.conf

Pentru a forța demonul rsyslog să acționeze ca client de jurnal și să redirecționeze toate mesajele de jurnal generate local către serverul rsyslog de la distanță, adăugați această regulă de redirecționare, la sfârșitul fișierului, așa cum se arată în următoarea captură de ecran.

*. *  @@192.168.100.10:514

Regula de mai sus va trimite mesaje de la toate facilitățile și la toate nivelurile de severitate. Pentru a trimite mesaje de la o anumită facilitate, de exemplu auth, utilizați următoarea regulă.

auth. *  @@192.168.100.10:514

Salvați modificările și închideți fișierul de configurare. Pentru a aplica setările de mai sus, reporniți demonul rsyslog.

sudo systemctl restart rsyslog

Cum se monitorizează înregistrarea de la distanță pe serverul Rsyslog

Pasul final este să verificați dacă rsyslog primește și înregistrează de fapt mesaje de la client, sub /var/log, sub forma hostname/programname.log.

Rulați o comandă ls la lista lungă a directorului jurnalelor părinte și verificați dacă există un director numit ip-172.31.21.58 (sau oricare ar fi numele de gazdă al computerului dvs. client).

 
ls -l /var/log/

Dacă directorul există, verificați fișierele jurnal din interiorul acestuia, rulând.

sudo ls -l /var/log/ip-172-31-21-58/

rezumat

Rsyslog este un sistem de procesare a jurnalelor de înaltă performanță, conceput într-o arhitectură client/server. Sperăm că puteți să instalați și să configurați Rsyslog ca server de înregistrare centrală/rețea și ca client, așa cum este demonstrat în acest ghid.

De asemenea, vă recomandăm să consultați paginile relevante de manual rsyslog pentru mai mult ajutor. Simțiți-vă liber să ne oferiți orice feedback sau să puneți întrebări.