{"id":2311,"date":"2022-05-23T00:07:00","date_gmt":"2022-05-22T22:07:00","guid":{"rendered":"http:\/\/domotics.fr\/?p=2243"},"modified":"2023-11-19T12:03:07","modified_gmt":"2023-11-19T11:03:07","slug":"consulter-les-logs-de-son-serveur-quoi-ou-et-que-rechercher","status":"publish","type":"post","link":"https:\/\/domotics.fr\/index.php\/2022\/05\/23\/consulter-les-logs-de-son-serveur-quoi-ou-et-que-rechercher\/","title":{"rendered":"Consulter les logs de son serveur: quoi, o\u00f9 et que rechercher"},"content":{"rendered":"\n<p>Rechercher une indication dans les logs, voil\u00e0 un parcours qui n\u2019est pas \u00e9vident lorsque on d\u00e9bute l&rsquo;administration serveur.<br>Ceux qui \u201csavent\u201d, pourraient donner des exemples de ce qui est fr\u00e9quent de rechercher, vers quel fichier de logs se tourner et \u201cquoi\u201d rechercher exactement.<br>Une indication d\u2019endroit dans le fichier serait un plus. Ex. :rechercher dans les derni\u00e8res lignes, ou selon la date inscrite.<br>Enfin, le maximum d\u2019info sera bon \u00e0 prendre.<br>Merci de votre participation, dans les commentaires\u00a0<img loading=\"lazy\" decoding=\"async\" width=\"25\" height=\"29\" src=\"https:\/\/www.debian-fr.org\/uploads\/default\/original\/1X\/924eb3db8bedad6a0d333b02031d3c6a9af9d9c5.gif\" alt=\":006\"><\/p>\n\n\n\n<h1 class=\"wp-block-heading\">Qui s\u2019est connect\u00e9 r\u00e9cemment<\/h1>\n\n\n\n<p>sudo grep Accepted \/var\/log\/auth.log<\/p>\n\n\n\n<h1 class=\"wp-block-heading\">Qui a tent\u00e9 de se connecter r\u00e9cemment<\/h1>\n\n\n\n<p>sudo grep Failed \/var\/log\/auth.log<\/p>\n\n\n\n<p>Permet de savoir combien de tentatives de connexions infructueuses ont eu lieu :<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code># expr `zcat \/var\/log\/auth.log*gz | grep -c \"authentication failure\"` + ` cat \/var\/log\/auth.log* | grep -c \"authentication failure\"`\n\n<\/code><\/pre>\n\n\n\n<p>Groupe adm :<\/p>\n\n\n\n<p>La plupart des logs sont en droits 640, ce qui oblige \u00e0 se placer en tant que root (ou avec sudo) pour pouvoir les lire.<br>En mettant l\u2019utilisateur principal (le m\u00eame qui a les droits \u2018root\u2019, en g\u00e9n\u00e9ral), dans le groupe \u2018adm\u2019, vous permet de lire les logs en tant qu\u2019\u201cuser\u201d.[\/quote]<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\"><p>adm : Le groupe adm est utilis\u00e9 pour les t\u00e2ches de surveillance du syst\u00e8me. Les membres de ce groupe peuvent lire de nombreux journaux d\u2019\u00e9v\u00e9nements dans \/var\/log et peuvent utiliser xconsole. Historiquement, \/var\/log \u00e9tait \/usr\/adm (et plus tard \/var\/adm) d\u2019o\u00f9 le nom du groupe.<\/p><\/blockquote>\n\n\n\n<p>Source :&nbsp;<a href=\"http:\/\/www.debian.org\/doc\/manuals\/securing-debian-howto\/ch11.fr.html\">debian.org\/doc\/manuals\/secur \u2026 11.fr.html&nbsp;23<\/a><\/p>\n\n\n\n<p>Il me semble qu\u2019il y a un outil a ne pas oublier quand on parle de log c\u2019est tail qui permet de n\u2019afficher que les derni\u00e8res lignes, et quand on l\u2019utilise comme \u00e7a :<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code># tail -qF \/var\/log\/mail.log<\/code><\/pre>\n\n\n\n<p>Avant j\u2019utilisais un petit script perso cod\u00e9 avec mes propres pieds pour m\u2019envoyer les logs par email en mettant un flag WARNING dans le sujet du mail et tout et tout\u2026 Puis j\u2019ai d\u00e9couvert&nbsp;<strong>logcheck<\/strong>&nbsp;et me suis dit : \u00ab\u00a0Bordel il fait trop piti\u00e9 mon script \u00e0 cot\u00e9 de ce machin !\u00a0\u00bb<\/p>\n\n\n\n<p><a href=\"https:\/\/wiki.debian-fr.xyz\/index.php?title=Fichier:Bulbgraph.png&amp;filetimestamp=20150516125525&amp;\"><\/a>&nbsp;Cet article est une&nbsp;<strong>\u00e9bauche<\/strong>. N&rsquo;h\u00e9sitez pas \u00e0 contribuer ou \u00e0 en discuter.<\/p>\n\n\n\n<p>\u00catre capable de chercher dans les logs peut se r\u00e9v\u00e9ler indispensable. Les journaux de log sont stock\u00e9s dans le r\u00e9pertoire \/var\/log\/ et sont consultables gr\u00e2ce aux commandes tail, grep et zgrep.<\/p>\n\n\n\n<p><strong>Pour voir \u00ab\u00a0en direct\u00a0\u00bb des logs (tail -f)<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"><em># tail -f \/var\/log\/auth.log<\/em>\n<\/pre>\n\n\n\n<p><strong>Avoir les 20 derni\u00e8res lignes d&rsquo;un fichier log<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"><em># tail -n 20 \/var\/log\/messages<\/em>\n<\/pre>\n\n\n\n<p><strong>Rechercher dans le texte facilement \u00ab\u00a0\u00e0 la vim\u00a0\u00bb &#8211; \u00ab\u00a0\/recherche\u00a0\u00bb avec less<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"><em># tail -n 20 \/var\/log\/messages |less<\/em>\n<\/pre>\n\n\n\n<p><strong>Rechercher un paquet en particulier<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"><em># grep -R \"nom_du_paquet\" \/var\/log\/*<\/em>\n<\/pre>\n\n\n\n<p><strong>Y compris dans les logs compress\u00e9s sous forme de fichiers .gz<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"><em># zgrep \"nom_du-paquet\" \/var\/log\/*<\/em>\n<\/pre>\n\n\n\n<p><strong>Il est \u00e9galement possible de \u00ab\u00a0grepper\u00a0\u00bb une commande grep<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"><em># grep -r \"dpkg\" \/var\/log\/* | grep erreur<\/em>\n<\/pre>\n\n\n\n<p><strong>Et avec une commande d&rsquo;exclusion (grep -v =&gt; \u00c0 l&rsquo;exclusion de)<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"><em># grep -r \"dpkg\" \/var\/log\/* | grep -v ejabberd<\/em>\n<\/pre>\n\n\n\n<p><strong>Trouver dans quels fichiers de logs se trouve la chaine \u00ab\u00a0dpkg\u00a0\u00bb (-r recursive, -i insensible \u00e0 la \u00ab\u00a0casse\u00a0\u00bb, -l n&rsquo;affiche pas tous les r\u00e9sultats, seulement le nom des fichiers)<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"><em># grep -r -i -l 'dpkg' \/var\/log\/<\/em>\n<\/pre>\n\n\n\n<p><strong>Pour conserver le r\u00e9sultat des recherches dans un fichier (\/tmp\/ma_recherche_dpkg.log)<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"><em># grep -r -i -l 'dpkg' \/var\/log\/ &gt; \/tmp\/ma_recherche_dpkg.log<\/em>\n<\/pre>\n\n\n\n<p><strong>Avoir les 20 derni\u00e8res lignes d&rsquo;une recherche avec grep<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"><em># grep -r \"dpkg\" \/var\/log\/* | tail -n 20<\/em>\n<\/pre>\n\n\n\n<h1 class=\"wp-block-heading\">Dans quels logs chercher&nbsp;?<\/h1>\n\n\n\n<figure class=\"wp-block-table\"><table><tbody><tr><th>Emplacement<\/th><th>Contenu<\/th><\/tr><tr><td>\/var\/log\/alternatives.log<\/td><td>Les logs d&rsquo;update-alternatives.<\/td><\/tr><tr><td>\/var\/log\/apache2\/*<\/td><td>Les logs du serveur http apache2.<\/td><\/tr><tr><td>\/var\/log\/apt\/*<\/td><td>Les logs d&rsquo;apt. Tous les paquets install\u00e9s avec apt-get install, par exemple.<\/td><\/tr><tr><td>\/var\/log\/aptitude<\/td><td>Les logs d&rsquo;aptitude. Contient toutes les actions demand\u00e9es, m\u00eame les abandonn\u00e9es.<\/td><\/tr><tr><td>\/var\/log\/auth.log<\/td><td>Les informations d&rsquo;autorisation de syst\u00e8me. Y sont consign\u00e9es toutes les connexions (r\u00e9ussies ou pas) et la m\u00e9thode d&rsquo;authentification utilis\u00e9e.<\/td><\/tr><tr><td>\/var\/log\/bind.log<\/td><td>Les logs du serveur de nom bind9, s&rsquo;il sont activ\u00e9s.<\/td><\/tr><tr><td>\/var\/log\/boot.log<\/td><td>Les informations enregistr\u00e9es lors du d\u00e9marrage du syst\u00e8me. Ce fichier n&rsquo;est pas activ\u00e9 par d\u00e9faut.<\/td><\/tr><tr><td>\/var\/log\/btmp<\/td><td>Semblable \u00e0 \/var\/log\/wtmp. Affiche les connexions\/d\u00e9connexions au syst\u00e8me # lastb alors que # last lira le fichier \/var\/log\/wtmp.<\/td><\/tr><tr><td>\/var\/log\/cups\/*<\/td><td>Les logs du syst\u00e8me d&rsquo;impression cups.<\/td><\/tr><tr><td>\/var\/log\/cron<\/td><td>Les informations sur les t\u00e2ches cron. Enregistrement \u00e0 chaque fois que le d\u00e9mon cron (ou anacron) commence une t\u00e2che.<\/td><\/tr><tr><td>\/var\/log\/daemon.log<\/td><td>Les informations enregistr\u00e9es par les diff\u00e9rents daemons (processus) de fond qui fonctionnent sur le syst\u00e8me.<\/td><\/tr><tr><td>\/var\/log\/debug<\/td><td>Les logs de debugging.<\/td><\/tr><tr><td>\/var\/log\/dmesg<\/td><td>Les messages du noyau Linux depuis le d\u00e9marrage.<\/td><\/tr><tr><td>\/var\/log\/dpkg.log<\/td><td>Les informations sur les paquets install\u00e9s ou retir\u00e9s en utilisant la commande dpkg.<\/td><\/tr><tr><td>\/var\/log\/fail2ban.log<\/td><td>Les Ban\/Unban et infos sur le programme (Error, Info, etc.) si fail2ban est install\u00e9.<\/td><\/tr><tr><td>\/var\/log\/faillog<\/td><td>Les \u00e9checs de connexion. # faillog -u root.<\/td><\/tr><tr><td>\/var\/log\/kern.log<\/td><td>Les informations enregistr\u00e9es par le noyau. Utile pour d\u00e9bogguer un noyau personnalis\u00e9, par exemple.<\/td><\/tr><tr><td>\/var\/log\/lastlog<\/td><td>Les informations de connexion r\u00e9cente de tous les utilisateurs. Ce n&rsquo;est pas un fichier ascii. Vous devez utiliser la commande lastlog pour afficher le contenu de ce fichier.<\/td><\/tr><tr><td>\/var\/log\/mail.*<\/td><td>Les informations du serveur de messagerie. Par exemple, sendmail enregistre des informations sur tous les \u00e9l\u00e9ments envoy\u00e9s dans ces fichiers.<\/td><\/tr><tr><td>\/var\/log\/messages<\/td><td>Les messages du syst\u00e8me, y compris les messages qui sont enregistr\u00e9s au d\u00e9marrage. Beaucoup de choses sont enregistr\u00e9es dans \/var\/log\/ messages y compris le courrier, cron, daemon, kern, auth, etc.<\/td><\/tr><tr><td>\/var\/log\/syslog<\/td><td>Tous les messages, hormis les connexions des utilisateurs. Plus complet que \/var\/log\/messages.<\/td><\/tr><tr><td>\/var\/log\/user.log<\/td><td>Les informations sur tous les journaux de niveau utilisateur.<\/td><\/tr><tr><td>\/var\/log\/wtmp<\/td><td>Toutes les connexions et d\u00e9connexions: last -f \/var\/log\/wtmp.<\/td><\/tr><tr><td>\/var\/log\/Xorg.x.log<\/td><td>Les messages du serveur X. N&rsquo;existe pas sur un serveur.Le petit x est le N\u00b0 d&rsquo;instance du serveur X.<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h1 class=\"wp-block-heading\">Pour faciliter la lecture<\/h1>\n\n\n\n<p><strong>Coloration syntaxique des logs<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"><em># apt-get install ccze<\/em>\n<\/pre>\n\n\n\n<p>Utilisation&nbsp;:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"><em># tail -10 \/var\/log\/syslog | ccze -A<\/em>\n<\/pre>\n\n\n\n<p>Voir la page de ccze&nbsp;:&nbsp;<a href=\"https:\/\/wiki.debian-fr.xyz\/Ccze_-_Coloration_syntaxique_des_logs\" target=\"_blank\" rel=\"noreferrer noopener\">Coloration syntaxique des logs: CCZE<\/a><\/p>\n\n\n\n<p><strong>Pour afficher en couleur le nom de paquet recherch\u00e9 et aider \u00e0 la lecture des history.log.<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"><em># grep --color=always \"nom_du_paquet\" \/var\/log\/apt\/history.log<\/em>\n<\/pre>\n\n\n\n<p>Et un alias (alias grep=&rsquo;grep &#8211;color=auto&rsquo;) pour vous simplifier la vie&nbsp;:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">$ echo \"alias grep='grep --color=auto'\" &gt;&gt; ~\/.bashrc\n$ source ~\/.bashrc\n<\/pre>\n\n\n\n<p><strong>Et pour cumuler le tout&nbsp;: recherche dans les history.log.X.gz avec coloration syntaxique et coloration du nom du paquet.<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"><em># zgrep --color=always  \"nom_du_paquet\" \/var\/log\/apt\/history* | ccze -A<\/em><\/pre>\n","protected":false},"excerpt":{"rendered":"<p>Rechercher une indication dans les logs, voil\u00e0 un parcours qui n\u2019est pas \u00e9vident lorsque on d\u00e9bute l&rsquo;administration serveur.Ceux qui \u201csavent\u201d, pourraient donner des exemples de ce qui est fr\u00e9quent de rechercher, vers quel fichier de logs se tourner et \u201cquoi\u201d rechercher exactement.Une indication d\u2019endroit dans le fichier serait un plus. Ex. :rechercher dans les derni\u00e8res [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":2303,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[7,17,22],"tags":[],"class_list":["post-2311","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-blog","category-jeedom","category-nas","entry","has-media"],"_links":{"self":[{"href":"https:\/\/domotics.fr\/index.php\/wp-json\/wp\/v2\/posts\/2311","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/domotics.fr\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/domotics.fr\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/domotics.fr\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/domotics.fr\/index.php\/wp-json\/wp\/v2\/comments?post=2311"}],"version-history":[{"count":1,"href":"https:\/\/domotics.fr\/index.php\/wp-json\/wp\/v2\/posts\/2311\/revisions"}],"predecessor-version":[{"id":2479,"href":"https:\/\/domotics.fr\/index.php\/wp-json\/wp\/v2\/posts\/2311\/revisions\/2479"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/domotics.fr\/index.php\/wp-json\/"}],"wp:attachment":[{"href":"https:\/\/domotics.fr\/index.php\/wp-json\/wp\/v2\/media?parent=2311"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/domotics.fr\/index.php\/wp-json\/wp\/v2\/categories?post=2311"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/domotics.fr\/index.php\/wp-json\/wp\/v2\/tags?post=2311"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}