Vyhledávání na webu

lnav - Sledujte a analyzujte protokoly Apache z terminálu Linux


Před méně než dvěma týdny ransomwarový útok Wannacry kompromitoval tisíce počítačů a způsobil značné ztráty velkým společnostem i jednotlivcům. To spolu s dalšími rozšířenými zranitelnostmi zjištěnými v posledních letech (jako je chyba Shellshock) zdůrazňují, jak je důležité zůstat na vrcholu svých kritických systémů.

Přestože se zranitelnosti často zaměřují na jeden konkrétní operační systém nebo softwarovou komponentu, zkoumání provozu, který jde dovnitř a ven z vaší sítě, může být významnou pomocí při ochraně majetku, za který jste zodpovědní.

Doporučená četba: 4 dobré nástroje pro monitorování a správu protokolů s otevřeným zdrojovým kódem pro Linux

Jak už jistě víte, systémové protokoly jsou prvním místem, kde bychom měli tyto informace hledat. Abychom si tento úkol usnadnili, v tomto článku vysvětlíme, jak nainstalovat a používat lnav, pokročilý prohlížeč souborů protokolu. S lnav budete moci sledovat několik typů protokolů současně, procházet souborem pomocí klávesových zkratek a generovat souhrnný histogram přístupů a chyb. Tak čtěte dál!

Instalace a spuštění lnav v Linuxu

Chcete-li nainstalovat lnav, použijte systém správy balíčků vaší distribuce.

aptitude install lnav          [Debian and derivatives]
yum install epel-release lnav  [CentOS 7 and similar]

Po dokončení instalace spusťte lnav následovaný absolutní cestou k adresáři, kde jsou umístěny protokoly, které mají být prozkoumány. Protože to bude obvykle /var/log, udělejme to:

lnav /var/log/httpd

pro kontrolu protokolů webového serveru Apache v CentOS 7:

Podívejme se krátce na výstup zobrazený na předchozím obrázku:

  • V pravém horním rohu jsou zobrazeny soubory, které jsou aktuálně kontrolovány (access_log-20170519 a access_log). Při posouvání dolů nebo nahoru si všimnete, že názvy souborů se mohou při přechodu z jednoho na druhý měnit.
  • 40x HTTP odpovědi (například Nenalezeno nebo Zakázáno) jsou zobrazeny tučně, zatímco 20x odpovědí jsou zobrazeny v běžném textu.
  • IP adresy se zobrazují tučně zeleně.

To určitě vypadá dobře, že? Ale pojďme se nyní ponořit trochu hlouběji a uvidíme, že lnav poskytuje mnohem více než jen pěkně barevný výstup.

Pokud vás zajímá, proč se nezobrazují protokoly chyb, odpověď najdete dále v tomto článku. Tak čtěte dál!

Úprava výstupu pomocí voleb a klávesových zkratek

Než budeme pokračovat, uveďme si několik klávesových zkratek, které nám umožní snadněji procházet výstupem lnav a dostupnými pohledy:

  • e nebo E pro přechod na další/předchozí chybovou zprávu.
  • w nebo W pro přechod na další/předchozí varovnou zprávu.
  • b nebo Backspace pro přesun na předchozí stránku.
  • Prostor pro přesun na další stránku.
  • g nebo G pro přesun do horní/dolní části aktuálního zobrazení.

Při rotaci protokolů mohou být staré soubory komprimovány (nebo ne) v závislosti na nastavení zadaném v konfiguračních souborech logrotate. Chcete-li do výstupu zahrnout komprimované soubory, spusťte lnav následovně:

lnav -r /var/log/httpd

Pokud se chcete blíže podívat na způsob, jakým lnav funguje, můžete program spustit pomocí volby -d následované názvem souboru, do kterého budou zapsány ladicí informace, například:

lnav /var/log/httpd -d lnav.txt

V tomto příkladu budou informace o ladění generované při spuštění lnav zapsány do souboru s názvem lnav.txt v aktuálním pracovním adresáři.

Prvních několik řádků tohoto souboru je zobrazeno na následujícím obrázku:

Zvýrazněný text znamená, že lnav načetl soubor výchozích formátů a konkrétněji formát access_log pro analýzu protokolu přístupu Apache. Navíc lnav umožňuje analyzovat každý výstupní řádek, aby byl výstup snadněji vizualizovatelný a pochopitelný.

Doporučené čtení: GoAccess (Apache a Nginx v reálném čase) Web Server Log Analyzer

Chcete-li použít tuto funkci, spusťte program a vyberte řádek, který chcete analyzovat. Vybraný řádek je vždy ten v horní části okna. Poté stiskněte p a měli byste vidět následující výsledek:

Pro návrat do normálního režimu stiskněte znovu p.

Nyní, pokud chcete vidět souhrn protokolů podle data a času, stiskněte i. Zvýrazněný text například naznačuje, že v pondělí 10. dubna mezi 22. a 23. hodinou bylo 37 požadavků HTTP, z nichž 14 mělo za následek chyby.

Jakmile identifikujete potenciální problém na základě histogramu, jak je uvedeno výše, můžete stisknutím i opustit zobrazení a prozkoumat jej podrobněji pomocí analyzátoru, jak bylo vysvětleno výše. Nebo můžete také použít vestavěné funkce SQL zadáním středníku a standardním dotazem. Například:

;.schema

pro zobrazení dostupných tabulek ve schématu databáze. Po identifikaci správné tabulky (v našem případě access_log) stiskněte q a poté pomocí následujícího dotazu vraťte všechny dostupné informace o požadavcích přicházejících z 195.154.230.31:

;SELECT * FROM access_log WHERE c_ip='195.154.230.31'

Všimněte si, že jsme mohli také filtrovat výsledky podle log_time. Jde o to, přidat trochu SQL a nebe je limitem toho, co můžete s lnav dělat.

Výchozí formáty protokolů Apache

Mnoho formátů protokolů se ve výchozím nastavení načítá pomocí lnav, a proto jsou analyzovány bez našeho zásahu. Seznam si můžete prohlédnout v sekci Formáty protokolů v oficiální dokumentaci.

Výchozí formáty jsou specifikovány v ~/.lnav/formats/default/default-formats.json.sample a další lze přidat ~/.lnav/formats pomocí .json.

Úprava těchto souborů však vyžaduje určitý stupeň obeznámenosti s JSON (Javascript Object Notation) a s knihovnou PCRE (Perl-Compatible Regular Expressions).

Proč tedy lnav nezobrazil soubory protokolu chyb Apache? Důvodem je, že tyto protokoly neodpovídají žádným regulárním výrazům v existujících souborech formátu, a proto jsou považovány za běžné textové soubory (což znamená soubory bez daného formátu protokolu).

Doporučená číst: Jak sledovat zatížení webového serveru Apache a statistiky stránek

Jak již bylo zmíněno dříve, můžete si vytvořit vlastní formáty, jakmile budete alespoň trochu obeznámeni s JSON a PCRE. To se může hodit, například pokud máte nadefinované vlastní protokoly Apache.

souhrn

Ačkoli jsme použili přístupový protokol Apache, abychom demonstrovali, jak používat lnav, mějte na paměti, že existuje několik dalších typů protokolů, které lze pomocí tohoto nástroje zobrazit a analyzovat. Pokud nástroj nerozpozná konkrétní protokol, můžete vytvořit další formáty a nainstalovat je podle zde uvedených pokynů.

Máte nějaké dotazy nebo připomínky k tomuto článku? Jako vždy nám dejte vědět pomocí formuláře níže. Těšíme se na setkání s Vámi!