Vyhledávání na webu

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:

  1. ladit
  2. info
  3. oznámení
  4. Varování
  5. chybovat
  6. krit
  7. upozornění
  8. 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.