lnav: mireu i analitzeu els registres d'Apache des d'un terminal Linux


Fa menys de dues setmanes, l'atac de ransomware Wannacry va comprometre milers d'ordinadors, causant pèrdues considerables tant a grans empreses com a particulars. Això, juntament amb altres vulnerabilitats generalitzades trobades en els darrers anys (com ara l'error Shellshock), posen de manifest la importància de mantenir-se al capdavant dels vostres sistemes crítics per a la missió.

Tot i que les vulnerabilitats sovint s'orienten a un sistema operatiu o component de programari específic, examinar el trànsit que entra i surt de la vostra xarxa pot ser una ajuda important per protegir els actius dels quals sou responsable.

Com segur que ja sabeu, els registres del sistema són el primer lloc on hem de buscar aquesta informació. Per facilitar aquesta tasca, en aquest article explicarem com instal·lar i utilitzar lnav, un visor avançat de fitxers de registre. Amb lnav, podreu veure simultàniament diversos tipus de registres, navegar pel fitxer mitjançant tecles d'accés ràpid i generar un histograma resumit d'accessos i errors. Així que segueix llegint!

Instal·lació i llançament de lnav a Linux

Per instal·lar lnav, utilitzeu el sistema de gestió de paquets de la vostra distribució.

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

Un cop finalitzada la instal·lació, inicieu lnav seguit de la ruta absoluta al directori on es troben els registres que s'han d'examinar. Com que normalment serà /var/log, fem:

# lnav /var/log/httpd

per inspeccionar els registres del servidor web Apache en un CentOS 7:

Examinem breument la sortida que es mostra a la imatge anterior:

  • L'extrem superior dret mostra els fitxers que s'estan inspeccionant actualment (access_log-20170519 i access_log). A mesura que us desplaceu cap avall o cap amunt, notareu que els noms dels fitxers poden canviar a mesura que aneu d'un a un altre.
  • Les respostes HTTP 40x (per exemple, Not Found o Forbidden) es mostren en negreta, mentre que les respostes 20x es mostren en text normal.
  • Les adreces IP apareixen en verd negreta.

Sens dubte es veu bé, no? Però aprofundim una mica ara, i veurem que lnav proporciona molt més que una sortida de colors bonics.

Si teniu curiositat per saber per què no es mostren els registres d'errors, trobareu la resposta més endavant en aquest article. Així que segueix llegint!

Modificació de la sortida amb opcions i tecles d'accés directe

Abans de continuar, enumerem algunes tecles d'accés directe que ens permetran moure'ns més fàcilment per la sortida de lnav i les vistes disponibles:

  • e o E per saltar al missatge d'error següent/anterior.
  • w o W per saltar al missatge d'advertència següent/anterior.
  • b o Retrocés per anar a la pàgina anterior.
  • Espai per passar a la pàgina següent.
  • g o G per moure's a la part superior o inferior de la vista actual.

Quan es giren els registres, els fitxers antics es poden comprimir (o no) depenent de la configuració especificada als fitxers de configuració de logrotate. Per incloure fitxers comprimits a la sortida, inicieu lnav de la següent manera:

# lnav -r /var/log/httpd

Si voleu mirar més de prop el funcionament de lnav, podeu iniciar el programa amb l'opció -d seguida d'un nom de fitxer on s'escriurà la informació de depuració, així:

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

En aquest exemple, la informació de depuració que es genera quan s'inicia lnav s'escriurà en un fitxer anomenat lnav.txt dins del directori de treball actual.

Les primeres línies d'aquest fitxer es mostren a la imatge següent:

El text destacat indica que lnav ha carregat el fitxer de formats predeterminat i, més concretament, el format access_log per analitzar el registre d'accés d'Apache. A més, lnav permet analitzar cada línia de sortida perquè la sortida sigui més fàcil de visualitzar i entendre.

Per utilitzar aquesta funció, inicieu el programa i trieu la línia que voleu analitzar. La línia seleccionada és sempre la de la part superior de la finestra. A continuació, premeu p i hauríeu de veure el resultat següent:

Per tornar al mode normal, premeu p de nou.

Ara, si voleu veure un resum dels registres per data i hora, premeu i. Per exemple, el text destacat indica que el dilluns 10 d'abril, entre les 22 i les 23 hores, hi va haver 37 sol·licituds HTTP amb 14 com a resultat d'errors.

Un cop hàgiu identificat un problema potencial basat en l'histograma com es mostra més amunt, podeu prémer i per sortir de la vista i examinar-lo amb més detall utilitzant l'analitzador com s'ha explicat anteriorment. O també podeu utilitzar les capacitats SQL integrades escrivint un punt i coma i escrivint una consulta estàndard. Per exemple, feu:

;.schema

per veure les taules disponibles a l'esquema de la base de dades. Després d'identificar la taula correcta (access_log en el nostre cas), premem q i després utilitzem la consulta següent per retornar tota la informació disponible sobre les sol·licituds procedents de 195.154.230.31:

;SELECT * FROM access_log WHERE c_ip='195.154.230.31'

Tingueu en compte que també podríem haver filtrat els resultats per log_time. La qüestió és que introduïu una mica d'SQL i el cel és el límit pel que fa al que podeu fer amb lnav.

Formats de registre per defecte d'Apache

Molts formats de registre es carreguen per defecte amb lnav i, per tant, s'analitzen sense la nostra intervenció. Podeu veure la llista a la secció Formats de registre de la documentació oficial.

Els formats predeterminats s'especifiquen a ~/.lnav/formats/default/default-formats.json.sample, i es poden afegir altres ~/.lnav/formats mitjançant l'extensió .json.

Tanmateix, l'edició d'aquests fitxers requereix un cert grau de familiaritat amb JSON (Javascript Object Notation) i amb la biblioteca PCRE (Perl-Compatible Regular Expressions).

Aleshores, per què lnav no va mostrar els fitxers de registre d'errors d'Apache? El motiu és que aquests registres no coincideixen amb cap expressió regular dels fitxers de format existents i, per tant, es tracten com a fitxers de text normals (és a dir, fitxers sense un format de registre determinat).

Com s'ha esmentat anteriorment, podeu crear els vostres propis formats una vegada que estigueu familiaritzat almenys una mica amb JSON i PCRE. Això pot ser útil, per exemple, si heu definit registres d'Apache personalitzats.

Tot i que hem utilitzat el registre d'accés d'Apache per demostrar com utilitzar lnav, tingueu en compte que hi ha altres tipus de registres que es poden veure i analitzar amb aquesta eina. Si l'eina no reconeix un registre específic, podeu crear formats addicionals i instal·lar-los seguint les indicacions que s'indiquen aquí.

Tens alguna pregunta o comentari sobre aquest article? Com sempre, no dubteu a fer-nos-ho saber mitjançant el formulari següent. Esperem amb interès tenir notícies teves!