lnav - vaadake ja analüüsige Linuxi terminali Apache logisid


Vähem kui kaks nädalat tagasi ohustas Wannacry lunavara rünnak tuhandeid arvuteid, põhjustades märkimisväärseid kahjusid nii suurtele ettevõtetele kui ka üksikisikutele. See koos teiste viimastel aastatel leitud laialt levinud haavatavustega (näiteks Shellshocki viga) tõstavad esile teie missioonikriitiliste süsteemide tipus püsimise olulisuse.

Ehkki haavatavused on sageli suunatud ühele kindlale operatsioonisüsteemile või tarkvarakomponendile, võib teie võrku siseneva ja sealt väljuva liikluse uurimine olla märkimisväärne abivahend vastutavate varade kaitsmisel.

Kuna ma olen kindel, et te juba teate, on süsteemilogid esimene koht, kust peaksime seda teavet otsima. Selle ülesande hõlbustamiseks selgitame selles artiklis, kuidas installida ja kasutada täpsemat logifailivaaturit lnav. Rakendusega lnav saate korraga vaadata mitut tüüpi logisid, navigeerida failide abil kiirklahvide abil ja luua kokkuvõtliku histogrammi juurdepääsudest ja vigadest. Nii et jätka lugemist!

Lnav-i installimine ja käivitamine Linuxis

Lnav installimiseks kasutage oma levitamise paketihaldussüsteemi.

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

Kui installimine on lõpule jõudnud, käivitage lnav, millele järgneb absoluutne tee kataloogi, kus uuritavad logid asuvad. Kuna see on tavaliselt /var/log , tehkem järgmist.

# lnav /var/log/httpd

kontrollida CentOS 7 Apache veebiserveri logisid:

Vaatame lühidalt eelmisel pildil näidatud väljundit:

  • Parempoolses ülanurgas on praegu kontrollitavad failid (access_log-20170519 ja access_log). All või üles kerides märkate, et failinimed võivad ühelt teisele liikudes muutuda.
  • 40x HTTP vastust (näiteks Not Found või Forbidden) kuvatakse rasvases kirjas, 20x vastuseid aga tavalises tekstis.
  • IP-aadressid on rasvases rohelises kirjas.

See näeb kindlasti kena välja, kas pole? Kuid süveneme nüüd veidi sügavamale ja näeme, et lnav pakub palju enamat kui ilus värviline väljund.

Kui olete uudishimulik, miks tõrkeid ei kuvata, leiate vastuse sellest artiklist hiljem. Nii et jätka lugemist!

Väljundi muutmine suvandite ja kiirklahvide abil

Enne kui jätkame, loetlegem mõned kiirklahvid, mis võimaldavad meil lnav-i väljundit ja saadaolevaid vaateid hõlpsamalt liikuda:

  • e või E järgmise/eelmise tõrketeate juurde liikumiseks.
  • w või W järgmise/eelmise hoiatusteate juurde liikumiseks.
  • eelmisele lehele liikumiseks b või Backspace .
  • Järgmisele lehele liikumiseks tühik.
  • g või G praeguse vaate üla-/alaosa liikumiseks.

Logide pööramisel võidakse vanad failid tihendada (või mitte), sõltuvalt logrotate konfiguratsioonifailides määratud sätetest. Tihendatud failide lisamiseks väljundisse käivitage lnav järgmiselt:

# lnav -r /var/log/httpd

Kui soovite lnav-i toimimist lähemalt uurida, saate programmi käivitada suvandiga -d , millele järgneb failinimi, kuhu kirjutatakse silumisteave, näiteks:

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

Selles näites kirjutatakse lnav-i käivitamisel genereeritud silumisteave faili lnav.txt praeguse töökataloogi sees.

Selle faili esimesed read kuvatakse järgmisel pildil:

Esiletõstetud tekst näitab, et lnav laadis Apache'i pääsulogi sõelumiseks vaikevormingute faili ja täpsemalt access_log-vormingu. Lisaks võimaldab lnav kõiki väljundjooni sõeluda, nii et väljundit on hõlpsam visualiseerida ja mõista.

Selle funktsiooni kasutamiseks käivitage programm ja valige rida, mida soovite sõeluda. Valitud rida on alati akna ülaosas. Seejärel vajutage p ja peaksite nägema järgmist tulemust:

Tavarežiimi naasmiseks vajutage uuesti p .

Kui soovite näha logide kokkuvõtet kuupäeva ja kellaaja järgi, vajutage klahvi i . Näiteks osutab esiletõstetud tekst, et esmaspäeval, 10. aprillil kella 22–23 oli 37 HTTP-päringut, millest 14 tõi kaasa vead.

Kui olete ülaltoodud histogrammi põhjal tuvastanud võimaliku probleemi, võite vaates väljumiseks vajutada i , et seda üksikasjalikumalt uurida, kasutades parserit, nagu varem selgitatud. Või võite kasutada sisseehitatud SQL-i võimalusi, sisestades semikooloni ja kirjutades standardpäringu. Näiteks tehke järgmist.

;.schema

andmebaasiskeemi saadaolevate tabelite vaatamiseks. Pärast õige tabeli tuvastamist (meie puhul juurdepääsupäevik) vajutage klahvi q ja kasutage järgmise päringu abil kogu saadaolevat teavet päringute kohta, mis pärinevad aastast 195.154.230.31:

;SELECT * FROM access_log WHERE c_ip='195.154.230.31'

Pange tähele, et oleksime võinud tulemusi filtreerida ka log_time järgi. Asi on selles, et visake sisse väike SQL ja taevas on piir, mida saate lnaviga teha.

Apache vaikelogi vormingud

Paljud logivormingud laaditakse vaikimisi lnav-ga ja parsitakse seega ilma meie sekkumiseta. Loendit saate vaadata ametliku dokumentatsiooni jaotises Logivormingud.

Vaikevormingud on määratud failis ~/.lnav/format/default/default-format.json.sample ja teisi saab lisada ~/.lnav/vormingus laiendiga .json .

Nende failide redigeerimine nõuab aga teatavat JSON-i (Javascripti objektide märkimine) ja PCRE (Perl-Compatible Regular Expressions) teegi tundmist.

Miks siis ei kuvanud lnav Apache tõrke logifaile? Põhjus on see, et need logid ei ühti ühegi regulaaravaldisega olemasolevas vormingus failis ja seetõttu käsitletakse neid tavaliste tekstifailidena (see tähendab failidena, millel pole antud logivormingut).

Nagu varem mainitud, saate oma vormingud luua, kui olete JSONi ja PCRE-ga vähemalt mõnevõrra tuttav. See võib olla kasulik näiteks siis, kui olete määranud kohandatud Apache logid.

Kuigi kasutasime lnav-i kasutamise näitamiseks Apache'i juurdepääsulogi, pidage meeles, et selle tööriista abil saab vaadata ja sõeluda veel mitut tüüpi logisid. Kui tööriist ei tunnista konkreetset logi, saate luua täiendavaid vorminguid ja installida need, järgides siin toodud juhiseid.

Kas teil on selle artikli kohta küsimusi või kommentaare? Nagu alati, andke sellest meile teada alloleva vormi abil. Ootame teid huviga!