lnav - Katso ja analysoi Apache-lokeja Linux-päätelaitteesta


Alle kaksi viikkoa sitten Wannacry-ransomware-hyökkäys vaarantoi tuhansia tietokoneita aiheuttaen huomattavia tappioita sekä suurille yrityksille että yksityishenkilöille. Se yhdessä muiden viime vuosina löydettyjen laajalle levinneiden haavoittuvuuksien (kuten Shellshock-virheen) kanssa korostaa, että on tärkeää pysyä tehtäväkriittisten järjestelmiesi päällä.

Vaikka haavoittuvuudet kohdistuvat usein yhteen tiettyyn käyttöjärjestelmään tai ohjelmistokomponenttiin, verkkosi sisään ja ulos menevän liikenteen tutkiminen voi olla merkittävä apu vastuussa olevien omaisuuksien suojaamisessa.

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

Lnav: n 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 tyypillisesti /var/log , tehkäämme näin:

# lnav /var/log/httpd

tarkistaa CentOS 7: n Apache-verkkopalvelimen lokit:

Tarkastellaan lyhyesti edellisessä kuvassa esitettyä tulosta:

  • Oikeassa yläkulmassa näkyvät tarkastettavat tiedostot (access_log-20170519 ja access_log). Kun vierität alas tai ylös, huomaat, että tiedostonimet voivat muuttua, kun siirryt toisesta toiseen.
  • 40x HTTP-vastausta (esimerkiksi Ei löydy tai Kielletty) näytetään lihavoituna, kun taas 20x vastausta näytetään tavallisena tekstinä.
  • IP-osoitteet näkyvät lihavoituna vihreällä.

Se näyttää varmasti hyvältä, eikö olekin? Mutta kaivetaan nyt hieman syvemmälle, ja näemme, että lnav tarjoaa paljon enemmän kuin kauniit värit.

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

Tuloksen muokkaaminen vaihtoehdoilla ja pikanäppäimillä

Ennen kuin jatkat, luetellaan muutama pikanäppäin, joiden avulla voimme siirtyä lnav-lähdön ja käytettävissä olevien näkymien läpi helpommin:

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

Kun lokeja kierretään, vanhat tiedostot voidaan pakata (tai ei) pakatun kokoonpanotiedostossa määritettyjen asetusten mukaan. Jos haluat sisällyttää pakattuja tiedostoja lähtöön, käynnistä lnav seuraavasti:

# lnav -r /var/log/httpd

Jos haluat tarkastella tarkemmin tapaa, jolla lnav toimii, voit käynnistää ohjelman vaihtoehdolla -d , jota seuraa tiedostonimi, johon virheenkorjaustiedot kirjoitetaan, kuten:

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

Tässä esimerkissä lnav-käynnistyksen yhteydessä syntyvät virheenkorjaustiedot kirjoitetaan tiedostoon lnav.txt nykyisen työhakemiston sisällä.

Tiedoston ensimmäiset rivit näkyvät seuraavassa kuvassa:

Korostettu teksti osoittaa, että lnav latasi oletusmuodotiedoston ja tarkemmin access_log-muodon jäsentääkseen Apache-pääsylokin. Lisäksi lnav antaa mahdollisuuden jäsentää jokaisen ulostulolinjan, jotta tulos on helpompi visualisoida ja ymmärtää.

Käyttääksesi tätä ominaisuutta, käynnistä ohjelma ja valitse rivi, jonka haluat jäsentää. Valittu rivi on aina ikkunan yläosassa oleva rivi. Paina sitten p ja näet seuraavan tuloksen:

Palaa normaalitilaan painamalla uudelleen p .

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

Kun olet tunnistanut potentiaalisen ongelman histogrammin perusteella, kuten yllä on esitetty, voit poistua näkymästä painamalla i ja tarkastella sitä tarkemmin jäsentimen avulla, kuten aiemmin on selitetty. Tai voit käyttää myös sisäänrakennettuja SQL-ominaisuuksia kirjoittamalla puolipiste ja kirjoittamalla vakiokyselyn. Tee esimerkiksi:

;.schema

tarkastella käytettävissä olevia taulukoita tietokantakaaviossa. Kun olet tunnistanut oikean taulukon (tapauksessamme access_log), painetaan q ja palautetaan sitten kaikki käytettävissä olevat tiedot 195.154.230.31: stä tulevista pyynnöistä seuraavan kyselyn avulla:

;SELECT * FROM access_log WHERE c_ip='195.154.230.31'

Huomaa, että olisimme voineet myös suodattaa tulokset log_time-arvon mukaan. Asia on, heitä pieni SQL ja taivas on raja sille, mitä voit tehdä lnav: n kanssa.

Apache-oletuslokimuodot

Monet lokimuodot ladataan oletusarvoisesti lnav: lla ja ne jäsennetään siten ilman meidän puuttumistamme. Voit tarkastella luetteloa virallisen dokumentaation Lokimuodot-osiossa.

Oletusmuodot määritetään muodossa ~/.lnav/format/default/default-format.json.sample, ja muut voidaan lisätä ~/.lnav/formaatteihin .json -laajennuksella.

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

Joten miksi lnav ei näyttänyt Apache-virhelokitiedostoja? Syynä on, että nämä lokit eivät vastaa mitään säännöllisiä lausekkeita olemassa olevissa tiedostotiedostoissa, ja siksi niitä käsitellään tavallisina tekstitiedostoina (eli tiedostoina, joissa ei ole tiettyä lokimuotoa).

Kuten aiemmin mainittiin, voit luoda omia tiedostomuotojasi, kun olet ainakin jonkin verran perehtynyt JSONiin ja PCRE: hen. Tämä voi olla hyödyllistä esimerkiksi, jos olet määrittänyt mukautetut Apache-lokit.

Vaikka käytimme Apache-pääsylokia osoittaaksemme, kuinka lnav-tiedostoa käytetään, pidä mielessä, että tällä työkalulla voidaan tarkastella ja jäsentää useita muita lokeja. Jos työkalu ei tunnista tiettyä lokia, voit luoda lisää muotoja ja asentaa ne noudattamalla tässä annettuja ohjeita.

Onko sinulla kysyttävää tai kommentteja tästä artikkelista? Kuten aina, ilmoita siitä meille alla olevan lomakkeen avulla. Me odotamme yhteydenottoasi!