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:
- debug
- info
- obavijest
- upozorenje
- pogriješiti
- krit
- uzbuna
- 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.