lnav - Urmăriți și analizați jurnalele Apache de la un terminal Linux


Cu mai puțin de două săptămâni în urmă, atacul ransomware Wannacry a compromis mii de computere, provocând pierderi considerabile atât marilor companii, cât și persoanelor fizice. Acest lucru, împreună cu alte vulnerabilități larg răspândite găsite în ultimii ani (cum ar fi bug-ul Shellshock), evidențiază importanța de a rămâne în fruntea sistemelor tale critice pentru misiune.

Deși vulnerabilitățile vizează adesea un anumit sistem de operare sau componentă software, examinarea traficului care intră și iese din rețea poate fi un ajutor semnificativ pentru a proteja activele pentru care ești responsabil.

Lectură recomandată: 4 instrumente bune de monitorizare și gestionare a jurnalelor open source pentru Linux

După cum sunt sigur că știți deja, jurnalele de sistem sunt primul loc în care ar trebui să căutăm aceste informații. Pentru a ușura această sarcină, în acest articol vom explica cum să instalați și să utilizați lnav, un vizualizator avansat de fișiere jurnal. Cu lnav, veți putea să urmăriți mai multe tipuri de jurnale simultan, să navigați prin fișier folosind taste rapide și să generați o histogramă rezumată a acceselor și erorilor. Așa că continuă să citești!

Instalarea și lansarea lnav în Linux

Pentru a instala lnav, utilizați sistemul de gestionare a pachetelor al distribuției dvs.

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

Odată ce instalarea este finalizată, lansați lnav urmat de calea absolută către directorul în care se află jurnalele de examinat. Deoarece acesta va fi de obicei /var/log, să facem:

lnav /var/log/httpd

pentru a inspecta jurnalele serverului web Apache într-un CentOS 7:

Să examinăm pe scurt rezultatul prezentat în imaginea anterioară:

  • Colțul din dreapta sus arată fișierele în curs de inspectare (access_log-20170519 și access_log). Pe măsură ce derulați în jos sau în sus, veți observa că numele fișierelor se pot schimba pe măsură ce treceți de la unul la altul.
  • Răspunsurile de 40x HTTP (de exemplu, Negăsit sau Interzis) sunt afișate cu caractere aldine, în timp ce răspunsurile de 20x sunt afișate în text obișnuit.
  • Adresele IP apar cu verde aldine.

Cu siguranță arată frumos, nu-i așa? Dar haideți să săpăm puțin mai adânc acum și vom vedea că lnav oferă mult mai mult decât o ieșire destul de colorată.

Dacă sunteți curios de ce nu sunt afișate jurnalele de erori, veți găsi răspunsul mai târziu în acest articol. Așa că continuă să citești!

Modificarea ieșirii cu opțiuni și taste rapide

Înainte de a continua, să enumerăm câteva taste rapide care ne vor permite să trecem mai ușor prin ieșirea lnav și vizualizările disponibile:

  • e sau E pentru a trece la mesajul de eroare următor/anterior.
  • w sau W pentru a trece la mesajul de avertizare următor/anterior.
  • b sau Backspace pentru a trece la pagina anterioară.
  • Spațiu pentru a trece la pagina următoare.
  • g sau G pentru a vă deplasa în partea de sus/de jos a vizualizării curente.

Când jurnalele sunt rotite, fișierele vechi pot fi comprimate (sau nu) în funcție de setările specificate în fișierele de configurare logrotate. Pentru a include fișiere comprimate în rezultat, lansați lnav după cum urmează:

lnav -r /var/log/httpd

Dacă doriți să aruncați o privire mai atentă asupra modului în care funcționează lnav, puteți lansa programul cu opțiunea -d urmată de un nume de fișier în care vor fi scrise informațiile de depanare, astfel:

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

În acest exemplu, informațiile de depanare care sunt generate la pornirea lnav vor fi scrise într-un fișier numit lnav.txt în directorul de lucru curent.

Primele câteva rânduri ale acelui fișier sunt afișate în următoarea imagine:

Textul evidențiat indică faptul că lnav a încărcat fișierul de formate implicite și, mai precis, formatul access_log pentru a analiza jurnalul de acces Apache. În plus, lnav permite analizarea fiecărei linii de ieșire, astfel încât rezultatul să devină mai ușor de vizualizat și înțeles.

Lectură sugerată: Analizor de jurnal de server web GoAccess (un Apache și Nginx în timp real)

Pentru a utiliza această caracteristică, lansați programul și alegeți linia pe care doriți să o analizați. Linia selectată este întotdeauna cea din partea de sus a ferestrei. Apoi apăsați p și ar trebui să vedeți următorul rezultat:

Pentru a reveni la modul normal, apăsați din nou pe p.

Acum, dacă doriți să vedeți un rezumat al jurnalelor după dată și oră, apăsați i. De exemplu, textul evidențiat indică faptul că luni, 10 aprilie, între orele 22 și 23, au fost 37 de solicitări HTTP din care 14 au rezultat în erori.

Odată ce ați identificat o problemă potențială pe baza histogramei, așa cum se arată mai sus, puteți apăsa pe i pentru a părăsi vizualizarea și a o examina mai detaliat folosind parserul, așa cum a fost explicat mai devreme. Sau puteți utiliza, de asemenea, capabilitățile SQL încorporate tastând un punct și virgulă și scriind o interogare standard. De exemplu, faceți:

;.schema

pentru a vizualiza tabelele disponibile în schema bazei de date. După identificarea tabelului potrivit (access_log în cazul nostru), să apăsăm q și apoi să folosim următoarea interogare pentru a returna toate informațiile disponibile despre solicitările care provin de la 195.154.230.31:

;SELECT * FROM access_log WHERE c_ip='195.154.230.31'

Rețineți că am fi putut filtra rezultatele și după log_time. Ideea este că introduceți puțin SQL și cerul este limita în ceea ce privește ceea ce puteți face cu lnav.

Formate de jurnal implicite Apache

Multe formate de jurnal sunt încărcate implicit cu lnav și sunt astfel analizate fără intervenția noastră. Puteți vizualiza lista în secțiunea Formate de jurnal din documentația oficială.

Formatele implicite sunt specificate în ~/.lnav/formats/default/default-formats.json.sample, iar altele pot fi adăugate ~/.lnav/formats folosind .json extensie.

Cu toate acestea, editarea acestor fișiere necesită un anumit grad de familiaritate cu JSON (Javascript Object Notation) și cu biblioteca PCRE (Perl-Compatible Regular Expressions).

Deci, de ce lnav nu a afișat fișierele jurnal de erori Apache? Motivul este că acele jurnale nu se potrivesc cu nicio expresie regulată din fișierele de format existente și, prin urmare, sunt tratate ca fișiere text obișnuite (adică fișiere fără un anumit format de jurnal).

Lectură sugerată: Cum să monitorizați încărcarea serverului web Apache și statisticile paginii

După cum am menționat mai devreme, vă puteți crea propriile formate odată ce sunteți cel puțin familiarizat cu JSON și PCRE. Acest lucru poate fi util, de exemplu, dacă ați definit jurnalele Apache personalizate.

rezumat

Deși am folosit jurnalul de acces Apache pentru a demonstra cum să folosiți lnav, rețineți că există câteva alte tipuri de jurnale care pot fi vizualizate și analizate folosind acest instrument. Dacă instrumentul nu recunoaște un anumit jurnal, puteți crea formate suplimentare și le puteți instala urmând indicațiile furnizate aici.

Aveți întrebări sau comentarii despre acest articol? Ca întotdeauna, nu ezitați să ne anunțați folosind formularul de mai jos. Asteptam sa auzim de tine!