Weboldal keresés

lnav – Apache naplók megtekintése és elemzése Linux terminálról


Kevesebb, mint két héttel ezelőtt a Wannacry ransomware támadás több ezer számítógépet veszélyeztetett, és jelentős veszteségeket okozott nagy cégeknek és magánszemélyeknek egyaránt. Ez az elmúlt években feltárt más, széles körben feltárt sebezhetőségekkel (például a Shellshock-hibával) együtt rávilágít annak fontosságára, hogy a küldetéskritikus rendszerek tetején maradjon.

Bár a sebezhetőségek gyakran egy adott operációs rendszert vagy szoftverkomponenst céloznak meg, a hálózatba be- és kimenő forgalom vizsgálata jelentős segítséget jelenthet az Ön felelősségi körébe tartozó eszközök védelmében.

Javasolt olvasmány: 4 jó nyílt forráskódú naplófigyelő és -kezelő eszköz Linuxhoz

Biztos vagyok benne, hogy már tudja, a rendszernaplók az első hely, ahol keresnünk kell ezeket az információkat. A feladat megkönnyítése érdekében ebben a cikkben elmagyarázzuk, hogyan kell telepíteni és használni az lnav fejlett naplófájl-nézegetőt. Az lnav segítségével egyszerre több típusú naplót is megtekinthet, gyorsbillentyűkkel navigálhat a fájlban, és összefoglaló hisztogramot hozhat létre a hozzáférésekről és hibákról. Szóval olvass tovább!

Az lnav telepítése és indítása Linux alatt

Az lnav telepítéséhez használja a disztribúciója csomagkezelő rendszerét.

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

A telepítés befejezése után indítsa el az lnav programot, majd adja meg annak a könyvtárnak az abszolút elérési útját, ahol a vizsgálandó naplók találhatók. Mivel ez általában /var/log, tegyük:

lnav /var/log/httpd

az Apache webszerver naplóinak ellenőrzéséhez CentOS 7 rendszerben:

Vizsgáljuk meg röviden az előző képen látható kimenetet:

  • A jobb felső sarokban láthatók az éppen ellenőrzött fájlok (access_log-20170519 és access_log). Lefelé vagy felfelé görgetés közben észreveheti, hogy a fájlnevek változhatnak, ahogy egyikről a másikra lép.
  • A 40x HTTP válaszok (például Nem található vagy Tiltva) félkövéren jelennek meg, míg a 20x válaszok rendes szövegben.
  • Az IP-címek félkövér zölden jelennek meg.

Ez biztosan jól néz ki, nem? De most ássunk egy kicsit mélyebbre, és látni fogjuk, hogy az lnav sokkal többet nyújt, mint egy szép színű kimenet.

Ha kíváncsi arra, hogy miért nem jelennek meg a hibanaplók, a cikk későbbi részében megtalálja a választ. Szóval olvass tovább!

A kimenet módosítása opciókkal és gyorsbillentyűkkel

Mielőtt továbbmennénk, soroljunk fel néhány gyorsbillentyűt, amelyek segítségével könnyebben mozoghatunk az lnav kimenetén és az elérhető nézeteken:

  • e vagy E a következő/előző hibaüzenetre ugráshoz.
  • w vagy W a következő/előző figyelmeztető üzenetre ugráshoz.
  • b vagy Backspace az előző oldalra lépéshez.
  • Szóköz a következő oldalra lépéshez.
  • g vagy G az aktuális nézet tetejére vagy aljára lépéshez.

A naplók elforgatásakor előfordulhat, hogy a régi fájlok tömörítésre kerülnek (vagy nem) a logrotate konfigurációs fájlokban megadott beállításoktól függően. Ha tömörített fájlokat szeretne tartalmazni a kimenetben, indítsa el az lnav-t az alábbiak szerint:

lnav -r /var/log/httpd

Ha közelebbről meg szeretné tekinteni az lnav működését, elindíthatja a programot a -d kapcsolóval, amelyet egy fájlnév követ, ahová a hibakeresési információk kerülnek, például:

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

Ebben a példában az lnav indításakor generált hibakeresési információk egy lnav.txt nevű fájlba lesznek írva az aktuális munkakönyvtárban.

A fájl első néhány sora a következő képen látható:

A kiemelt szöveg azt jelzi, hogy az lnav betöltötte az alapértelmezett formátumú fájlt, pontosabban az access_log formátumot az Apache hozzáférési napló elemzéséhez. Ezenkívül az lnav lehetővé teszi az egyes kimeneti sorok elemzését, így a kimenet könnyebben láthatóvá és megérthetővé válik.

Javasolt olvasmány: GoAccess (valós idejű Apache és Nginx) webszerver naplóelemzője

A funkció használatához indítsa el a programot, és válassza ki az elemezni kívánt sort. A kiválasztott sor mindig az ablak tetején található. Ezután nyomja meg a p gombot, és a következő eredményt kell látnia:

A normál módba való visszatéréshez nyomja meg ismét a p billentyűt.

Most, ha szeretné látni a naplók összegzését dátum és idő szerint, nyomja meg az i gombot. A kiemelt szöveg például azt jelzi, hogy április 10-én, hétfőn 23 és 23 óra között 37 HTTP-kérés érkezett, 14 pedig hibás.

Miután a fenti módon azonosított egy lehetséges problémát a hisztogram alapján, az i billentyű lenyomásával kiléphet a nézetből, és részletesebben megvizsgálhatja azt az elemző segítségével, a korábban leírtak szerint. Vagy használhatja a beépített SQL-képességeket pontosvessző beírásával és egy szabványos lekérdezés írásával. Például tegye a következőket:

;.schema

az adatbázissémában elérhető táblák megtekintéséhez. A megfelelő tábla (esetünkben access_log) azonosítása után nyomjuk meg a q billentyűt, majd a következő lekérdezéssel adjuk vissza az összes elérhető információt a 195.154.230.31 címről érkező kérésekről:

;SELECT * FROM access_log WHERE c_ip='195.154.230.31'

Vegye figyelembe, hogy az eredményeket a log_time szerint is szűrhettük. A lényeg az, hogy dobj be egy kis SQL-t, és az ég szab határt annak, hogy mit tehetsz az lnav-val.

Apache alapértelmezett naplóformátumai

Sok naplóformátum alapértelmezés szerint betöltődik az lnav segítségével, így a rendszer a mi beavatkozásunk nélkül elemzi. A listát a hivatalos dokumentáció Naplóformátumok részében tekintheti meg.

Az alapértelmezett formátumok a ~/.lnav/formats/default/default-formats.json.sample fájlban vannak megadva, mások pedig hozzáadhatók ~/.lnav/formats a .json kiterjesztést.

Azonban ezeknek a fájloknak a szerkesztéséhez bizonyos fokú ismeretekre van szükség a JSON (Javascript Object Notation) és a PCRE (Perl-kompatibilis reguláris kifejezések) könyvtárában.

Akkor miért nem jelenítette meg az lnav az Apache hibanapló fájljait? Ennek az az oka, hogy ezek a naplók nem egyeznek a meglévő formátumfájlokban található reguláris kifejezésekkel, ezért reguláris szövegfájlként kezelik őket (azaz adott naplóformátum nélküli fájlokként).

Javasolt olvasmány: Az Apache webszerver terhelésének és oldalstatisztikáinak figyelése

Ahogy korábban említettük, létrehozhat saját formátumokat, ha legalább valamennyire ismeri a JSON-t és a PCRE-t. Ez hasznos lehet például, ha egyéni Apache naplókat definiált.

Összegzés

Bár az Apache hozzáférési naplót használtuk az lnav használatának bemutatására, ne feledje, hogy számos más típusú napló is megtekinthető és értelmezhető ezzel az eszközzel. Ha az eszköz nem ismer fel egy adott naplót, további formátumokat hozhat létre, és telepítheti azokat az itt található utasításokat követve.

Kérdése vagy megjegyzése van ezzel a cikkel kapcsolatban? Mint mindig, nyugodtan tudassa velünk az alábbi űrlap segítségével. Várom válaszukat!