lnav - Kuckt an analyséiert Apache Logbicher vun engem Linux Terminal


Virun manner wéi zwou Wochen huet de Wannacry Ransomware Attack Dausende vu Computeren kompromittéiert, wat bedeitend Verloschter fir grouss Firmen an Individuen verursaacht huet. Dat, zesumme mat anere verbreete Schwachstelle, déi an de leschte Joeren fonnt goufen (wéi de Shellshock Käfer), beliicht d'Wichtegkeet fir uewen op Äre missionskritesch Systemer ze bleiwen.

Och wann Schwachstelle dacks op ee spezifesche Betribssystem oder Softwarekomponent zielen, kann d'Untersuchung vum Traffic deen an Ärem Netz geet eng bedeitend Hëllef sinn fir d'Verméigen ze schützen fir déi Dir verantwortlech sidd.

Wéi ech sécher sinn, datt Dir scho wësst, System Logbicher sinn déi éischt Plaz wou mir fir dës Informatioun sichen soll. Fir dës Aufgab méi einfach ze maachen, wäerte mir an dësem Artikel erkläre wéi lnav installéiert a benotzt gëtt, en fortgeschratt Log Datei Viewer. Mat lnav kënnt Dir verschidden Aarte vu Logbicher gläichzäiteg kucken, duerch d'Datei navigéieren mat Hotkeys, an e resuméierten Histogramm vun Zougang a Feeler generéieren. Also weider liesen!

Installéieren a starten lnav am Linux

Fir lnav z'installéieren, benotzt de Package Management System vun Ärer Verdeelung.

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

Soubal d'Installatioun fäerdeg ass, start lnav gefollegt vum absolute Wee an de Verzeichnis wou d'Logbicher déi ënnersicht ginn sinn. Well dëst typesch /var/log wäert sinn, loosst eis maachen:

# lnav /var/log/httpd

fir d'Logbicher vum Apache Webserver an engem CentOS 7 ze kontrolléieren:

Loosst eis kuerz d'Ausgab am viregten Bild ënnersicht:

  • Uewe riets am Eck weist d'Dateien déi momentan iwwerpréift ginn (access_log-20170519 an access_log). Wann Dir erof oder erop scrollt, bemierkt Dir datt d'Dateinamen änneren wann Dir vun engem op dat anert gitt.
  • 40x HTTP Äntwerten (zum Beispill Net fonnt oder Verbueden) ginn fett ugewisen, wärend 20x Äntwerten am regulären Text ugewise ginn.
  • IP Adresse schéngen fett gréng.

Dat gesäit sécher gutt aus, oder? Awer loosst eis elo e bësse méi déif graven, a mir wäerte gesinn datt lnav vill méi gëtt wéi e schéine faarwege Output.

Wann Dir virwëtzeg sidd firwat Feeler Logbicher net ugewise ginn, fannt Dir d'Äntwert méi spéit an dësem Artikel. Also weider liesen!

Änneren d'Ausgab mat Optiounen an Hotkeys

Ier mer weidergoen, loosst eis e puer Hotkeys oplëschten, déi eis erlaben duerch d'Ausgab vum lnav an déi verfügbar Vue méi einfach ze bewegen:

  • e oder E fir op déi nächst/viregt Fehlermeldung ze sprangen.
  • w oder W fir op déi nächst/virdrun Warnungsmeldung ze sprangen.
  • b oder Backspace fir op déi viregt Säit ze réckelen.
  • Plaz fir op déi nächst Säit ze goen.
  • g oder G fir no uewen/ënnen vun der aktueller Vue ze réckelen.

Wann d'Logbicher rotéiert ginn, kënnen al Dateien kompriméiert ginn (oder net) ofhängeg vun den Astellungen, déi an de Logrotate Konfiguratiounsdateien spezifizéiert sinn. Fir kompriméiert Dateien an der Ausgab opzehuelen, start lnav wéi follegt:

# lnav -r /var/log/httpd

Wann Dir de Wee wéi lnav funktionnéiert méi no kucken wëllt, kënnt Dir de Programm mat der -d Optioun starten, gefollegt vun engem Dateinumm, wou d'Debug-Informatioun geschriwwe gëtt, sou wéi:

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

An dësem Beispill gëtt d'Debug-Informatioun, déi generéiert gëtt wann lnav ufänkt, op eng Datei mam Numm lnav.txt am aktuellen Aarbechtsverzeichnis geschriwwe ginn.

Déi éischt puer Zeilen vun dëser Datei ginn am folgende Bild gewisen:

Den markéierten Text weist datt lnav d'Standardformatdatei gelueden huet a méi spezifesch den Access_log Format fir den Apache Access Log ze analyséieren. Zousätzlech erlaabt lnav all Ausgangslinn ze analyséieren sou datt d'Ausgab méi einfach gëtt ze visualiséieren an ze verstoen.

Fir dës Fonktioun ze benotzen, lancéiert de Programm a wielt d'Linn déi Dir parse wëllt. Déi gewielte Linn ass ëmmer déi uewen an der Fënster. Da dréckt p an Dir sollt dat folgend Resultat gesinn:

Fir an den normalen Modus zréckzekommen, dréckt nach eng Kéier op p.

Elo, wann Dir e Resumé vun de Logbicher no Datum an Zäit wëllt gesinn, dréckt i. Zum Beispill weist den markéierten Text un datt e Méindeg, den 10. Abrëll, tëscht 22 an 23 Auer, 37 HTTP-Ufroe waren, mat 14 zu Feeler.

Wann Dir e potenzielle Problem identifizéiert hutt op Basis vum Histogramm wéi hei uewen gewisen, kënnt Dir op i drécken fir d'Vue auszeschléissen fir se méi am Detail mam Parser z'ënnersichen wéi virdru erkläert. Oder Dir kënnt och déi agebaute SQL Fäegkeeten benotzen andeems Dir e Semikolon tippt an eng Standard Query schreift. Zum Beispill, maachen:

;.schema

fir déi verfügbar Tabellen am Datebankschema ze gesinn. Nodeems Dir déi richteg Tabell identifizéiert (access_log an eisem Fall), dréckt q a benotzt dann déi folgend Ufro fir all verfügbar Informatioun iwwer Ufroen zréckzekommen, déi vum 195.154.230.31 kommen:

;SELECT * FROM access_log WHERE c_ip='195.154.230.31'

Bedenkt datt mir d'Resultater och duerch log_time filtere kënnen. De Punkt ass, werfen e bësse SQL an den Himmel ass d'Limite fir wat Dir mat lnav maache kënnt.

Apache Standard Log Formater

Vill Logformate ginn als Standard mat lnav gelueden a ginn also ouni eis Interventioun parséiert. Dir kënnt d'Lëscht an der Sektioun Log Formater an der offizieller Dokumentatioun kucken.

Standardformate ginn an ~/.lnav/formats/default/default-formats.json.sample spezifizéiert, an anerer kënnen ~/.lnav/formate mat der .json Extensioun bäigefüügt ginn.

Wéi och ëmmer, dës Dateien z'änneren erfuerdert e gewësse Grad vu Bekanntschaft mat JSON (Javascript Object Notation) a mat der PCRE (Perl-Compatible Regular Expressions) Bibliothéik.

Also firwat huet lnav d'Apache Feeler Log Dateien net ugewisen? De Grond ass datt dës Logbicher keng regulär Ausdrock an den existente Formatdateien entspriechen, an dofir als regulär Textdateien behandelt ginn (dat heescht Dateien ouni e bestëmmte Logformat).

Wéi virdru scho gesot, kënnt Dir Är eege Formater erstellen wann Dir op d'mannst e bësse mat JSON a PCRE vertraut sidd. Dëst kann praktesch kommen, zum Beispill, wann Dir personaliséiert Apache Logbicher definéiert hutt.

Och wa mir den Apache Zougangsprotokoll benotzt hunn fir ze demonstréieren wéi een lnav benotzt, bedenkt datt et e puer aner Aarte vu Logbicher sinn, déi mat dësem Tool gekuckt a parséiert kënne ginn. Wann den Tool e spezifesche Log net erkennt, kënnt Dir zousätzlech Formater erstellen an se installéieren no den Indikatiounen hei.

Hutt Dir Froen oder Kommentaren iwwer dësen Artikel? Wéi ëmmer, fillt Iech gratis eis mat de Formulaire hei drënner ze soen. Mir freeën eis vun Iech ze héieren!