Kako upravljati zapisnicima sustava (konfigurirati, rotirati i uvesti u bazu podataka) u RHEL 7 - 5. dio


Da biste svoje RHEL 7 sustave održali sigurnima, morate znati kako nadzirati sve aktivnosti koje se odvijaju na takvim sustavima pregledom datoteka dnevnika. Tako ćete moći otkriti bilo kakvu neobičnu ili potencijalno zlonamjernu aktivnost i izvršiti rješavanje problema u sustavu ili poduzeti drugu odgovarajuću radnju.

U RHEL 7, demon rsyslogd odgovoran je za bilježenje sustava i čita svoju konfiguraciju iz /etc/rsyslog.conf (ova datoteka navodi zadanu lokaciju za sve zapise sustava) i iz datoteka unutar /etc/rsyslog.d, ako postoje.

Rsyslogd konfiguracija

Brzi pregled rsyslog.conf bit će od pomoći za početak. Ova je datoteka podijeljena u 3 glavna odjeljka: Moduli (budući da rsyslog slijedi modularni dizajn), Globalne direktive (koriste se za postavljanje globalnih svojstava demona rsyslogd) i Pravila. Kao što ćete vjerojatno pogoditi, ovaj posljednji odjeljak označava što se bilježi ili prikazuje (također poznato kao birač) i gdje, i bit će naš fokus u ovom članku.

Tipična linija u rsyslog.conf je sljedeća:

Na gornjoj slici možemo vidjeti da se birač sastoji od jednog ili više parova Facility:Priority odvojenih točkom i zarezom, gdje Facility opisuje vrstu poruke (pogledajte odjeljak 4.1.1 u RFC 3164 da vidite potpuni popis mogućnosti dostupnih za rsyslog), a Prioritet označava njegovu ozbiljnost, što može biti jedna od sljedećih riječi koje same po sebi objašnjavaju:

  1. debug
  2. info
  3. obavijest
  4. upozorenje
  5. pogriješiti
  6. krit
  7. uzbuna
  8. emerg

Iako sama po sebi nije prioritet, ključna riječ none znači da dani objekt uopće nema prioritet.

Napomena: Dani prioritet označava da se sve poruke tog i višeg prioriteta trebaju zabilježiti. Dakle, linija u gornjem primjeru daje upute rsyslogd demonu da zabilježi sve poruke s informacijama o prioritetu ili višem (bez obzira na objekt) osim onih koje pripadaju pošti, usluge authpriv i cron (poruke koje dolaze iz ovih objekata neće biti uzete u obzir) u /var/log/messages.

Također možete grupirati više objekata pomoću znaka dvotočke kako biste na sve primijenili isti prioritet. Dakle, linija:

*.info;mail.none;authpriv.none;cron.none                /var/log/messages

Moglo bi se prepisati kao

*.info;mail,authpriv,cron.none                /var/log/messages

Drugim riječima, značajke mail, authpriv i cron grupiraju se, a ključna riječ none primjenjuje se na njih troje.

Stvaranje prilagođene datoteke dnevnika

Da bismo zabilježili sve poruke demona u /var/log/tecmint.log, moramo dodati sljedeći redak u rsyslog.conf ili u zasebnu datoteku (lakše je upravljati ) unutar /etc/rsyslog.d:

daemon.*    /var/log/tecmint.log

Ponovno pokrenimo demon (imajte na umu da naziv usluge ne završava s d):

systemctl restart rsyslog

I provjerite sadržaj našeg prilagođenog dnevnika prije i nakon ponovnog pokretanja dva nasumična demona:

Kao vježbu za samostalno učenje, preporučio bih vam da se poigrate sa sadržajima i prioritetima i ili zapišete dodatne poruke u postojeće datoteke dnevnika ili stvorite nove kao u prethodnom primjeru.

Rotiranje trupaca pomoću Logrotate-a

Kako bi se spriječilo beskonačno povećanje datoteka dnevnika, uslužni program logrotate koristi se za rotiranje, komprimiranje, uklanjanje i alternativno slanje zapisa, čime se olakšava administracija sustava koji generiraju veliki broj datoteka dnevnika.

Predloženo za čitanje: Kako postaviti i upravljati rotacijom dnevnika koristeći Logrotate u Linuxu

Logrotate radi svakodnevno kao cron posao (/etc/cron.daily/logrotate) i čita svoju konfiguraciju iz /etc/logrotate .conf i iz datoteka koje se nalaze u /etc/logrotate.d, ako postoje.

Kao i u slučaju rsyslog, čak i kada možete uključiti postavke za određene usluge u glavnu datoteku, stvaranje zasebnih konfiguracijskih datoteka za svaku pomoći će bolje organizirati vaše postavke.

Pogledajmo tipični logrotate.conf:

U gornjem primjeru, logrotate izvršit će sljedeće radnje za /var/loh/wtmp: pokušati rotirati samo jednom mjesečno, ali samo ako je datoteka najmanje < veličine snažnog>1 MB, zatim izradite potpuno novu datoteku dnevnika s dopuštenjima postavljenim na 0664 i vlasništvom dodijeljenim korisniku root i grupi utmp. Zatim, zadržite samo jedan arhivirani zapisnik, kao što je navedeno u direktivi o rotiranju:

Razmotrimo sada još jedan primjer koji se nalazi u /etc/logrotate.d/httpd:

Možete pročitati više o postavkama za logrotate na njegovim man stranicama (man logrotate i man logrotate.conf). Obje su datoteke dane uz ovaj članak u PDF formatu radi lakšeg čitanja.

Kao sistemski inženjer, na vama je da odlučite koliko dugo će se zapisi pohranjivati i u kojem formatu, ovisno o tome imate li /var u zasebnoj particiji /< logički volumen. U protivnom biste trebali razmotriti uklanjanje starih zapisa kako biste uštedjeli prostor za pohranu. S druge strane, možda ćete biti prisiljeni voditi nekoliko dnevnika za buduće sigurnosne revizije u skladu s internim politikama vaše tvrtke ili klijenta.

Spremanje zapisa u bazu podataka

Naravno, ispitivanje dnevnika (čak i uz pomoć alata kao što su grep i regularni izrazi) može postati prilično dosadan zadatak. Iz tog razloga, rsyslog nam omogućuje da ih izvezemo u bazu podataka (OTB podržani RDBMS uključuju MySQL, MariaDB, PostgreSQL i Oracle.

Ovaj odjeljak vodiča pretpostavlja da ste već instalirali MariaDB poslužitelj i klijent u istom RHEL 7 okviru gdje se upravlja zapisima:

yum update && yum install mariadb mariadb-server mariadb-client rsyslog-mysql
systemctl enable mariadb && systemctl start mariadb

Zatim upotrijebite uslužni program mysql_secure_installation za postavljanje lozinke za root korisnika i ostala sigurnosna razmatranja:

Napomena: Ako ne želite koristiti root korisnika MariaDB za umetanje poruka dnevnika u bazu podataka, možete konfigurirati drugi korisnički račun učiniti tako. Objašnjavanje kako to učiniti je izvan opsega ovog vodiča, ali je detaljno objašnjeno u bazi znanja MariaDB. U ovom vodiču koristit ćemo root račun radi jednostavnosti.

Zatim preuzmite skriptu createDB.sql s GitHuba i uvezite je u svoj poslužitelj baze podataka:

mysql -u root -p < createDB.sql

Na kraju dodajte sljedeće retke u /etc/rsyslog.conf:

$ModLoad ommysql
$ActionOmmysqlServerPort 3306
*.* :ommysql:localhost,Syslog,root,YourPasswordHere

Ponovno pokrenite rsyslog i poslužitelj baze podataka:

systemctl restart rsyslog 
systemctl restart mariadb

Upit za zapisnike pomoću SQL sintakse

Sada izvršite neke zadatke koji će modificirati zapisnike (kao što je zaustavljanje i pokretanje usluga, na primjer), zatim se prijavite na svoj DB poslužitelj i koristite standardne SQL naredbe za prikaz i pretraživanje u zapisnicima:

USE Syslog;
SELECT ReceivedAt, Message FROM SystemEvents;

Sažetak

U ovom smo članku objasnili kako postaviti bilježenje sustava, kako rotirati zapisnike i kako preusmjeriti poruke u bazu podataka radi lakšeg pretraživanja. Nadamo se da će vam ove vještine biti od pomoći dok se pripremate za RHCE ispit, ali i u svojim svakodnevnim obavezama.

Kao i uvijek, vaše povratne informacije su više nego dobrodošle. Slobodno upotrijebite obrazac u nastavku da nas kontaktirate.