Séance 6 : La gestion des traces (logs)

Ce document traite de la gestion des traces (logs) sous GNU/Linux, en particulier de la configuration et de l’utilisation du démon syslogd, ainsi que des outils de traitement des journaux. Il s’adresse aux étudiants et administrateurs systèmes souhaitant comprendre et maîtriser la journalisation pour la surveillance et la sécurité des systèmes informatiques.

D'après le document Séance 6 : La gestion des traces (logs)

Cet article a été rédigé automatiquement à partir du document source, puis vérifié avant publication.

Document source

Séance 6 : La gestion des traces (logs)

Information Technology - System Administration · PDF · 11 pages · 2000

Afficher l'aperçu du document

Consulter le document original →

Ce document traite de la gestion des traces (logs) sous GNU/Linux, en particulier de la configuration et de l’utilisation du démon syslogd, ainsi que des outils de traitement des journaux. Il s’adresse aux étudiants et administrateurs systèmes souhaitant comprendre et maîtriser la journalisation pour la surveillance et la sécurité des systèmes informatiques.

Introduction à la gestion des traces (logs)

La journalisation est un élément crucial de la sécurité informatique. Elle constitue un outil essentiel pour la surveillance du système et la détection d’intrusions. En effet, la simple protection à l’entrée du réseau ne suffit pas, car des pirates peuvent réussir à pénétrer ou être internes à l’organisation. Une bonne gestion des logs, associée à des logiciels de réponse automatique, permet une détection rapide des incidents et facilite l’analyse post-mortem.

La journalisation consomme des ressources CPU et disque, il faut donc trouver un compromis adapté. Elle est particulièrement importante lors du déploiement de nouveaux services, mais doit être ajustée par la suite. Les logs servent aussi à des fins statistiques ou de facturation.

Sur les systèmes UNIX/Linux, le démon principal de gestion des logs est syslogd, qui reçoit les messages des clients locaux ou distants (comme named, sendmail) et du démon klogd, chargé des messages du noyau. Syslogd fonctionne au niveau applicatif (couche 7 du modèle OSI) et utilise le port UDP 514 pour la réception des messages réseau.

Configuration et fonctionnement de syslogd

Le programme syslogd

Syslogd est généralement lancé au démarrage du système, souvent avec klogd. Ils sont présents dans les répertoires rcX.d sous forme de liens vers des scripts de démarrage (exemple : S10syslogd).

Le binaire principal est /sbin/syslogd, lancé par le script /etc/init.d/sysklogd avec les arguments start ou restart. Lors du démarrage, le fichier de configuration /etc/syslog.conf est lu.

Le paquet sysklogd contient plusieurs fichiers binaires :

  • /sbin/syslogd : démon principal
  • /usr/sbin/syslogd-listfiles : sélectionne le fichier de logs le plus adapté à la rotation (souvent le plus volumineux)
  • /usr/sbin/syslog-facility : permet d’installer ou désinstaller une priorité dans syslog.conf

Syslogd, par défaut, n’écoute pas sur le réseau. Il reçoit les messages locaux via une socket Unix domain, en réalité un fichier spécial FIFO : /dev/log. Un programme peut écrire directement dans ce fichier pour envoyer un message à syslogd.

Pour activer l’écoute réseau sur le port UDP 514, il faut lancer syslogd avec l’option -r. Cette option peut être ajoutée dans le script de démarrage ou dans le fichier /etc/default/syslogd en modifiant la variable SYSLOGD :

SYSLOGD="-r"

Les fichiers de configuration appartiennent à root et ont des droits restreints pour garantir la sécurité.

Configuration du fichier /etc/syslog.conf

Le fichier /etc/syslog.conf est le principal fichier de configuration de syslogd. Chaque ligne indique :

  • Le type de message (Service ou Facility)
  • Le niveau de gravité (Priorité)
  • La destination (fichier, terminal, serveur distant...)

La syntaxe générale est :

Service.Priorité  Destination

Exemple :

mail.info  /var/log/mail.info

Services possibles : auth, authpriv, cron, daemon, kern, lpr, mail, mark, news, security (identique à auth), syslog, user, uucp, local0 à local7.

Priorités possibles : debug, info, notice, warning (warn), err (error), crit, alert, emerg (panic).

Attention : indiquer un niveau envoie les messages de ce niveau et tous ceux plus graves. Par exemple, debug inclut tous les niveaux.

Utilisation des signes spéciaux dans syslog.conf

  • ; : séparer plusieurs services avec priorités différentes
    Exemple : mail.info;news.notice /var/log/mail_news
  • , : plusieurs services avec même priorité
    Exemple : mail,news.info /var/log/mail_news
  • = : ne traiter que la priorité indiquée (sans les niveaux supérieurs)
    Exemple : mail.=err /var/log/mail.err
  • * : traiter toutes les priorités ou tous les services
    Exemple : mail.* /var/log/mail ou *.error /var/log/error
  • * en destination : envoyer sur toutes les consoles ouvertes
    Exemple : *.alert *
  • ! : exclure la priorité indiquée et les supérieures
    Exemple : mail.*;mail.!warn /var/log/mail (tous sauf warn et plus graves)
  • - : améliore les performances en écriture en désactivant la synchronisation, au risque de perdre des données en cas de crash
    Exemple : mail.* -/var/log/mail
  • \ : continuation de ligne pour écrire une instruction sur plusieurs lignes
    Exemple :
    mail.*;\
    news.* /var/log/mail_news
  • @ : envoyer les logs vers un autre serveur syslog
    Exemple : *.* @pgdebian

Exemples pratiques

Envoyer tous les logs dans la console tty8 (accessible via CTRL+ALT+F8) :

*.*  /dev/tty8

Envoyer les logs mail à la fois dans un fichier et sur la console tty8 :

mail.*  /var/log/mail
mail.*  /dev/tty8

Envoyer tous les logs sur un serveur distant nommé "pgdebian" :

*.*  @pgdebian

Redémarrer le démon syslogd

Après toute modification du fichier /etc/syslog.conf, il faut redémarrer syslogd :

/etc/init.d/sysklogd restart

Au redémarrage, syslogd crée les fichiers de logs s’ils n’existent pas.

Mettre syslogd à l’écoute du réseau

Pour centraliser les logs provenant d’autres serveurs ou routeurs, il faut activer l’écoute réseau en ajoutant l’option -r au démarrage de syslogd (voir plus haut).

Il faut également configurer les équipements distants pour qu’ils exportent leurs logs vers le serveur principal, par exemple en ajoutant dans leur /etc/syslog.conf :

*.*  @pgdebian

Pour n’envoyer que les messages d’erreur :

*.notice  @pgdebian

Exporter les logs d’un poste Windows

Pour qu’un système Windows (NT, 2000, etc.) exporte ses logs vers un serveur syslog Linux, il faut installer le programme ntsyslog (disponible sur http://ntsyslog.sourceforge.net/).

Installation du service :

ntsyslog -install

Le programme NTSyslogCtrl.exe permet de configurer le service pour indiquer le serveur et les logs à envoyer.

Commandes utiles pour consulter les logs

  • Voir les 10 dernières lignes du fichier syslog :
    tail /var/log/syslog
  • Voir les 200 dernières lignes :
    tail -200 /var/log/syslog
  • Voir les 10 dernières lignes en temps réel :
    tail -f /var/log/syslog
  • Rechercher une chaîne dans syslog (exemple "LeMotif") :
    cat /var/log/syslog | grep -i LeMotif
  • Voir en temps réel les logs de fetchmail :
    tail -f /var/log/syslog | grep fetchmail
  • Voir uniquement les logs du noyau Linux au démarrage :
    dmesg

Utilisation de syslog-ng

Le démon syslog présente deux défauts majeurs : la sécurité et la non-discrimination des sources des messages. Cette dernière est particulièrement gênante en exploitation.

Syslog-ng remplace complètement syslogd et améliore la gestion des logs en définissant clairement pour chaque catégorie une source, un filtre et une destination dans son fichier de configuration /etc/syslog-ng/syslog-ng.conf.

Exemple de configuration syslog-ng

source net {
    # journalisation via eth2 -> commutateur sw1
    udp(ip(192.168.2.1));
};

filter f_sw1 {
    host(192.168.2.2) and level(info,notice,warn,crit,err);
};

destination d_net_devices {
    file("/var/log/$HOST.log" owner("root") group("adm") perm(0640));
};

log {
    source(net);
    filter(f_sw1);
    destination(d_net_devices);
};

Cette configuration crée un fichier /var/log/192.168.2.2.log qui reçoit tous les messages du commutateur sw1 (IP 192.168.2.2). En exploitation réelle, un service DNS permet d’utiliser le nom d’hôte au lieu de l’adresse IP pour nommer les fichiers.

L’ajout d’un nouvel équipement génère automatiquement un nouveau fichier de journalisation, facilitant ainsi le traitement séparé des alertes.

Outils de traitement des journaux

La lecture des journaux est souvent perçue comme fastidieuse, ce qui limite la motivation des responsables d’exploitation. Pourtant, de nombreuses intrusions auraient pu être évitées par une consultation régulière des logs.

Voici deux outils couramment utilisés pour automatiser et synthétiser la lecture des journaux, avec un envoi par courrier électronique :

Logwatch

Logwatch produit un rapport quotidien synthétisant les événements par service. Il est particulièrement efficace pour les journaux des équipements réseau. Sa force réside dans la sommation des entrées répétitives, ce qui réduit la taille du rapport.

Logcheck

Logcheck, issu des paquets Debian GNU/Linux, émet un rapport toutes les heures selon trois niveaux d’utilisation : poste de travail, serveur, et « paranoïaque ». Plus le niveau est élevé, plus le nombre de messages retenus est important.

La synthèse comprend trois niveaux de priorité : alerte, sécurité et système. On peut ajouter les fichiers de logs des équipements réseau à la liste des fichiers traités.

Après quelques lectures, il est possible de personnaliser les règles de sélection en s’inspirant des règles existantes. La plupart des règles sont pré-définies par des utilisateurs expérimentés, ce qui facilite l’apprentissage.

Glossaire des termes clés

  • Syslogd : démon principal de journalisation sous UNIX/Linux.
  • Klogd : démon chargé de récupérer les messages du noyau et de les transmettre à syslogd.
  • Service (Facility) : catégorie de programme émettant des messages (ex : mail, daemon, kern).
  • Priorité (Level) : niveau de gravité d’un message (ex : debug, info, err, crit).
  • /etc/syslog.conf : fichier de configuration principal de syslogd.
  • Socket Unix domain : mécanisme local de communication entre processus, ici utilisé par syslogd via /dev/log.
  • FIFO : fichier spécial agissant comme une file d’attente pour les messages.
  • Syslog-ng : démon de journalisation amélioré, remplaçant syslogd, avec une configuration plus fine.
  • Logwatch : outil de synthèse quotidienne des logs par service.
  • Logcheck : outil d’analyse régulière des logs avec différents niveaux de filtrage.
  • ntsyslog : programme Windows permettant d’envoyer les logs vers un serveur syslog Linux.

Points clés à retenir

  • La journalisation est essentielle pour la sécurité et la surveillance des systèmes.
  • Syslogd est le démon standard sous Linux pour la gestion des logs, configuré via /etc/syslog.conf.
  • La syntaxe de syslog.conf permet de filtrer les messages par service, priorité et destination.
  • L’option -r active l’écoute réseau de syslogd pour centraliser les logs.
  • Syslog-ng offre une gestion plus fine et sécurisée des logs, avec des sources, filtres et destinations distincts.
  • Des outils comme Logwatch et Logcheck facilitent la lecture et l’analyse des journaux en produisant des rapports synthétiques.
  • Il est possible d’exporter les logs de postes Linux et Windows vers un serveur syslog centralisé.
  • La consultation régulière des logs est indispensable pour détecter rapidement les incidents de sécurité.

Partager

Commentaires

Aucun commentaire pour le moment. Posez la première question.

Les commentaires sont relus avant publication. Votre e-mail n'est jamais affiché.

← Toutes les révisions