lnav - skatieties un analizējiet Apache žurnālus no Linux termināļa


Pirms mazāk nekā divām nedēļām Wannacry ransomware uzbrukums apdraudēja tūkstošiem datoru, radot ievērojamus zaudējumus gan lieliem uzņēmumiem, gan privātpersonām. Tas kopā ar citām pēdējos gados atrastajām plaši izplatītajām ievainojamībām (piemēram, kļūdu Shellshock) uzsver, cik svarīgi ir sekot līdzi savām misijai kritiskajām sistēmām.

Neskatoties uz to, ka ievainojamības bieži vērstas uz vienu konkrētu operētājsistēmu vai programmatūras komponentu, trafika izpēte, kas ienāk un iziet no tīkla, var būt būtiska palīdzība, lai aizsargātu aktīvus, par kuriem esat atbildīgs.

Kā esmu pārliecināts, ka jūs jau zināt, sistēmas žurnāli ir pirmā vieta, kur mums vajadzētu meklēt šo informāciju. Lai atvieglotu šo uzdevumu, šajā rakstā mēs paskaidrosim, kā instalēt un izmantot uzlaboto žurnālfailu skatītāju lnav. Izmantojot lnav, jūs varēsiet vienlaikus skatīties vairāku veidu žurnālus, pārvietoties pa failu, izmantojot karstos taustiņus, un ģenerēt apkopotu piekļuves un kļūdu histogrammu. Tāpēc turpini lasīt!

Lnav instalēšana un palaišana Linux

Lai instalētu lnav, izmantojiet izplatīšanas pakotņu pārvaldības sistēmu.

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

Kad instalēšana ir pabeigta, palaidiet lnav, kam seko absolūtais ceļš uz direktoriju, kurā atrodas pārbaudāmie žurnāli. Tā kā parasti tas būs /var/log , darīsim:

# lnav /var/log/httpd

pārbaudīt Apache tīmekļa servera žurnālus CentOS 7:

Īsi apskatīsim iepriekšējā attēlā redzamo rezultātu:

  • Augšējā labajā stūrī ir redzami pašlaik pārbaudāmie faili (access_log-20170519 un access_log). Ritinot uz leju vai uz augšu, jūs ievērosiet, ka failu nosaukumi var mainīties, pārejot no viena uz otru.
  • 40x HTTP atbildes (piemēram, Not Found vai Forbidden) tiek parādītas treknrakstā, savukārt 20x atbildes tiek parādītas parastā tekstā.
  • IP adreses tiek parādītas treknrakstā zaļā krāsā.

Tas noteikti izskatās jauki, vai ne? Bet tagad iegremdēsimies nedaudz dziļāk, un mēs redzēsim, ka lnav nodrošina daudz vairāk nekā diezgan krāsainu izvadi.

Ja vēlaties zināt, kāpēc netiek parādīti kļūdu žurnāli, atbildi atradīsit vēlāk šajā rakstā. Tāpēc turpini lasīt!

Izvades modificēšana ar opcijām un karstajiem taustiņiem

Pirms turpināt darbu, uzskaitīsim dažus īsinājumtaustiņus, kas ļaus mums vieglāk pārvietoties pa lnav izvadi un pieejamajiem skatiem:

  • e vai E , lai pārietu uz nākamo/iepriekšējo kļūdas ziņojumu.
  • w vai W , lai pārietu uz nākamo/iepriekšējo brīdinājuma ziņojumu.
  • b vai Backspace , lai pārietu uz iepriekšējo lapu.
  • Atstarpes taustiņš, lai pārietu uz nākamo lapu.
  • g vai G , lai pārietu uz pašreizējā skata augšējo/apakšējo daļu.

Kad žurnāli tiek pagriezti, vecie faili var būt saspiesti (vai nē) atkarībā no iestatījumiem, kas norādīti logrotate konfigurācijas failos. Lai izvadē iekļautu saspiestus failus, palaidiet lnav šādi:

# lnav -r /var/log/httpd

Ja vēlaties tuvāk apskatīt lnav darbību, varat palaist programmu ar opciju -d , kam seko faila nosaukums, kurā tiks ierakstīta atkļūdošanas informācija, piemēram:

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

Šajā piemērā atkļūdošanas informācija, kas tiek ģenerēta, startējot lnav, tiks ierakstīta failā lnav.txt pašreizējā darba direktorijā.

Pirmās dažas šī faila rindas ir parādītas šajā attēlā:

Izceltais teksts norāda, ka lnav ielādēja noklusējuma formātu failu un, konkrētāk, access_log formātu, lai parsētu Apache piekļuves žurnālu. Turklāt lnav ļauj parsēt katru izvades līniju, lai izvadi būtu vieglāk vizualizēt un saprast.

Lai izmantotu šo funkciju, palaidiet programmu un izvēlieties rindu, kuru vēlaties parsēt. Atlasītā līnija vienmēr ir tā, kas atrodas loga augšdaļā. Pēc tam nospiediet p , un jums vajadzētu redzēt šādu rezultātu:

Lai atgrieztos normālā režīmā, vēlreiz nospiediet p .

Tagad, ja vēlaties redzēt žurnālu kopsavilkumu pēc datuma un laika, nospiediet i . Piemēram, izceltais teksts norāda, ka pirmdien, 10. aprīlī, laikā no pulksten 22 līdz 23, bija 37 HTTP pieprasījumi, no kuriem 14 radīja kļūdas.

Kad esat identificējis potenciālu problēmu, pamatojoties uz histogrammu, kā parādīts iepriekš, varat nospiest i , lai izietu no skata, lai to sīkāk izpētītu, izmantojot iepriekš parsatoru. Vai arī varat izmantot iebūvētās SQL iespējas, ierakstot semikolu un uzrakstot standarta vaicājumu. Piemēram, rīkojieties šādi:

;.schema

lai apskatītu pieejamās tabulas datu bāzes shēmā. Pēc pareizās tabulas (mūsu gadījumā piekļuves žurnāls) identificēšanas nospiediet q un pēc tam izmantojiet šo vaicājumu, lai atgrieztu visu pieejamo informāciju par pieprasījumiem, kas nāk no 195.154.230.31:

;SELECT * FROM access_log WHERE c_ip='195.154.230.31'

Ņemiet vērā, ka mēs varētu filtrēt rezultātus arī pēc log_time. Lieta ir tāda, ka iemet nedaudz SQL un debesīs ir ierobežojums, ko tu vari darīt ar lnav.

Apache noklusējuma žurnāla formāti

Daudzi žurnāla formāti pēc noklusējuma tiek ielādēti ar lnav un tādējādi tiek parsēti bez mūsu iejaukšanās. Sarakstu varat apskatīt oficiālās dokumentācijas sadaļā Žurnāla formāti.

Noklusējuma formāti ir norādīti ~/.lnav/format/default/default-format.json.sample, un citus var pievienot ~/.lnav/formātus, izmantojot paplašinājumu .json .

Tomēr, rediģējot šos failus, ir nepieciešama zināma JSON (Javascript Object Notation) un PCRE (Perl-Compatible Regular Expressions) bibliotēkas pārzināšana.

Kāpēc lnav neparādīja Apache kļūdu žurnāla failus? Iemesls ir tāds, ka šie žurnāli neatbilst nevienai regulārai izteiksmei esošajos formāta failos, un tāpēc tos uzskata par parastiem teksta failiem (tas nozīmē, faili bez noteikta žurnāla formāta).

Kā jau minēts iepriekš, jūs varat izveidot savus formātus, tiklīdz esat vismaz zināmi JSON un PCRE. Tas var noderēt, piemēram, ja esat definējis pielāgotus Apache žurnālus.

Lai gan mēs izmantojām Apache piekļuves žurnālu, lai parādītu, kā izmantot lnav, paturiet prātā, ka ir vairāki citi žurnālu veidi, kurus var apskatīt un parsēt, izmantojot šo rīku. Ja rīks neatpazīst konkrētu žurnālu, varat izveidot papildu formātus un instalēt tos, ievērojot šeit norādītās norādes.

Vai jums ir kādi jautājumi vai komentāri par šo rakstu? Kā vienmēr, sazinieties ar mums, izmantojot zemāk esošo veidlapu. Mēs ceram uz jums atbildi!