Postavite centralizirani log server s Rsyslog u CentOS/RHEL 8


Da bi sistemski administratori prepoznali ili analizirali probleme na CentOS 8 ili RHEL 8 serveru, važno je znati i vidjeti događaje koji su se desili na serveru u određeni vremenski period iz log datoteka koje se nalaze u /var/log direktoriju u sistemu.

Syslog (System Logging Protocol) sistem na serveru može djelovati kao centralna tačka praćenja dnevnika preko mreže gdje su svi serveri, mrežni uređaji, prekidači, ruteri i interni servisi koji kreirati dnevnike, bilo da su povezani s određenim internim problemom ili samo informativne poruke mogu slati svoje dnevnike.

Na CentOS/RHEL 8 serveru, Rsyslog je najvažniji log server koji je unaprijed instaliran prema zadanim postavkama, praćen Systemd Journal Daemon (journald).

Rsyslog je uslužni program otvorenog koda, razvijen kao usluga arhitekture klijent/server i može samostalno ostvariti obje uloge. Može raditi kao server i prikupljati sve zapise koje prenose drugi uređaji preko mreže ili može raditi kao klijent slanjem svih internih sistemskih događaja evidentiranih na udaljeni Syslog server.

Zahtjevi

  1. Instalacija “CentOS 8.0″ sa snimcima ekrana
  2. Instalacija RHEL 8 sa snimcima ekrana

Da biste postavili centralizirani log server na CentOS/RHEL 8 serveru, morate provjeriti da li /var particija ima dovoljno prostora (minimalno nekoliko GB ) za pohranjivanje svih snimljenih log datoteka na sistemu koje šalju drugi uređaji na mreži. Preporučujem vam da imate poseban disk (LVM ili RAID) za montiranje /var/log/ direktorija.

Kako konfigurirati Rsyslog server u CentOS/RHEL 8

1. Kao što sam rekao, usluga Rsyslog je instalirana i radi automatski na CentOS/RHEL 8 serveru. Da biste provjerili da li demon radi u sistemu, pokrenite sljedeću naredbu.

systemctl status rsyslog.service

Ako usluga nije pokrenuta prema zadanim postavkama, pokrenite sljedeću naredbu da pokrenete rsyslog demon.

systemctl start rsyslog.service

2. Ako uslužni program Rsyslog nije instaliran prema zadanim postavkama na sistemu koji planirate koristiti kao centralizirani server za evidentiranje, pokrenite sljedeću dnf komandu da instalirate rsyslog paket i pokrenite demon.


dnf install rsyslog
systemctl start rsyslog.service

3. Nakon što je Rsyslog instaliran, sada možete konfigurirati rsyslog kao centralizirani server za evidentiranje otvaranjem glavne konfiguracijske datoteke /etc/rsyslog.conf , kako biste primali dnevnik poruke za vanjske klijente.

vi /etc/rsyslog.conf

U konfiguracijskoj datoteci /etc/rsyslog.conf pronađite i dekomentirajte sljedeće redove kako biste odobrili prijem UDP transporta Rsyslog serveru preko 514 porta . Rsyslog koristi standardni UDP protokol za prijenos dnevnika.

module(load="imudp") # needs to be done just once
input(type="imudp" port="514")

4. UDP protokol nema TCP nadjačavanje i čini prijenos podataka bržim od TCP protokola. S druge strane, UDP protokol ne garantuje pouzdanost prenesenih podataka.

Međutim, ako želite koristiti TCP protokol za prijem dnevnika, morate pronaći i dekomentirati sljedeće redove u /etc/rsyslog.conf konfiguracijskoj datoteci kako biste konfigurirali Rsyslog daemon za povezivanje i slušanje TCP utičnice na 514 portu.

module(load="imtcp") # needs to be done just once
input(type="imtcp" port="514")

5. Sada kreirajte novi predložak za primanje udaljenih poruka, jer će ovaj predložak voditi lokalni Rsyslog server, gdje će sačuvati primljene poruke koje šalju Syslog mrežni klijenti.


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

$template RemoteLogs direktiva vodi Rsyslog demona da prikupi i zapiše sve poslane dnevnik poruke u različite datoteke, na osnovu imena klijenta i udaljene klijentske aplikacije koja je kreirala poruke na osnovu navedenih svojstava dodatih u konfiguracija šablona: %HOSTNAME% i %PROGRAMNAME%.

Sve primljene datoteke evidencije će biti zapisane u lokalni sistem datoteka u dodijeljenu datoteku nazvanu prema imenu hosta klijentske mašine i čuvaju se u /var/log/ direktoriju.

Pravilo preusmjeravanja & ~ usmjerava lokalni Rsyslog server da zaustavi daljnju obradu primljene poruke dnevnika i ukloni poruke (ne upisuje ih u interne datoteke dnevnika).

RemoteLogs je proizvoljno ime dato ovoj direktivi šablona. Možete koristiti bilo koje ime koje želite da najbolje odgovara vašem predlošku.

Da biste konfigurirali složenije Rsyslog predloške, pročitajte priručnik za konfiguracijsku datoteku Rsyslog pokretanjem naredbe man rsyslog.conf ili pogledajte Rsyslog online dokumentaciju.

man rsyslog.conf

6. Nakon što izvršite gore navedene promjene konfiguracije, možete ponovo pokrenuti Rsyslog demon da biste primijenili nedavne promjene tako što ćete pokrenuti sljedeću naredbu.

service rsyslog restart

7. Kada ponovo pokrenete Rsyslog server, on bi sada trebao djelovati kao centralizirani poslužitelj dnevnika i snimati poruke od Syslog klijenata. Da biste potvrdili Rsyslog mrežne utičnice, pokrenite netstat naredbu i koristite uslužni program grep za filtriranje rsyslog stringa.

netstat -tulpn | grep rsyslog 

Ako netstat komanda nije instalirana na CentOS 8, možete je instalirati koristeći sljedeću naredbu.


dnf whatprovides netstat
dnf install net-tools

8. Ako imate SELinux aktivan u CentOS/RHEL 8, pokrenite sljedeću naredbu da dozvolite rsyslog promet u zavisnosti od tipa mrežne utičnice.

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

Ako semanage komanda nije instalirana na CentOS 8, možete je instalirati koristeći sljedeću naredbu.


dnf whatprovides semanage
dnf install policycoreutils-python-utils

9. Ako imate zaštitni zid aktivan na sistemu, pokrenite sljedeću naredbu kako biste dodali potrebna pravila za omogućavanje rsyslog prometa na portovima u Firewalld-u.


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

Također možete ograničiti dolazne veze na portu 514 iz IP raspona sa bijele liste kao što je prikazano.


firewall-cmd --permanent --add-rich-rule 'rule family="ipv4" source address="123.123.123.0/21" port port="514" protocol="tcp" accept'
firewall-cmd --permanent --add-rich-rule 'rule family="ipv4" source address="123.123.123.0/21" port port="514" protocol="udp" accept'
firewall-cmd --reload

To je sve! Rsyslog je sada konfiguriran kao centralizirani poslužitelj evidencije i može prikupljati zapise sa udaljenih klijenata. U sljedećem članku ćemo vidjeti kako konfigurirati Rsyslog klijenta na CentOS/RHEL 8 serveru.