lnav - Katsele ja analysoi Apache-lokeja Linux-päätteestä


Alle kaksi viikkoa sitten Wannacry ransomware -hyökkäys vaaransi tuhansia tietokoneita aiheuttaen huomattavia tappioita niin suurille yrityksille kuin yksityishenkilöillekin. Tämä yhdessä muiden viime vuosina löydettyjen haavoittuvuuksien (kuten Shellshock-virheen) kanssa korostaa, kuinka tärkeää on pysyä tehtävien kannalta kriittisten järjestelmien päällä.

Vaikka haavoittuvuudet kohdistuvat usein yhteen tiettyyn käyttöjärjestelmään tai ohjelmistokomponenttiin, verkkoon tulevan ja sieltä poistuvan liikenteen tutkiminen voi olla merkittävä apu vastuullasi olevan omaisuuden suojaamisessa.

Suositeltu luku: 4 hyvää avoimen lähdekoodin lokien seuranta- ja hallintatyökalua Linuxille

Kuten olen varma, että tiedät jo, järjestelmälokit ovat ensimmäinen paikka, josta meidän pitäisi etsiä näitä tietoja. Tehtävän helpottamiseksi tässä artikkelissa selitämme, kuinka lnav, edistynyt lokitiedostojen katseluohjelma asennetaan ja käytetään. Lnavin avulla voit katsella useita eri lokeja samanaikaisesti, selata tiedostoa pikanäppäimillä ja luoda yhteenvedon histogrammin pääsyistä ja virheistä. Joten jatka lukemista!

Lnavin asentaminen ja käynnistäminen Linuxissa

Asenna lnav käyttämällä jakelusi paketinhallintajärjestelmää.

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

Kun asennus on valmis, käynnistä lnav ja sen jälkeen absoluuttinen polku hakemistoon, jossa tutkittavat lokit sijaitsevat. Koska tämä on yleensä /var/log, tehdään seuraavaa:

lnav /var/log/httpd

tarkistaaksesi Apache-verkkopalvelimen lokit CentOS 7:ssä:

Tarkastellaanpa lyhyesti edellisessä kuvassa näkyvää tulosta:

  • Oikeassa yläkulmassa näkyvät parhaillaan tarkastettavat tiedostot (access_log-20170519 ja access_log). Kun vierität alas tai ylös, huomaat, että tiedostojen nimet voivat muuttua siirtyessäsi toiseen.
  • 40-kertaiset HTTP-vastaukset (esim. Ei löydy tai Kielletty) näytetään lihavoituna, kun taas 20-kertaiset vastaukset näytetään tavallisessa tekstissä.
  • IP-osoitteet näkyvät lihavoituna vihreänä.

Näyttää varmasti kivalta, eikö? Mutta kaivetaanpa nyt hieman syvemmälle, niin näemme, että lnav tarjoaa paljon enemmän kuin kauniin värillisen tulosteen.

Jos olet utelias, miksi virhelokeja ei näytetä, löydät vastauksen myöhemmin tästä artikkelista. Joten jatka lukemista!

Tulosteen muokkaaminen vaihtoehdoilla ja pikanäppäimillä

Ennen kuin jatkamme, luetellaan muutamia pikanäppäimiä, joiden avulla voimme liikkua helpommin lnav-tulosteen ja käytettävissä olevien näkymien läpi:

  • e tai E siirtyäksesi seuraavaan/edelliseen virheviestiin.
  • w tai W siirtyäksesi seuraavaan/edelliseen varoitusviestiin.
  • b tai askelpalautin siirtyäksesi edelliselle sivulle.
  • Välilyönti siirtyäksesi seuraavalle sivulle.
  • g tai G siirtyäksesi nykyisen näkymän ylä- tai alaosaan.

Kun lokeja pyöritetään, vanhat tiedostot saatetaan pakata (tai ei) logrotate-määritystiedostoissa määritetyistä asetuksista riippuen. Jos haluat sisällyttää pakatut tiedostot tulosteeseen, käynnistä lnav seuraavasti:

lnav -r /var/log/httpd

Jos haluat tutustua tarkemmin lnavin toimintaan, voit käynnistää ohjelman vaihtoehdolla -d ja sen jälkeen tiedostonimellä, johon virheenkorjaustiedot kirjoitetaan, kuten:

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

Tässä esimerkissä lnavin käynnistyessä luodut virheenkorjaustiedot kirjoitetaan nykyisessä työhakemistossa olevaan tiedostoon nimeltä lnav.txt.

Tämän tiedoston ensimmäiset rivit näkyvät seuraavassa kuvassa:

Korostettu teksti osoittaa, että lnav latasi oletusmuotoisen tiedoston ja tarkemmin sanottuna access_log-muodon jäsentääkseen Apache-käyttölokin. Lisäksi lnav mahdollistaa jokaisen tulosrivin jäsentämisen, jotta tuloste on helpompi visualisoida ja ymmärtää.

Suositeltu luku: GoAccess (reaaliaikainen Apache ja Nginx) -verkkopalvelimen lokianalysaattori

Voit käyttää tätä ominaisuutta käynnistämällä ohjelman ja valitsemalla rivin, jonka haluat jäsentää. Valittu rivi on aina ikkunan yläreunassa oleva rivi. Paina sitten p ja sinun pitäisi nähdä seuraava tulos:

Palaa normaalitilaan painamalla p-painiketta uudelleen.

Jos nyt haluat nähdä lokien yhteenvedon päivämäärän ja kellonajan mukaan, paina i. Esimerkiksi korostettu teksti osoittaa, että maanantaina 10. huhtikuuta kello 23 ja 23 välisenä aikana oli 37 HTTP-pyyntöä, joista 14 johti virheisiin.

Kun olet tunnistanut mahdollisen ongelman edellä esitetyn histogrammin perusteella, voit poistua näkymästä painamalla i-näppäintä ja tutkia sitä yksityiskohtaisemmin käyttämällä jäsennintä, kuten aiemmin selitettiin. Tai voit myös käyttää sisäänrakennettuja SQL-ominaisuuksia kirjoittamalla puolipisteen ja kirjoittamalla vakiokyselyn. Tee esimerkiksi:

;.schema

nähdäksesi tietokantaskeeman käytettävissä olevat taulukot. Kun olet tunnistanut oikean taulukon (tapauksessamme access_log), paina q ja käytä sitten seuraavaa kyselyä palauttaaksesi kaikki saatavilla olevat tiedot osoitteesta 195.154.230.31 tulevista pyynnöistä:

;SELECT * FROM access_log WHERE c_ip='195.154.230.31'

Huomaa, että olisimme voineet suodattaa tulokset myös log_time-perusteella. Tarkoitus on, että käytät vähän SQL:ää ja taivas on rajana sille, mitä voit tehdä lnav:lla.

Apachen oletuslokimuodot

Monet lokimuodot ladataan oletusarvoisesti lnav:lla, joten ne jäsennetään ilman meidän väliintuloamme. Voit tarkastella luetteloa virallisen dokumentaation lokimuodot-osiossa.

Oletusmuodot määritetään tiedostossa ~/.lnav/formats/default/default-formats.json.sample, ja muita voidaan lisätä ~/.lnav/formats käyttämällä .json-laajennus.

Näiden tiedostojen muokkaaminen edellyttää kuitenkin jonkin verran JSON- (Javascript Object Notation) ja PCRE (Perl-Compatible Regular Expressions) -kirjaston tuntemusta.

Joten miksi lnav ei näyttänyt Apachen virhelokitiedostoja? Syynä on, että kyseiset lokit eivät vastaa olemassa olevien tiedostomuotojen säännöllisiä lausekkeita, joten niitä käsitellään säännöllisinä tekstitiedostoina (eli tiedostoina, joissa ei ole tiettyä lokimuotoa).

Suositeltu luku: Apache-verkkopalvelimen kuormituksen ja sivutilastojen valvonta

Kuten aiemmin mainittiin, voit luoda omia muotojasi, kun olet ainakin jonkin verran perehtynyt JSONiin ja PCRE:hen. Tästä voi olla hyötyä esimerkiksi, jos olet määrittänyt mukautettuja Apache-lokeja.

Yhteenveto

Vaikka käytimme Apache-käyttölokia lnavin käytön osoittamiseen, muista, että on olemassa useita muita lokeja, joita voidaan tarkastella ja jäsentää tällä työkalulla. Jos työkalu ei tunnista tiettyä lokia, voit luoda lisämuotoja ja asentaa ne tässä annettujen ohjeiden mukaisesti.

Onko sinulla kysyttävää tai kommentteja tästä artikkelista? Kuten aina, voit vapaasti ilmoittaa meille alla olevalla lomakkeella. Me odotamme yhteydenottoasi!