Kako stvoriti centralizirani log poslužitelj s Rsyslogom u CentOS/RHEL 7


Kako bi administrator sustava identificirao ili riješio problem na poslužiteljskom sustavu CentOS 7 ili RHEL 7, mora znati i vidjeti događaje koji su se dogodili na sustavu u određenom vremensko razdoblje iz datoteka dnevnika pohranjenih u sustavu u direktoriju /var/log.

Poslužitelj syslog na Linux stroju može djelovati kao središnja točka nadzora preko mreže gdje svi poslužitelji, mrežni uređaji, usmjerivači, preklopnici i većina njihovih internih usluga koje generiraju zapise, bilo da se odnose na određeni interni problem ili samo informativne poruke mogu slati svoje zapise .

Na sustavu CentOS/RHEL 7Rsyslog daemon je predinstalirani glavni poslužitelj dnevnika, nakon kojeg slijedi Systemd Journal Daemon (journald).

Poslužitelj Rsyslog izgrađen je kao usluga arhitekture klijent/poslužitelj i može ostvariti obje uloge istovremeno. Može raditi kao poslužitelj i prikupljati sve zapisnike koje su prenijeli drugi uređaji u mreži ili može raditi kao klijent slanjem svih internih događaja u sustavu zabilježenih na poslužitelj syslog udaljene krajnje točke.

Kada je rsyslog konfiguriran kao klijent, dnevnici se mogu pohraniti lokalno u datoteke na lokalnom datotečnom sustavu ili se mogu poslati na daljinu umjesto da ih se zapisuje u datoteke pohranjene na stroju ili se mogu pisati datoteke dnevnika događaja lokalno i slati ih na udaljeni syslog poslužitelj na isto vrijeme.

Syslog poslužitelj upravlja bilo kojom porukom dnevnika koristeći sljedeću shemu:

type (facility).priority (severity)  destination(where to send the log)

A. Podatke postrojenja ili vrste predstavljaju interni sistemski procesi koji generiraju poruke. U Linuxu interni procesi (postrojenja) koji generiraju zapise standardizirani su na sljedeći način:

  • auth = poruke generirane procesima provjere autentičnosti (prijava).
  • cron= poruke generirane planiranim procesima (crontab).
  • daemon = poruke koje generiraju demoni (interne usluge).
  • kernel = poruke koje generira sama jezgra Linuxa.
  • pošta = poruke koje je generirao poslužitelj pošte.
  • syslog = poruke koje generira sam demon rsyslog.
  • lpr = poruke koje generiraju lokalni pisači ili ispisni poslužitelj.
  • local0 – local7 = prilagođene poruke koje definira administrator (local7 obično se dodjeljuje za Cisco ili Windows).

B. Razine prioriteta (ozbiljnosti) također su standardizirane. Svaki prioritet je dodijeljen standardnom kraticom i brojem kao što je opisano u nastavku. Sedmi prioritet je viša razina od svih.

  • emerg = Hitan slučaj – 0
  • upozorenje = Upozorenja – 1
  • err = Pogreške – 3
  • upozorenje = Upozorenja – 4
  • obavijest = Obavijest – 5
  • info = Informacije – 6
  • debug = Otklanjanje pogrešaka – 7

Posebne ključne riječi Rsyslog-a:

  • *=svi sadržaji ili prioriteti
  • none=objekti nemaju zadane prioritete, npr.: mail.none

C. Treći dio za shemu syslog-a predstavljen je direktivom destination. Rsyslog demon može slati poruke dnevnika da se zapišu u datoteku na lokalnom datotečnom sustavu (uglavnom u datoteku u direktoriju /var/log/) ili da se proslijede drugom lokalnom procesu ili da se pošalju lokalnu korisničku konzolu (na stdout), ili pošaljite poruku na udaljeni syslog poslužitelj putem TCP/UDP protokola, ili čak odbacite poruku na /dev/null.

Kako bismo konfigurirali CentOS/RHEL 7 kao središnji log poslužitelj, prvo moramo provjeriti i osigurati da je particija /var na kojoj se bilježe sve datoteke dnevnika dovoljno velika ( minimalno nekoliko GB) kako biste mogli pohraniti sve log datoteke koje će poslati drugi uređaji. Dobra je odluka koristiti zaseban pogon (LVM, RAID) za montiranje direktorija /var/log/.

Zahtjevi

  1. Instalacijski postupak CentOS 7.3
  2. RHEL 7.3 Instalacijski postupak

Kako konfigurirati Rsyslog u CentOS/RHEL 7 poslužitelju

1. Prema zadanim postavkama, usluga Rsyslog automatski je instalirana i trebala bi raditi u CentOS/RHEL 7. Kako biste provjerili je li demon pokrenut u sustavu, izdajte sljedeću naredbu s root privilegijama.

systemctl status rsyslog.service

Ako usluga nije pokrenuta prema zadanim postavkama, izvršite donju naredbu kako biste pokrenuli demon rsyslog.

systemctl start rsyslog.service

2. Ako paket rsyslog nije instaliran na sustavu koji namjeravate koristiti kao centralizirani poslužitelj za bilježenje, izdajte sljedeću naredbu za instaliranje paketa rsyslog.

yum install rsyslog

3. Prvi korak koji trebamo učiniti na sustavu kako bismo konfigurirali rsyslog demon kao centralizirani log poslužitelj, tako da može primati log poruke za vanjske klijente, je otvaranje i uređivanje, koristeći vaš omiljeni uređivač teksta, glavna konfiguracijska datoteka iz /etc/rsyslog.conf, kao što je prikazano u donjem izvatku.

vi /etc/rsyslog.conf

U glavnoj konfiguracijskoj datoteci rsyslog pretražite i odkomentirajte sljedeće retke (uklonite hashtag # znak na početku retka) kako biste omogućili prijem UDP prijenosa Rsyslog poslužitelju putem 514 luka. UDP je standardni protokol koji Rsyslog koristi za prijenos dnevnika.

$ModLoad imudp 
$UDPServerRun 514

4. UDP protokol nema TCP overhead, što ga čini bržim za prijenos podataka od TCP protokola. S druge strane, UDP protokol ne jamči pouzdanost prenesenih podataka.

Međutim, ako trebate koristiti TCP protokol za prijem dnevnika, morate pretražiti i odkomentirati sljedeće retke iz datoteke /etc/rsyslog.conf kako biste konfigurirali Rsyslog demon za vezanje i slušanje TCP utičnice na 514 luka. TCP i UDP slušalice za prijem mogu se konfigurirati na Rsyslog poslužitelju istovremeno.

$ModLoad imtcp 
$InputTCPServerRun 514 

5. U sljedećem koraku, nemojte još zatvoriti datoteku, izradite novi predložak koji će se koristiti za primanje udaljenih poruka. Ovaj predložak uputit će lokalni Rsyslog poslužitelj gdje da spremi primljene poruke koje šalju syslog mrežni klijenti. Predložak se mora dodati prije početka bloka GLOBALNE DIREKTIVE kao što je ilustrirano u donjem izvatku.

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

Gornja direktiva $template RemoteLogs daje upute demonu Rsyslog da prikupi i zapiše sve primljene poruke dnevnika u različite datoteke, na temelju naziva klijentskog računala i udaljenog klijentskog pogona (aplikacije) koji je generirao poruke na temelju definirana svojstva prisutna u konfiguraciji predloška: %HOSTNAME% i %PROGRAMNAME%.

Sve ove datoteke dnevnika bit će zapisane u lokalni datotečni sustav u namjensku datoteku nazvanu prema imenu hosta klijentskog računala i pohranjenu u direktoriju /var/log/.

Pravilo preusmjeravanja & ~ daje upute lokalnom Rsyslog poslužitelju da prestane dalje obrađivati primljenu poruku dnevnika i odbaci poruke (ne zapisuje ih u interne datoteke dnevnika).

Ime RemoteLogs proizvoljno je ime dano ovoj direktivi predloška. Možete koristiti bilo koje ime koje vam najviše odgovara za vaš predložak.

Kako biste upisali sve primljene poruke od klijenata u jednu datoteku dnevnika nazvanu prema IP adresi udaljenog klijenta, bez filtriranja objekta koji je generirao poruku, koristite donji izvadak.

$template FromIp,"/var/log/%FROMHOST-IP%.log" 
. ?FromIp & ~ 

Još jedan primjer predloška gdje će se sve poruke s oznakom autentifikacije bilježiti u predložak pod nazivom “TmplAuth“.

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

Ispod je izvadak iz definicije predloška s poslužitelja Rsyslog 7:

template(name="TmplMsg" type="string"
         string="/var/log/remote/msg/%HOSTNAME%/%PROGRAMNAME:::secpath-replace%.log"
        )

Gornji izvadak predloška također se može napisati kao:

template(name="TmplMsg" type="list") {
    constant(value="/var/log/remote/msg/")
    property(name="hostname")
    constant(value="/")
    property(name="programname" SecurePath="replace")
    constant(value=".log")
    }

Za pisanje složenih Rsyslog predložaka, pročitajte priručnik konfiguracijske datoteke Rsyslog izdavanjem naredbe man rsyslog.conf ili pogledajte Rsyslog online dokumentaciju.

6. Nakon što ste uredili Rsyslog konfiguracijsku datoteku s vlastitim postavkama kao što je gore objašnjeno, ponovno pokrenite Rsyslog daemon kako biste primijenili promjene izdavanjem sljedeće naredbe:

service rsyslog restart

7. Do sada bi Rsyslog poslužitelj trebao biti konfiguriran da djeluje kao centralizirani log poslužitelj i bilježi poruke syslog klijenata. Za provjeru Rsyslog mrežnih utičnica, pokrenite naredbu netstat s root privilegijama i upotrijebite grep za filtriranje niza rsyslog.

netstat -tulpn | grep rsyslog 

8. Ako imate SELinux omogućen u CentOS/RHEL 7, izdajte sljedeću naredbu za konfiguraciju SELinuxa da dopusti rsyslog promet ovisno o vrsti mrežne utičnice.

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

9. Ako je vatrozid omogućen i aktivan, pokrenite donju naredbu kako biste dodali potrebna pravila za otvaranje rsyslog portova u Firewalldu.

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

To je sve! Rsyslog je sada konfiguriran u načinu rada poslužitelja i može centralizirati zapisnike udaljenih klijenata. U sljedećem članku ćemo vidjeti kako konfigurirati Rsyslog klijent na CentOS/RHEL 7 poslužitelju.

Koristeći Rsyslog poslužitelj kao središnju točku nadzora za udaljene zapisničke poruke, možete pregledati zapisničke datoteke i promatrati zdravstveni status klijenta ili lakše otkloniti klijentove probleme kada se sustavi sruše ili su pod nekom vrstom napada.