Jurnale 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 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 performant, care acceptă date din diferite tipuri de surse (sisteme / aplicații) și le transmite în mai multe formate.
A evoluat dintr-un obișnuit syslog daemon 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ță.
În scopul acestui ghid, vom folosi următoarele gazde:
Majoritatea distribuțiilor Linux vin cu
rsyslog pachetul 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.
O singura data rsyslog instalat, trebuie să porniți serviciul pentru moment, să îl activați pentru a porni automat la pornire și să verificați starea acestuia cu comanda systemctl.
$ sudo systemctl pornește rsyslog. $ sudo systemctl activează 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 jurnal și include, de asemenea, toate fișierele de configurare din /etc/rsyslog.d/ pentru diverse aplicații / servicii.
$ sudo vim /etc/rsyslog.conf.
În mod implicit, rsyslog folosește imjournal și imusock module pentru importul mesajelor jurnal structurate din jurnal systemd și pentru acceptarea mesajelor syslog din aplicațiile care rulează pe sistemul local prin socketele Unix, respectiv.
Pentru a configura rsyslog ca rețea / server de înregistrare centrală, trebuie să setați protocolul (fie UDP sau TCP sau ambele) se va folosi pentru recepția syslog la distanță, precum și pentru portul pe care îl ascultă.
Dacă doriți să utilizați un UDP conexiune, care este mai rapidă dar nesigură, căutați și descomentați liniile de mai jos (înlocuiți 514 cu portul pe care doriți să-l asculte, acesta ar trebui să se potrivească cu adresa portului către care clienții trimit mesaje, ne vom uita mai mult la configurarea unui client rsyslog).
$ ModLoad imudp. $ UDPServerRun 514.
A folosi TCP conexiune (care este mai lentă, dar mai fiabilă), căutați și decomentați liniile de mai jos.
$ ModLoad imtcp. $ InputTCPServerRun 514.
În acest caz, dorim să folosim atât conexiuni UDP, cât și conexiuni TCP în același timp.
Apoi, trebuie să definiți set de reguli pentru procesarea jurnalelor la distanță în următorul format.
facilitate.severity_level destinație (unde se stochează jurnalul)
Unde:
*
înseamnă toate facilitățile.*
înseamnă toate nivelurile de severitate și nici unul nu implică nici un nivel de severitate.Vom folosi următoarele set de reguli pentru colectarea jurnalelor de la gazdele la distanță, folosind RemoteLogs șablon. Rețineți că aceste reguli trebuie să fie înaintea oricăror reguli pentru procesarea mesajelor locale, așa cum se arată în captura de ecran.
$ template RemoteLogs, "/ var / log /% HOSTNAME% /% PROGRAMNAME% .log" *. *? RemoteLogs & ~
Privind cele de mai sus set de reguli, prima regulă este „$ Template RemoteLogs”, / var / log /% HOSTNAME% /% PROGRAMNAME% .log ””.
Directiva $ șablon îi spune rsyslog daemon să adune și să scrie toate mesajele la distanță primite în jurnale distincte de sub /var/log, bazat pe numele gazdei (numele mașinii client) și facilitatea clientului la distanță (program / aplicație) care a generat mesajele așa cum sunt definite de setările prezente în șablon RemoteLogs.
A doua linie „*. *? RemoteLogs” înseamnă înregistrarea mesajelor de la toate facilitățile la toate nivelurile de severitate folosind RemoteLogs configurația șablonului.
Linia finală “& ~” instruiește rsyslog să oprească procesarea mesajelor odată ce acestea sunt scrise într-un fișier. Dacă nu includeți “& ~”, mesajele vor fi în schimb scrise în fișierele locale.
Există multe alte șabloane pe care le puteți utiliza, pentru mai multe informații, consultați pagina manuală de configurare rsyslog (om rsyslog.conf) sau consultați Documentație online Rsyslog.
Asta este cu configurarea serverului rsyslog. Salvați și închideți fișierul de configurare. Pentru a aplica modificările recente, reporniți rsyslog daemon cu următoarea comandă.
$ sudo systemctl reporniți rsyslog.
Acum verificați soclurile de rețea rsyslog. Folosește comanda ss (sau netstat cu aceleași steaguri) comandați și conduceți ieșirea către grep pentru a filtra conexiuni rsyslogd.
$ sudo ss -tulnp | grep "rsyslog"
Apoi, pe CentOS 7, daca ai SELinux activat, executaț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 să le permită pe amândouă UDP / TCP conexiuni la serverul rsyslog, rulând.
Pe CentOS $ sudo firewall-cmd --permanent --add-port = 514 / udp. $ sudo firewall-cmd --permanent --add-port = 514 / tcp. $ sudo firewall-cmd --reload Pe Ubuntu $ sudo ufw permit 514 / udp. $ sudo ufw permite 514 / tcp. $ sudo ufw reîncarcă
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 sus.
$ sudo yum update && yum install rsyslog #CentOS 7. $ sudo apt update && apt install rsyslog # Ubuntu 16.04, 18.04. $ sudo systemctl pornește rsyslog. $ sudo systemctl activează rsyslog. $ sudo systemctl status rsyslog.
Odată ce serviciul rsyslog este în funcțiune, deschideți fișierul principal de configurare 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 un client jurnal și să transmită toate mesajele jurnal generate local la server rsyslog la distanță, adăugați această regulă de redirecționare, la sfârșitul fișierului, așa cum se arată în cele ce urmează captură de ecran.
*. * @@192.168.100.10:514.
Regula de mai sus va trimite mesaje din toate facilitățile și la toate nivelurile de severitate. Pentru a trimite mesaje de la o facilitate specifică, de exemplu autentificare, utilizați următoarea regulă.
autentificare * @@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 reporniți rsyslog.
Ultimul pas este de a verifica dacă rsyslog primește și înregistrează mesaje de la client, sub /var/log, în formă hostname / programname.log.
Rulați un Comand pentru listarea lungă a directorului jurnalelor părinte și a verifica dacă există un director numit ip-172.31.21.58 (sau oricare ar fi numele de gazdă al echipamentului 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 /
Rsyslog este un sistem de procesare a jurnalelor de înaltă performanță, proiectat într-o arhitectură client / server. Sperăm că puteți instala și configura Rsyslog ca server central / de înregistrare a rețelei și ca client, după cum se arată în acest ghid.
De asemenea, vă recomandăm să consultați paginile relevante ale manualului rsyslog pentru mai mult ajutor. Nu ezitați să ne oferiți feedback sau să ne adresați întrebări.