lnav - Pogledajte i analizirajte zapise Apachea s Linux terminala


Prije manje od dva tjedna napadom ransomware Wannacry kompromitirano je tisuće računala, što je nanijelo znatne gubitke velikim tvrtkama i pojedincima. To, zajedno s ostalim raširenim ranjivostima pronađenim posljednjih godina (poput buba Shellshock), naglašava važnost ostajanja na vrhu vaših kritičnih sustava.

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

Kao što sam siguran da već znate, sistemski zapisnici su prvo mjesto na kojem bismo trebali tražiti ove podatke. Da bismo olakšali ovaj zadatak, u ovom ćemo članku objasniti kako instalirati i koristiti lnav, napredni preglednik datoteka dnevnika. Pomoću lnav moći ćete istodobno gledati nekoliko vrsta dnevnika, kretati se datotekom pomoću interventnih tipki i generirati sažeti histogram pristupa i pogrešaka. Pa nastavite čitati!

Instaliranje i pokretanje lnav-a u Linuxu

Da biste instalirali lnav, upotrijebite sustav 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 nakon čega slijedi apsolutni put do direktorija u kojem se nalaze zapisnici koji se ispituju. Budući da će to obično biti /var/log , učinimo:

# lnav /var/log/httpd

za pregled dnevnika web poslužitelja Apache u CentOS 7:

Ispitajmo ukratko izlaz prikazan na prethodnoj slici:

  • U gornjem desnom kutu prikazane su datoteke koje se trenutno pregledavaju (access_log-20170519 i access_log). Dok se pomičete prema dolje ili prema gore, primijetit ćete da se nazivi datoteka mogu mijenjati tijekom prelaska s jednog na drugi.
  • 40x HTTP odgovori (na primjer, Nije pronađeno ili Zabranjeno) prikazani su podebljano, dok su 20x odgovori prikazani u uobičajenom tekstu.
  • IP adrese pojavljuju se podebljano zeleno.

To sigurno izgleda lijepo, zar ne? No, krenimo sada malo dublje i vidjet ćemo da lnav pruža mnogo više od prilično obojenih rezultata.

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

Modificiranje rezultata s opcijama i prečacima

Prije nego što nastavimo dalje, navedimo nekoliko brzih tipki koje će nam omogućiti da se lakše krećemo kroz izlaz lnav i dostupne poglede:

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

Kad se zapisnici rotiraju, stare datoteke mogu se komprimirati (ili ne), ovisno o postavkama navedenim u konfiguracijskim datotekama logrotate. Da biste uključili komprimirane datoteke u izlaz, pokrenite lnav kako slijedi:

# lnav -r /var/log/httpd

Ako želite pažljivije pogledati način rada lnav-a, možete pokrenuti program s opcijom -d nakon čega slijedi naziv datoteke u koju će se upisivati podaci o otklanjanju pogrešaka, na primjer:

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

U ovom primjeru, podaci o otklanjanju pogrešaka koji se generiraju kad se lnav pokrene bit će zapisani u datoteku koja se zove lnav.txt unutar trenutnog radnog direktorija.

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

Označeni tekst označava da je lnav učitao datoteku zadanih formata i, točnije, format access_log za raščlanjivanje dnevnika pristupa Apacheu. Uz to, lnav omogućuje raščlanjivanje svakog izlaznog retka tako da izlaz postaje lakše vizualizirati i razumjeti.

Da biste koristili ovu značajku, pokrenite program i odaberite redak koji želite raščlaniti. Odabrani redak uvijek je onaj na vrhu prozora. Zatim pritisnite p i trebali biste vidjeti sljedeći rezultat:

Da biste se vratili u uobičajeni način rada, ponovno pritisnite p .

Ako želite vidjeti sažetak dnevnika po datumu i vremenu, pritisnite i . Primjerice, istaknuti tekst ukazuje da je u ponedjeljak, 10. travnja, između 22 i 23 sata, bilo 37 HTTP zahtjeva s 14 što je rezultiralo pogreškama.

Nakon što identificirate potencijalni problem na temelju histograma kao što je gore prikazano, možete pritisnuti i da biste izašli iz prikaza da biste ga detaljnije pregledali pomoću parsera kako je ranije objašnjeno. Ili također možete koristiti ugrađene SQL mogućnosti tako što ćete utipkati točku i zarez i napisati standardni upit. Na primjer, učinite:

;.schema

za prikaz dostupnih tablica u shemi baze podataka. Nakon identificiranja prave tablice (u našem slučaju pristupni_log), pritisnite q , a zatim pomoću sljedećeg upita vratimo sve dostupne informacije o zahtjevima koji dolaze iz 195.154.230.31:

;SELECT * FROM access_log WHERE c_ip='195.154.230.31'

Imajte na umu da smo rezultate mogli filtrirati i prema log_time. Poanta je ubaciti malo SQL-a i nebo je granica onoga što možete učiniti s lnav-om.

Apache zadani formati dnevnika

Mnogi se formati dnevnika prema zadanim postavkama učitavaju s lnav i tako se raščlanjuju bez naše intervencije. Popis možete pogledati u odjeljku Formati zapisa u službenoj dokumentaciji.

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

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

Pa zašto lnav nije prikazao datoteke dnevnika pogrešaka Apache? Razlog je taj što se ti zapisnici ne podudaraju ni s jednim regularnim izrazom u postojećim datotekama formata, pa se prema tome tretiraju kao redovite tekstualne datoteke (što znači datoteke bez zadanog formata dnevnika).

Kao što je ranije spomenuto, možete stvoriti vlastite formate kada se barem donekle upoznate s JSON-om i PCRE-om. To može dobro doći, na primjer, ako ste definirali prilagođene Apache zapisnike.

Iako smo koristili Apache pristupni dnevnik kako bismo demonstrirali kako se koristi lnav, imajte na umu da postoji nekoliko drugih vrsta dnevnika koji se mogu pregledati i raščlaniti pomoću ovog alata. Ako alat ne prepoznaje određeni zapisnik, možete stvoriti dodatne formate i instalirati ih prema ovdje navedenim naznakama.

Imate li pitanja ili komentare u vezi s ovim člankom? Kao i uvijek slobodno nas obavijestite putem donjeg obrasca. Radujemo se vašem javljanju!