Recherche de site Web

lnav - Regarder et analyser les journaux Apache à partir d'un terminal Linux


Il y a moins de deux semaines, l’attaque du ransomware Wannacry a compromis des milliers d’ordinateurs, causant des pertes considérables aux grandes entreprises comme aux particuliers. Ceci, ainsi que d’autres vulnérabilités répandues découvertes ces dernières années (telles que le bug Shellshock), soulignent l’importance de rester au top de vos systèmes critiques.

Bien que les vulnérabilités ciblent souvent un système d’exploitation ou un composant logiciel spécifique, l’examen du trafic entrant et sortant de votre réseau peut s’avérer d’une grande aide pour protéger les actifs dont vous êtes responsable.

Lecture suggérée : 4 bons outils de surveillance et de gestion des journaux Open Source pour Linux

Comme vous le savez sûrement déjà, les journaux système sont le premier endroit où nous devons rechercher ces informations. Pour faciliter cette tâche, dans cet article, nous expliquerons comment installer et utiliser lnav, une visionneuse avancée de fichiers journaux. Avec lnav, vous pourrez consulter plusieurs types de journaux simultanément, naviguer dans le fichier à l'aide de raccourcis clavier et générer un histogramme résumé des accès et des erreurs. Alors continuez à lire !

Installation et lancement de lnav sous Linux

Pour installer lnav, utilisez le système de gestion de paquets de votre distribution.

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

Une fois l'installation terminée, lancez lnav suivi du chemin absolu vers le répertoire où se trouvent les logs à examiner. Puisque ce sera généralement /var/log, faisons :

lnav /var/log/httpd

pour inspecter les logs du serveur web Apache dans un CentOS 7 :

Examinons brièvement le résultat affiché dans l'image précédente :

  • Le coin supérieur droit affiche les fichiers en cours d'inspection (access_log-20170519 et access_log). En faisant défiler vers le bas ou vers le haut, vous remarquerez que les noms de fichiers peuvent changer au fur et à mesure que vous passez de l'un à l'autre.
  • Les réponses 40x HTTP (par exemple, Introuvable ou Interdit) sont affichées en gras, tandis que les réponses 20x sont affichées. en texte normal.
  • Les adresses IP apparaissent en vert gras.

Cela a certainement l'air sympa, n'est-ce pas ? Mais creusons un peu plus maintenant, et nous verrons que lnav fournit bien plus qu'une jolie sortie colorée.

Si vous êtes curieux de savoir pourquoi les journaux d'erreurs ne sont pas affichés, vous trouverez la réponse plus loin dans cet article. Alors continuez à lire !

Modification de la sortie avec des options et des raccourcis clavier

Avant d'aller plus loin, listons quelques raccourcis clavier qui nous permettront de nous déplacer plus facilement dans la sortie de lnav et les vues disponibles :

  • e ou E pour passer au message d'erreur suivant/précédent.
  • w ou W pour passer au message d'avertissement suivant/précédent.
  • b ou Backspace pour passer à la page précédente.
  • Espace pour passer à la page suivante.
  • g ou G pour vous déplacer vers le haut/le bas de la vue actuelle.

Lors de la rotation des journaux, les anciens fichiers peuvent être compressés (ou non) en fonction des paramètres spécifiés dans les fichiers de configuration de la rotation. Pour inclure des fichiers compressés dans la sortie, lancez lnav comme suit :

lnav -r /var/log/httpd

Si vous souhaitez examiner de plus près le fonctionnement de lnav, vous pouvez lancer le programme avec l'option -d suivie d'un nom de fichier dans lequel les informations de débogage seront écrites, comme ceci :

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

Dans cet exemple, les informations de débogage générées au démarrage de lnav seront écrites dans un fichier nommé lnav.txt dans le répertoire de travail actuel.

Les premières lignes de ce fichier sont affichées dans l'image suivante :

Le texte en surbrillance indique que lnav a chargé le fichier de formats par défaut et, plus précisément, le format access_log pour analyser le journal d'accès Apache. De plus, lnav permet d'analyser chaque ligne de sortie afin que la sortie devienne plus facile à visualiser et à comprendre.

Lecture suggérée : GoAccess (un analyseur de journaux de serveur Web Apache et Nginx en temps réel)

Pour utiliser cette fonctionnalité, lancez le programme et choisissez la ligne que vous souhaitez analyser. La ligne sélectionnée est toujours celle en haut de la fenêtre. Appuyez ensuite sur p et vous devriez voir le résultat suivant :

Pour revenir au mode normal, appuyez à nouveau sur p.

Maintenant, si vous souhaitez voir un résumé des journaux par date et heure, appuyez sur i. Par exemple, le texte en surbrillance indique que le lundi 10 avril, entre 22h et 23h, il y a eu 37 requêtes HTTP dont 14 ont généré des erreurs.

Une fois que vous avez identifié un problème potentiel sur la base de l'histogramme comme indiqué ci-dessus, vous pouvez appuyer sur i pour quitter la vue et l'examiner plus en détail à l'aide de l'analyseur comme expliqué précédemment. Vous pouvez également utiliser les fonctionnalités SQL intégrées en tapant un point-virgule et en écrivant une requête standard. Par exemple, faites :

;.schema

pour afficher les tables disponibles dans le schéma de base de données. Après avoir identifié la bonne table (access_log dans notre cas), appuyons sur q puis utilisons la requête suivante pour renvoyer toutes les informations disponibles sur les requêtes provenant du 195.154.230.31 :

;SELECT * FROM access_log WHERE c_ip='195.154.230.31'

Notez que nous aurions également pu filtrer les résultats par log_time. Le fait est qu’il suffit d’ajouter un peu de SQL et il n’y a aucune limite à ce que vous pouvez faire avec lnav.

Formats de journaux par défaut d'Apache

De nombreux formats de logs sont chargés par défaut avec lnav et sont donc analysés sans notre intervention. Vous pouvez consulter la liste dans la section Formats de journaux de la documentation officielle.

Les formats par défaut sont spécifiés dans ~/.lnav/formats/default/default-formats.json.sample, et d'autres peuvent être ajoutés ~/.lnav/formats à l'aide de < extension.json.

Cependant, l'édition de ces fichiers nécessite une certaine connaissance de JSON (Javascript Object Notation) et de la bibliothèque PCRE (Perl-Compatible Regular Expressions).

Alors pourquoi lnav n'a-t-il pas affiché les fichiers journaux d'erreurs Apache ? La raison en est que ces journaux ne correspondent à aucune expression régulière dans les fichiers de format existants et sont donc traités comme des fichiers texte normaux (c'est-à-dire des fichiers sans format de journal donné).

Lecture suggérée : Comment surveiller la charge du serveur Web Apache et les statistiques de page

Comme mentionné précédemment, vous pouvez créer vos propres formats une fois que vous êtes au moins un peu familier avec JSON et PCRE. Cela peut s'avérer utile, par exemple, si vous avez défini des journaux Apache personnalisés.

Résumé

Bien que nous ayons utilisé le journal d'accès Apache pour montrer comment utiliser lnav, gardez à l'esprit qu'il existe plusieurs autres types de journaux qui peuvent être visualisés et analysés à l'aide de cet outil. Si l'outil ne reconnaît pas un journal spécifique, vous pouvez créer des formats supplémentaires et les installer en suivant les indications fournies ici.

Avez-vous des questions ou des commentaires sur cet article? Comme toujours, n'hésitez pas à nous le faire savoir en utilisant le formulaire ci-dessous. Nous avons hâte d'avoir de tes nouvelles!