Kaip nustatyti centrinį registravimo serverį naudojant „Rsyslog“ sistemoje „Linux“.


Žurnalai yra svarbus bet kurios programinės įrangos ar operacinės sistemos komponentas. Žurnaluose paprastai įrašomi vartotojo veiksmai, sistemos įvykiai, tinklo veikla ir dar daugiau, priklausomai nuo to, kam jie skirti. Viena iš plačiausiai naudojamų registravimo sistemų Linux sistemose yra rsyslog.

Rsyslog yra galinga, saugi ir didelio našumo žurnalų apdorojimo sistema, kuri priima duomenis iš įvairių šaltinių (sistemų/programų) ir išveda juos į kelis formatus.

Jis išsivystė iš įprasto syslog demono į visas funkcijas turinčią įmonės lygio registravimo sistemą. Jis sukurtas kliento/serverio modelyje, todėl gali būti konfigūruojamas kaip klientas ir/arba kaip centrinis registravimo serveris kitiems serveriams, tinklo įrenginiams ir nuotolinėms programoms.

Testavimo aplinka

Šiame vadove naudosime šiuos pagrindinius kompiuterius:

  • Serveris: 192.168.241.140
  • Klientas: 172.31.21.58

Kaip įdiegti ir konfigūruoti Rsyslog serverį

Daugumoje „Linux“ platinimų yra iš anksto įdiegtas rsyslog paketas. Jei jis neįdiegtas, galite jį įdiegti naudodami „Linux“ paketų tvarkyklės įrankį, kaip parodyta.

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

Įdiegę rsyslog, turite paleisti paslaugą, įgalinti ją automatiškai paleisti įkrovos metu ir patikrinti jos būseną naudodami komandą systemctl.

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

Pagrindinis rsyslog konfigūracijos failas yra adresu /etc/rsyslog.conf, kuriame įkeliami moduliai, apibrėžiamos visuotinės direktyvos, pateikiamos žurnalo pranešimų apdorojimo taisyklės ir visi konfigūracijos failai, esantys /etc. /rsyslog.d/ įvairioms programoms/paslaugoms.

sudo vim /etc/rsyslog.conf

Pagal numatytuosius nustatymus rsyslog naudoja modulius imjournal ir imusock, kad importuotų struktūrinius žurnalo pranešimus iš sisteminio žurnalo ir priimtų syslog. pranešimus iš vietinėje sistemoje veikiančių programų atitinkamai per Unix lizdus.

Norėdami sukonfigūruoti rsyslog kaip tinklo/centrinį registravimo serverį, turite nustatyti protokolą (arba UDP arba TCP arba abu), kurį jis naudos nuotoliniam syslog priėmimui, taip pat prievadas, kurio klausosi.

Jei norite naudoti UDP ryšį, kuris yra greitesnis, bet nepatikimas, ieškokite toliau pateiktų eilučių ir panaikinkite komentarus (pakeiskite 514 prievadu, kurio norite klausytis, tai turėtų suderinti prievado adresą, kuriuo klientai siunčia pranešimus, mes į tai daugiau žiūrėsime konfigūruodami rsyslog klientą).

$ModLoad imudp
$UDPServerRun 514

Norėdami naudoti TCP ryšį (kuris yra lėtesnis, bet patikimesnis), ieškokite toliau pateiktų eilučių ir panaikinkite komentarus.

$ModLoad imtcp
$InputTCPServerRun 514

Tokiu atveju norime vienu metu naudoti ir UDP, ir TCP ryšius.

Tada turite apibrėžti nuotolinių žurnalų apdorojimo taisyklių rinkinį tokiu formatu.

facility.severity_level	destination (where to store log)

Kur:

  • priemonė: yra proceso/programos generavimo pranešimo tipas, įskaitant autentifikavimą, cron, demoną, branduolį, local0..local7. * naudojimas reiškia visas priemones.
  • sunkumo_lygis: yra žurnalo pranešimo tipas: emerg-0, alert-1, crit-2, err-3, warn-4, notice-5, info-6, debug-7. * naudojimas reiškia visus sunkumo lygius, o nė vienas nereiškia sunkumo lygio.
  • paskirties vieta: yra vietinis failas arba nuotolinis rsyslog serveris (nustatyta forma IP:portas).

Norėdami rinkti žurnalus iš nuotolinių prieglobų, naudodami šabloną RemoteLogs, naudosime šį taisyklių rinkinį. Atminkite, kad šios taisyklės turi būti prieš bet kokias vietinių pranešimų apdorojimo taisykles, kaip parodyta ekrano kopijoje.

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

Žvelgiant į aukščiau pateiktą taisyklių rinkinį, pirmoji taisyklė yra "$template RemoteLogs,"/var/log/%HOSTNAME%/%PROGRAMNAME%.log" ".

Direktyva $template nurodo rsyslog demonui surinkti ir įrašyti visus gautus nuotolinius pranešimus į skirtingus žurnalus, esančius /var/log, remiantis hostname. > (kliento įrenginio pavadinimas) ir nuotolinio kliento priemonė (programa/programa), kuri sugeneravo pranešimus, kaip apibrėžta nustatymuose, esančiuose šablone RemoteLogs.

Antroji eilutė “*.* ?RemoteLogs ” reiškia, kad įrašomi pranešimai iš visų įrenginių bet kokiu sunkumo lygiu naudojant RemoteLogs šablono konfigūraciją.

Paskutinė eilutė “& ~ ” nurodo rsyslogui nustoti apdoroti pranešimus, kai jie bus įrašyti į failą. Jei neįtrauksite „& ~“, pranešimai bus rašomi į vietinius failus.

Yra daug kitų šablonų, kuriuos galite naudoti. Daugiau informacijos rasite rsyslog konfigūracijos vadovo puslapyje (man rsyslog.conf) arba Rsyslog internetinėje dokumentacijoje.

Taip yra su rsyslog serverio konfigūravimu. Išsaugokite ir uždarykite konfigūracijos failą. Norėdami pritaikyti naujausius pakeitimus, iš naujo paleiskite rsyslog demoną naudodami šią komandą.

sudo systemctl restart rsyslog

Dabar patikrinkite rsyslog tinklo lizdus. Naudokite komandą ss (arba netstat su tomis pačiomis vėliavėlėmis) ir nukreipkite išvestį į grep, kad išfiltruotumėte rsyslogd ryšius.

sudo ss -tulnp | grep "rsyslog"

Tada sistemoje CentOS 7, jei įgalinta SELinux, paleiskite šias komandas, kad leistumėte rsyslog srautą pagal tinklo lizdo tipą.

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

Jei sistemoje įgalinta ugniasienė, paleidę turite atidaryti prievadą 514, kad būtų galima leisti abu UDP/TCP ryšius su rsyslog serveriu.

------------- 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 

Kaip sukonfigūruoti Rsyslog klientą siųsti žurnalus į Rsyslog serverį

Dabar kliento sistemoje patikrinkite, ar rsyslog paslauga veikia, ar ne, naudodami šią komandą.

sudo systemctl status rsyslog

Jei jis neįdiegtas, įdiekite jį ir paleiskite paslaugą, kaip parodyta anksčiau.

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

Kai rsyslog paslauga bus sukurta ir paleista, atidarykite pagrindinį konfigūracijos failą, kuriame atliksite numatytosios konfigūracijos pakeitimus.

sudo vim /etc/rsyslog.conf

Norėdami priversti rsyslog demoną veikti kaip žurnalo klientas ir persiųsti visus vietoje sugeneruotus žurnalo pranešimus į nuotolinį rsyslog serverį, failo pabaigoje pridėkite šią persiuntimo taisyklę, kaip parodyta toliau esančioje ekrano kopijoje.

*. *  @@192.168.100.10:514

Aukščiau nurodyta taisyklė siunčia pranešimus iš visų įrenginių ir bet kokio sunkumo. Jei norite siųsti pranešimus iš konkrečios priemonės, pvz., auth, naudokite šią taisyklę.

auth. *  @@192.168.100.10:514

Išsaugokite pakeitimus ir uždarykite konfigūracijos failą. Norėdami pritaikyti aukščiau nurodytus nustatymus, iš naujo paleiskite rsyslog demoną.

sudo systemctl restart rsyslog

Kaip stebėti nuotolinį registravimą Rsyslog serveryje

Paskutinis veiksmas yra patikrinti, ar rsyslog iš tikrųjų gauna ir registruoja pranešimus iš kliento, esantį /var/log forma hostname/programname.log.

Vykdykite komandą ls, kad pateiktumėte ilgą pirminių žurnalų katalogą ir patikrinkite, ar yra katalogas, pavadintas ip-172.31.21.58 (arba bet koks jūsų kliento įrenginio prieglobos serverio pavadinimas).

 
ls -l /var/log/

Jei katalogas yra, patikrinkite jame esančius žurnalo failus paleisdami.

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

Santrauka

Rsyslog yra didelio našumo žurnalų apdorojimo sistema, sukurta kliento/serverio architektūroje. Tikimės, kad galėsite įdiegti ir konfigūruoti Rsyslog kaip centrinį/tinklo registravimo serverį ir kaip klientą, kaip parodyta šiame vadove.

Jei reikia daugiau pagalbos, galbūt norėsite kreiptis į atitinkamus rsyslog vadovo puslapius. Nedvejodami pateikite mums atsiliepimų arba užduokite klausimų.