lnav - Se og analyser Apache-logfiler fra en Linux-terminal


For mindre end to uger siden kom Wannacry-ransomware-angrebet i fare for tusinder af computere og forårsagede store tab for store virksomheder og enkeltpersoner. Dette sammen med andre udbredte sårbarheder, der er fundet i de senere år (såsom Shellshock-bug), fremhæver vigtigheden af at holde dig på toppen af dine missionskritiske systemer.

Selvom sårbarheder ofte er målrettet mod et bestemt operativsystem eller softwarekomponent, kan det være en væsentlig hjælp at beskytte de aktiver, du er ansvarlig for, at undersøge trafikken, der går ind og ud af dit netværk.

Som du er sikker på, at du allerede ved, er systemlogfiler det første sted, hvor vi skal kigge efter disse oplysninger. For at gøre denne opgave lettere, forklarer vi i denne artikel, hvordan man installerer og bruger lnav, en avanceret logfilvisning. Med lnav vil du være i stand til at se flere typer logfiler samtidigt, navigere gennem filen ved hjælp af genvejstaster og generere et opsummeret histogram over adgang og fejl. Så fortsæt med at læse!

Installation og start af lnav i Linux

For at installere lnav skal du bruge pakkehåndteringssystemet til din distribution.

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

Når installationen er afsluttet, skal du starte lnav efterfulgt af den absolutte sti til det bibliotek, hvor de logfiler, der skal undersøges, er placeret. Da dette typisk er /var/log , lad os gøre:

# lnav /var/log/httpd

for at inspicere loggene på Apache-webserveren i en CentOS 7:

Lad os kort undersøge output vist i det foregående billede:

  • Det øverste højre hjørne viser de filer, der aktuelt inspiceres (access_log-20170519 og access_log). Når du ruller ned eller op, vil du bemærke, at filnavnene kan ændre sig, når du går fra den ene til den anden.
  • 40x HTTP-svar (for eksempel ikke fundet eller forbudt) vises med fed skrift, mens 20x svar vises i almindelig tekst.
  • IP-adresser vises med fed grøn.

Det ser bestemt godt ud, ikke? Men lad os grave lidt dybere nu, og vi vil se, at lnav giver meget mere end en smuk farvet output.

Hvis du er nysgerrig efter, hvorfor fejllogfiler ikke vises, finder du svaret senere i denne artikel. Så fortsæt med at læse!

Ændring af output med indstillinger og genvejstaster

Før vi fortsætter, skal vi liste et par genvejstaster, der giver os mulighed for lettere at bevæge sig gennem output af lnav og de tilgængelige visninger:

  • e eller E for at springe til den næste/forrige fejlmeddelelse.
  • w eller W for at springe til den næste/forrige advarselsmeddelelse.
  • b eller Backspace for at flytte til forrige side.
  • Plads til at gå til næste side.
  • g eller G for at flytte til toppen/bunden af den aktuelle visning.

Når logfiler roteres, kan gamle filer muligvis komprimeres (eller ikke) afhængigt af de indstillinger, der er angivet i logrotate-konfigurationsfilerne. For at inkludere komprimerede filer i output skal du starte lnav som følger:

# lnav -r /var/log/httpd

Hvis du vil se nærmere på, hvordan lnav fungerer, kan du starte programmet med indstillingen -d efterfulgt af et filnavn, hvor fejlretningsoplysningerne skrives til sådan:

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

I dette eksempel skrives de fejlretningsoplysninger, der genereres, når lnav starter, til en fil med navnet lnav.txt inde i den aktuelle arbejdsmappe.

De første par linjer i filen vises i følgende billede:

Den fremhævede tekst angiver, at lnav indlæste standardformatfilen og mere specifikt access_log-formatet for at analysere Apache-adgangsloggen. Derudover tillader lnav at analysere hver outputlinje, så output bliver lettere at visualisere og forstå.

For at bruge denne funktion skal du starte programmet og vælge den linje, du vil analysere. Den valgte linje er altid den øverst i vinduet. Tryk derefter på p , og du skal se følgende resultat:

For at vende tilbage til normal tilstand skal du trykke på p igen.

Hvis du nu vil se et resumé af logfilerne efter dato og klokkeslæt, skal du trykke på i . For eksempel angiver den fremhævede tekst, at der mandag den 10. april mellem kl. 22 og 23 var 37 HTTP-anmodninger med 14, hvilket resulterede i fejl.

Når du har identificeret et potentielt problem baseret på histogrammet som vist ovenfor, kan du trykke på i for at afslutte visningen for at undersøge det mere detaljeret ved hjælp af parseren som forklaret tidligere. Eller du kan også bruge de indbyggede SQL-funktioner ved at skrive et semikolon og skrive en standardforespørgsel. For eksempel gør:

;.schema

for at se de tilgængelige tabeller i databaseskemaet. Efter at have identificeret den rigtige tabel (access_log i vores tilfælde), lad os trykke på q og derefter bruge følgende forespørgsel til at returnere alle tilgængelige oplysninger om anmodninger fra 195.154.230.31:

;SELECT * FROM access_log WHERE c_ip='195.154.230.31'

Bemærk, at vi også kunne have filtreret resultaterne efter log_time. Pointen er, smid lidt SQL ind, og himlen er grænsen for, hvad du kan gøre med lnav.

Apache-standardlogformater

Mange logformater indlæses som standard med lnav og analyseres således uden vores indblanding. Du kan se listen i sektionen Logformater i den officielle dokumentation.

Standardformater er specificeret i ~/.lnav/formats/default/default-formats.json.sample, og andre kan tilføjes ~/.lnav/formats ved hjælp af .json -udvidelsen.

Redigering af disse filer kræver dog en vis fortrolighed med JSON (Javascript Object Notation) og med PCRE-biblioteket (Perl-Compatible Regular Expressions).

Så hvorfor viste lnav ikke Apache-fejllogfilerne? Årsagen er, at disse logfiler ikke matcher nogen regulære udtryk i de eksisterende formatfiler og derfor behandles som almindelige tekstfiler (hvilket betyder filer uden et givet logformat).

Som nævnt tidligere kan du oprette dine egne formater, når du i det mindste er noget fortrolig med JSON og PCRE. Dette kan f.eks. Være praktisk, hvis du har defineret brugerdefinerede Apache-logfiler.

Selvom vi brugte Apache-adgangsloggen til at demonstrere, hvordan vi bruger lnav, skal du huske, at der er flere andre typer logfiler, der kan vises og parses ved hjælp af dette værktøj. Hvis værktøjet ikke genkender en bestemt log, kan du oprette yderligere formater og installere dem efter de angivelser, der er angivet her.

Har du spørgsmål eller kommentarer til denne artikel? Som altid er du velkommen til at fortælle os ved hjælp af nedenstående formular. Vi ser frem til at høre fra dig!