lnav - Gledajte i analizirajte Apache zapise sa Linux terminala


Prije manje od dvije sedmice, napad Wannacry ransomware-a kompromitovao je hiljade računara, uzrokujući značajne gubitke velikim kompanijama i pojedincima. To, zajedno s drugim ranjivostima koje su otkrivene posljednjih godina (kao što je Shellshock bug), naglašava važnost da ostanete na vrhu vaših sistema koji su kritični za misiju.

Iako ranjivosti često ciljaju na jedan određeni operativni sistem ili softversku komponentu, ispitivanje saobraćaja koji ulazi i izlazi iz vaše mreže može biti značajna pomoć u zaštiti imovine za koju ste odgovorni.

Preporučeno čitanje: 4 dobra alata za praćenje i upravljanje dnevnikom otvorenog koda za Linux

Kao što sam siguran da već znate, sistemski dnevnici su prvo mjesto gdje bismo trebali potražiti ove informacije. Da bismo olakšali ovaj zadatak, u ovom članku ćemo objasniti kako instalirati i koristiti lnav, napredni preglednik datoteka dnevnika. Uz lnav, moći ćete istovremeno gledati nekoliko tipova dnevnika, kretati se kroz datoteku koristeći prečice i generirati sažeti histogram pristupa i grešaka. Zato nastavite čitati!

Instaliranje i pokretanje lnav u Linuxu

Da instalirate lnav, koristite sistem upravljanja paketima vaše distribucije.

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

Kada je instalacija završena, pokrenite lnav praćeno apsolutnom putanjom do direktorija u kojem se nalaze evidencije koje treba pregledati. Pošto će to obično biti /var/log, uradimo:

lnav /var/log/httpd

da pregledate dnevnike Apache web servera u CentOS 7:

Pogledajmo ukratko rezultat prikazan na prethodnoj slici:

  • Gornji desni kut prikazuje datoteke koje se trenutno pregledavaju (access_log-20170519 i access_log). Dok skrolujete dole ili gore, primetićete da se nazivi fajlova mogu promeniti kako prelazite od jednog do drugog.
  • 40x HTTP odgovora (na primjer, Nije pronađeno ili Zabranjeno) se prikazuje podebljano, dok je prikazano 20x odgovora u redovnom tekstu.
  • IP adrese su podebljane zelene boje.

To svakako izgleda lijepo, zar ne? Ali hajde da sada kopamo malo dublje i videćemo da lnav pruža mnogo više od lepo obojenog izlaza.

Ako vas zanima zašto se ne prikazuju evidencije grešaka, odgovor ćete pronaći kasnije u ovom članku. Zato nastavite čitati!

Modifikacija izlaza sa opcijama i prečicama

Prije nego što nastavimo dalje, nabrojimo nekoliko prečica koje će nam omogućiti da se lakše krećemo kroz izlaz lnav-a i dostupnih prikaza:

  • e ili E za prelazak na sljedeću/prethodnu poruku o grešci.
  • w ili W za prelazak na sljedeću/prethodnu poruku upozorenja.
  • b ili Backspace za prelazak na prethodnu stranicu.
  • Prostor za prelazak na sljedeću stranicu.
  • g ili G za pomicanje na vrh/dno trenutnog prikaza.

Kada se zapisnici rotiraju, stare datoteke mogu biti komprimirane (ili ne) ovisno o postavkama navedenim u konfiguracijskim datotekama za rotiranje dnevnika. Da biste uključili komprimirane datoteke u izlaz, pokrenite lnav na sljedeći način:

lnav -r /var/log/httpd

Ako želite detaljnije pogledati način na koji lnav radi, možete pokrenuti program s opcijom -d praćenim imenom datoteke u koju će biti zapisane informacije o otklanjanju grešaka, na sljedeći način:

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

U ovom primjeru, informacije za otklanjanje grešaka koje se generiraju kada se lnav pokrene biće zapisane u datoteku pod nazivom lnav.txt unutar trenutnog radnog direktorija.

Prvih nekoliko redova te datoteke prikazano je na sljedećoj slici:

Istaknuti tekst ukazuje da je lnav učitao datoteku zadanih formata i, preciznije, format access_log da raščlani Apache pristupni dnevnik. Dodatno, lnav omogućava raščlanjivanje svake izlazne linije tako da izlaz postane lakši za vizualizaciju i razumijevanje.

Preporučeno čitanje: GoAccess (Apache u realnom vremenu i Nginx) analizator dnevnika web servera

Da biste koristili ovu funkciju, pokrenite program i odaberite liniju koju želite raščlaniti. Odabrana linija je uvijek ona na vrhu prozora. Zatim pritisnite p i trebali biste vidjeti sljedeći rezultat:

Za povratak u normalan način rada, ponovo pritisnite p.

Sada, ako želite da vidite sažetak dnevnika po datumu i vremenu, pritisnite i. Na primjer, istaknuti tekst pokazuje da je u ponedjeljak, 10. aprila, između 22 i 23 sata, bilo 37 HTTP zahtjeva od kojih je 14 rezultiralo greškama.

Nakon što ste identifikovali potencijalni problem na osnovu histograma kao što je prikazano iznad, možete pritisnuti i da izađete iz pogleda da biste ga detaljnije ispitali koristeći parser kao što je ranije objašnjeno. Ili možete koristiti ugrađene SQL mogućnosti tako što ćete upisati tačku i zarez i napisati standardni upit. Na primjer, uradite:

;.schema

za pregled dostupnih tablica u šemi baze podataka. Nakon što identifikujemo pravu tabelu (access_log u našem slučaju), pritisnemo q, a zatim upotrijebimo sljedeći upit da vratimo sve dostupne informacije o zahtjevima koji dolaze sa 195.154.230.31:

;SELECT * FROM access_log WHERE c_ip='195.154.230.31'

Imajte na umu da smo također mogli filtrirati rezultate prema log_time. Poenta je da ubacite malo SQL-a i nebo je granica u pogledu onoga što možete učiniti s lnav-om.

Apache Default Log Formats

Mnogi formati dnevnika se podrazumevano učitavaju sa lnav i stoga se analiziraju bez naše intervencije. Listu možete pogledati u odeljku Formati dnevnika u zvaničnoj dokumentaciji.

Zadani formati su navedeni u ~/.lnav/formats/default/default-formats.json.sample, a drugi se mogu dodati ~/.lnav/formats pomoću .json ekstenzija.

Međutim, uređivanje ovih datoteka zahtijeva određeni stepen poznavanja JSON-a (Javascript Object Notation) i PCRE (Perl-Compatible Regular Expressions) biblioteke.

Pa zašto lnav nije prikazao Apache fajlove evidencije grešaka? Razlog je taj što se ovi zapisnici ne podudaraju ni sa jednim regularnim izrazima u datotekama postojećeg formata, te se stoga tretiraju kao regularne tekstualne datoteke (što znači datoteke bez datog formata dnevnika).

Preporučeno čitanje: Kako pratiti učitavanje Apache web servera i statistiku stranice

Kao što je ranije spomenuto, možete kreirati vlastite formate nakon što ste barem donekle upoznati sa JSON i PCRE. Ovo može biti korisno, na primjer, ako ste definirali prilagođene Apache dnevnike.

Sažetak

Iako smo koristili Apache pristupni dnevnik da pokažemo kako se koristi lnav, imajte na umu da postoji nekoliko drugih tipova dnevnika koji se mogu pregledati i raščlaniti pomoću ovog alata. Ako alat ne prepoznaje određeni dnevnik, možete kreirati dodatne formate i instalirati ih slijedeći ovdje navedene naznake.

Imate li pitanja ili komentara o ovom članku? Kao i uvijek, slobodno nas obavijestite koristeći formu ispod. Radujemo se Vašem odgovoru!