Jak spravovat systémové protokoly (konfigurovat, otáčet a importovat do databáze) v RHEL 7 – část 5
Aby byly vaše systémy RHEL 7 bezpečné, musíte vědět, jak monitorovat všechny aktivity, které se v takových systémech odehrávají, pomocí prozkoumání souborů protokolu. Budete tak moci odhalit jakoukoli neobvyklou nebo potenciálně škodlivou aktivitu a provést odstraňování problémů se systémem nebo provést jinou vhodnou akci.
V RHEL 7 je démon rsyslogd zodpovědný za protokolování systému a čte jeho konfiguraci z /etc/rsyslog.conf (tento soubor určuje výchozí umístění pro všechny systémové protokoly) a ze souborů v /etc/rsyslog.d, pokud existují.
Konfigurace Rsyslogd
Pro začátek vám pomůže rychlá kontrola souboru rsyslog.conf. Tento soubor je rozdělen do 3 hlavních částí: Moduly (protože rsyslog má modulární design), Globální direktivy (používané k nastavení globálních vlastností démona rsyslogd) a Pravidla. Jak pravděpodobně uhodnete, tato poslední část uvádí, co se zaznamenává nebo zobrazuje (také známý jako selektor) a kde, a bude se na ni v tomto článku zaměřovat.
Typický řádek v rsyslog.conf je následující:
Na obrázku výše vidíme, že selektor se skládá z jednoho nebo více párů Facility:Priority oddělených středníkem, kde Facility popisuje typ zprávy (viz část 4.1.1 v RFC 3164 úplný seznam zařízení dostupných pro rsyslog) a Priorita označuje jeho závažnost, což může být jedno z následujících samovysvětlujících slov:
- ladit
- info
- oznámení
- Varování
- chybovat
- krit
- upozornění
- vynořit se
I když to není priorita, klíčové slovo none znamená žádnou prioritu daného zařízení.
Poznámka: Daná priorita znamená, že by měly být protokolovány všechny zprávy s takovou prioritou a vyšší. Řádek ve výše uvedeném příkladu tedy instruuje démona rsyslogd, aby zaprotokoloval všechny zprávy s prioritními informacemi nebo vyšší (bez ohledu na zařízení) s výjimkou zpráv patřících do mail, authpriv a cron (žádné zprávy přicházející z těchto zařízení nebudou brány v úvahu) na /var/log/messages.
Můžete také seskupit více zařízení pomocí znaku dvojtečky, abyste na všechna použili stejnou prioritu. Tedy řádek:
*.info;mail.none;authpriv.none;cron.none /var/log/messages
Dalo by se přepsat jako
*.info;mail,authpriv,cron.none /var/log/messages
Jinými slovy, zařízení mail, authpriv a cron jsou seskupeny a klíčové slovo none se použije na tři z nich.
Vytvoření vlastního souboru protokolu
Chcete-li protokolovat všechny zprávy démona do /var/log/tecmint.log, musíme přidat následující řádek buď do rsyslog.conf, nebo do samostatného souboru (snadnější správa ) uvnitř /etc/rsyslog.d:
daemon.* /var/log/tecmint.log
Restartujeme démona (všimněte si, že název služby nekončí na d):
systemctl restart rsyslog
A zkontrolujte obsah našeho vlastního protokolu před a po restartování dvou náhodných démonů:
Jako cvičení pro samostudium bych vám doporučil pohrát si s vybavením a prioritami a buď zaznamenat další zprávy do existujících souborů protokolu, nebo vytvořit nové jako v předchozím příkladu.
Rotace protokolů pomocí Logrotate
Aby se zabránilo nekonečnému růstu souborů protokolů, používá se nástroj logrotate k rotaci, komprimaci, odstraňování a případně odesílání protokolů, čímž se usnadňuje správa systémů, které generují velké množství souborů protokolu.
Doporučená číst: Jak nastavit a spravovat rotaci protokolů pomocí Logrotate v Linuxu
Logrotate se denně spouští jako úloha cron (/etc/cron.daily/logrotate) a čte svou konfiguraci z /etc/logrotate .conf a ze souborů umístěných v /etc/logrotate.d, pokud existují.
Stejně jako v případě rsyslog, i když můžete do hlavního souboru zahrnout nastavení pro konkrétní služby, vytvoření samostatných konfiguračních souborů pro každou z nich pomůže lépe uspořádat nastavení.
Podívejme se na typický logrotate.conf:
Ve výše uvedeném příkladu provede logrotate následující akce pro /var/loh/wtmp: pokus o otočení pouze jednou za měsíc, ale pouze pokud je soubor alespoň 1 MB a poté vytvořte zcela nový soubor protokolu s oprávněními nastavenými na 0664 a vlastnictvím uživatele root a skupinu utmp. Dále ponechte pouze jeden archivovaný protokol, jak je určeno direktivou rotace:
Podívejme se nyní na další příklad, který naleznete v /etc/logrotate.d/httpd:
Více o nastavení logrotate si můžete přečíst na jeho manuálových stránkách (man logrotate a man logrotate.conf). Oba soubory jsou poskytovány spolu s tímto článkem ve formátu PDF pro vaše pohodlí při čtení.
Jako systémový inženýr bude do značné míry na vás, abyste se rozhodli, jak dlouho budou protokoly uloženy a v jakém formátu, podle toho, zda máte /var v samostatném oddílu /< logický svazek. V opačném případě opravdu chcete zvážit odstranění starých protokolů, abyste ušetřili úložný prostor. Na druhou stranu můžete být nuceni uchovávat několik protokolů pro budoucí bezpečnostní audit v souladu s interními zásadami vaší společnosti nebo klienta.
Ukládání protokolů do databáze
Zkoumání protokolů (dokonce i s pomocí nástrojů jako grep a regulární výrazy) se samozřejmě může stát poměrně únavným úkolem. Z tohoto důvodu nám rsyslog umožňuje exportovat je do databáze (OTB podporované RDBMS zahrnují MySQL, MariaDB, PostgreSQL a Oracle.
Tato část výukového programu předpokládá, že jste již nainstalovali server a klienta MariaDB do stejného pole RHEL 7, kde jsou spravovány protokoly:
yum update && yum install mariadb mariadb-server mariadb-client rsyslog-mysql
systemctl enable mariadb && systemctl start mariadb
Poté pomocí nástroje mysql_secure_installation
nastavte heslo pro uživatele root a další bezpečnostní aspekty:
Poznámka: Pokud nechcete používat kořenového uživatele MariaDB k vkládání zpráv protokolu do databáze, můžete nakonfigurovat jiný uživatelský účet udělat to tak. Vysvětlení, jak to udělat, je mimo rozsah tohoto tutoriálu, ale je podrobně vysvětleno v databázi znalostí MariaDB. V tomto tutoriálu budeme pro jednoduchost používat účet root.
Dále si stáhněte skript createDB.sql z GitHubu a importujte jej do databázového serveru:
mysql -u root -p < createDB.sql
Nakonec přidejte následující řádky do /etc/rsyslog.conf:
$ModLoad ommysql
$ActionOmmysqlServerPort 3306
*.* :ommysql:localhost,Syslog,root,YourPasswordHere
Restartujte rsyslog a databázový server:
systemctl restart rsyslog
systemctl restart mariadb
Dotazování protokolů pomocí syntaxe SQL
Nyní proveďte některé úkoly, které upraví protokoly (například zastavení a spouštění služeb), poté se přihlaste k serveru DB a použijte standardní příkazy SQL k zobrazení a vyhledávání v protokolech:
USE Syslog;
SELECT ReceivedAt, Message FROM SystemEvents;
souhrn
V tomto článku jsme vysvětlili, jak nastavit systémové protokolování, jak protokoly střídat a jak přesměrovat zprávy do databáze pro snadnější vyhledávání. Doufáme, že vám tyto dovednosti pomohou při přípravě na zkoušku RHCE a také při vašich každodenních povinnostech.
Jako vždy je vaše zpětná vazba více než vítána. Neváhejte nás kontaktovat pomocí níže uvedeného formuláře.