GNU/Linux >> Znalost Linux >  >> Linux

Průvodce pro začátečníky k Syslogs v Linuxu

Po desetiletí bylo protokolování Linuxu spravováno démonem syslogd.

Syslogd by shromažďoval zprávy protokolu, které systém zpracovává, a aplikace odeslané do pseudo zařízení /dev/log. Potom by zprávy směroval do příslušných souborů protokolu ve formátu prostého textu v adresáři /var/log/.

Syslogd by věděl, kam zprávy odeslat, protože každá obsahuje záhlaví obsahující pole metadat (včetně časového razítka a původu a priority zprávy).

V návaznosti na neúprosný, svět dobývající moloch systemd nyní logování Linuxu zajišťuje také journald. Říkám to také proto, že syslogd nikam neodešel a většinu jeho tradičních souborů protokolu stále najdete v /var/log/. Ale musíte si být vědomi toho, že ve městě je nový šerif, jehož jméno (příkazový řádek) je journalctl.

Ale tento článek není o journald. Zaměřujeme se zde na systemd, takže si to pojďme probrat trochu víc.

Protokolování pomocí syslogd

Všechny protokoly generované událostmi v systému syslogd jsou přidány do souboru /var/log/syslog. Ale v závislosti na jejich identifikačních charakteristikách mohou být také odeslány do jednoho nebo více dalších souborů ve stejném adresáři.

U syslogd je způsob distribuce zpráv určen obsahem 50-default.conf soubor, který se nachází v /etc/rsyslog.d/ adresář.

Tento příklad z 50-default.conf ukazuje, jak budou zprávy protokolu označené jako související s cronem zapsány do souboru cron.log. V tomto případě hvězdička (*) říká syslogd, aby posílal záznamy s libovolnou úrovní priority (na rozdíl od jedné úrovně jako emerg nebo err):

cron.*     /var/log/cron.log

Práce se soubory protokolu syslogd nevyžaduje žádné speciální nástroje, jako je journalctl. Ale pokud se v tom chcete zdokonalit, musíte vědět, jaké informace jsou uchovávány v každém ze standardních souborů protokolu.

Níže uvedená tabulka uvádí nejběžnější soubory protokolu syslogd a
jejich účely.

Název souboru Účel
auth.log Ověřování systému a události zabezpečení
boot.log Záznam událostí souvisejících s bootováním
dmesg Události vyrovnávací paměti kernel-ring související s ovladači zařízení
dpkg.log Události správy softwarových balíčků
kern.log Události linuxového jádra
syslog Sbírka všech protokolů
wtmp Sleduje uživatelské relace (přístupné prostřednictvím příkazů who a last)

Jednotlivé aplikace navíc někdy zapisují do svých vlastních souborů protokolu. Často také uvidíte celé adresáře jako /var/log/apache2/ nebo /var/log/mysql/ vytvořené pro příjem dat aplikace.

Přesměrování protokolu lze také ovládat prostřednictvím kterékoli z osmi úrovní priority, kromě symbolu * (pro všechny úrovně priority), který jste viděli dříve.

Úroveň Popis
ladění Užitečné pro ladění
informace Informační
upozornění Normální podmínky
varovat Podmínky vyžadující varování
chyba Chybové stavy
crit Kritické podmínky
upozornění Je vyžadována okamžitá akce
emerg Systém je nepoužitelný

Správa souborů protokolu pomocí sysglogd

Ve výchozím nastavení syslogd zpracovává rotaci protokolu, kompresi a mazání za scénou bez vaší pomoci. Ale měli byste vědět, jak se to dělá, pro případ, že byste někdy měli protokoly vyžadující speciální ošetření.

Jaký druh speciálního ošetření může někdy vyžadovat jednoduchá kláda? Předpokládejme, že vaše společnost musí být v souladu s pravidly pro hlášení transakcí souvisejícími s regulačními nebo průmyslovými standardy, jako je Sarbanes-Oxley nebo PCI-DSS. Pokud vaše záznamy o infrastruktuře IT musí zůstat dostupné po delší dobu, pak budete určitě chtít
abyste věděli, jak se orientovat v klíčových souborech.

Chcete-li vidět systém logrotate v akci, vypište část obsahu adresáře /var/log/. Například soubor auth.log se objevuje ve třech různých formátech:

  • auth.log – Verze, která je aktuálně aktivní a do které se zapisují nové ověřovací zprávy.
  • auth.log.1 - Nejnovější soubor, který byl vyřazen z provozu. Uchovává se v nekomprimovaném formátu, aby bylo v případě potřeby snazší jej rychle znovu aktivovat.
  • auth.log.2.gz - Starší kolekce (jak můžete vidět z přípony souboru .gz v následujícím seznamu), která byla zkomprimována, aby se ušetřilo místo.

Po sedmi dnech, kdy nastane datum další rotace, bude auth.log.2.gz přejmenován na auth.log.3.gz, auth.log.1 bude komprimován a přejmenován na auth.log.2.gz, auth.log se změní na auth.log.1 a vytvoří se nový soubor s názvem auth.log.

Výchozí cyklus rotace protokolu je řízen v souboru /etc/logrotate.conf. Hodnoty znázorněné v tomto seznamu rotují soubory po jednom aktivním týdnu a mažou staré soubory po čtyřech týdnech.

# rotate log files weekly
weekly
# keep 4 weeks worth of backlogs
rotate 4
# create new (empty) log files after rotating old ones
create
# packages drop log rotation information into this directory
include /etc/logrotate.

Adresář /etc/logrotate.d/ také obsahuje přizpůsobené konfigurační soubory pro správu rotace protokolů jednotlivých služeb nebo aplikací. Když vypíšete obsah tohoto adresáře, uvidíte tyto konfigurační soubory:

$ ls /etc/logrotate.d/
apache2 apt dpkg mysql-server
rsyslog
samba
unattended-upgrade

Můžete si prohlédnout jejich obsah a zjistit, jaký druh konfigurace mají při rotaci protokolu.

💡Mnoho správců se rozhodlo přesměrovat položky protokolu na účelově vytvořené vzdálené servery protokolů, kde mohou data získat veškerou specializovanou pozornost, kterou si zaslouží. To může uvolnit aplikační servery pro jejich okamžité úkoly a konsolidovat data protokolu do jediného, ​​snadno dostupného centrálního umístění.

Jak číst soubory syslog

Víte, že máte lepší věci na práci s časem, než číst miliony řádků záznamů v protokolu.

Zde byste se měli zcela vyvarovat používání kočky. Jednoduše vysype tisíce řádků na vaši obrazovku.

K filtrování textu v souborech doporučuji použít grep.

Použití příkazu tail -f umožňuje číst aktuální soubor protokolu v reálném čase. Můžete jej zkombinovat s grep a filtrovat požadovaný text.

V některých případech můžete vyžadovat přístup ke starým komprimovaným protokolům. Vždy můžete nejprve rozbalit soubor a poté použít příkazy grep, less a další ke čtení jeho obsahu, existuje však lepší možnost. Existují příkazy z jako zcat, zless atd., které vám umožňují pracovat s komprimovanými soubory, aniž byste je explicitně extrahovali.

Praktický příklad analýzy protokolu

Zde je zřejmý příklad, který bude hledat v souboru auth.log důkazy o neúspěšných pokusech o přihlášení. Hledání slova selhání bude
vrátit jakýkoli řádek obsahující frázi selhání ověření.

Pokud toto jednou za čas zaškrtnete, pomůže vám to odhalit pokusy o kompromitaci účtu uhodnutím správného hesla. Každý může zpackat heslo jednou nebo dvakrát, ale příliš mnoho neúspěšných pokusů by ve vás mělo vzbudit podezření:

$ cat /var/log/auth.log | grep 'Authentication failure'
Sep 6 09:22:21 workstation su[21153]: pam_authenticate: Authentication failure

Pokud jste ten typ správce, který nikdy nedělá chyby, pak toto hledání může přijít prázdné. Můžete si zaručit alespoň jeden výsledek ručním vygenerováním položky protokolu pomocí programu zvaného logger. Zkuste to udělat něco takového:

logger "Authentication failure"

Pravou chybu můžete také předem naprogramovat přihlášením k uživatelskému účtu a zadáním nesprávného hesla.

Jak můžete říci, grep udělal práci za vás, ale z výsledků můžete vidět pouze to, že došlo k selhání ověřování. Nebylo by užitečné vědět, čí účet byl zapojen? Výsledky grep můžete rozšířit tak, že mu řeknete, aby zahrnoval řádky bezprostředně před a po zápase.

Tento příklad vytiskne shodu spolu s čarami kolem ní. Říká vám, že někdo používající účet david se neúspěšně pokusil použít su (přepnout uživatele) k přihlášení k účtu studia:

$ cat /var/log/auth.log | grep -C1 failure
Sep 6 09:22:19 workstation su[21153]: pam_unix(su:auth): authentication
failure; logname= uid=1000 euid=0 tty=/dev/pts/4 ruser=david rhost=
user=studio
Sep 6 09:22:21 workstation su[21153]: pam_authenticate:
Authentication failure
Sep 6 09:22:21 workstation su[21153]: FAILED su for studio by david

Co dál?

Znát základy je jedna věc a aplikovat znalosti druhá věc. Znalost základů však pomáhá v různých situacích.

Nyní, když znáte základy syslogů v Linuxu, možná budete mít trochu lepší čas při práci s protokoly.

Tento článek je úryvkem z knihy Linux v akci od Davida Clintona. Vydává ji Manning Publication a můžete získat 30% slevu na všech knihách Manning pomocí kódu nlitsfoss22 v době pokladny.

Linux v akční knize

Užijte si učení Linuxu.


Linux
  1. Základy Linuxu:Průvodce pro začátečníky k úpravám textu pomocí vim

  2. Průvodce pro začátečníky firewallem v Linuxu

  3. Kompletní průvodce LVM v Linuxu pro začátečníky

  1. Průvodce pro začátečníky koukáním

  2. Soubory protokolu Linux

  3. Služba Linux OS „syslog“

  1. Průvodce pro začátečníky oprávněními pro Linux

  2. Jak používat příkazy Najít a najít v Linuxu:Průvodce pro začátečníky

  3. Jak řešit problémy s výkonem v Linuxu – Průvodce pro začátečníky