Faire des logs : syslog

8 février 2007

Télécharger en PDF


Table des matières

I.Introduction 1

II.Fichier de configuration 1

Les fichiers de log sont en général dans /var/log 1

2.Syntaxe générale 1

3.Redirection de logs par le réseau 2

III.Consultation des logs 3

IV.La rotation des logs : logrotate 3

V.Bibliographie 4


I.Introduction


Syslog permet de centraliser les différents messages de sécurité et d'information des services du système. Ces différents messages peuvent être redirigés dans un fichier, ce qui permettra à l'administrateur de savoir par exemple pourquoi un service ne fonctionne pas correctement, quelles sont les dernières connexions qui ont échouées...Syslog permet par exemple de regrouper les logs par niveau de criticité (erreur, warning, info, debug...) mais aussi par service.



II.Fichier de configuration

Le fichier de configuration de syslogd est /etc/syslog.conf. Lorsque ce fichier est modifié, il faut envoyer le signal SIGHUP au démon syslogd pour le forcer à relire ce fichier.

Les fichiers de log sont en général dans /var/log

2.Syntaxe générale


Une ligne de /etc/syslog.conf se compose comme suit :

facility.level <tabs> destination






Par exemple, pour que tous les messages d'erreur s'affichent sur le terminal 12 (console virtuelle 12), on peut inscrire :

*.err /dev/tty12

3.Redirection de logs par le réseau


Pour rediriger des logs vers une autre machines qui sert de serveur de logs, il suffit de mettre dans destination « @IP_ou_nom_DNS_serveur_logs ». Par exemple, « *.* @172.20.12.3 » redirige tous les logs à la machine 172.20.12.3. Ensuite, il faut lancer syslogd avec l'option -r.


Toutefois, le serveur de logs 172.20.12.3 ne peut pas, à son tour, renvoyer les logs vers un autre serveur de logs par le réseau à moins qu'il est été lancé avec l'option -f et qu'il soit configuré avec une ligne « @ » dans son fichier /etc/syslog.conf. Attention toutefois à ne pas faire de boucle : un serveur de logs envoie à un autre qui, à son tour, renvoie ce qu'il a reçu. Il y a risque de remplir un disque entier en très peu de temps avec un seul message.


Il est à noter que pour autoriser des logs à parvenir à un serveur de logs faisant tourner syslog, il faut autoriser le trafic UDP sur le port 514. Cela peut donner les règles iptables suivantes :


iptables -A INPUT -p udp --dport 514 -s <ip machine loggante> -j ACCEPT


Il peut être plus sûr de spécifier de quelles machines peuvent venir les logs afin de ne pas risquer une attaque par flooding.


III.Consultation des logs


Par défaut, les messages de sécurités sont dans /var/log/secure et les messages de généraux sont dans /var/log/messages. De plus, la commande dmesg permet de consulter les messages de log du noyau de dernier démarrage.


Enfin, la commande last sert à connaitre les dernière personnes qui se sont connectées sur la machine.

IV.La rotation des logs : logrotate

En rapport avec syslogd mais utilisant surtout cron, on remarquera que dans tous les répertoires de logs, il y a des fichiers .0, .1...qui contiennent les logs anciens. Ces fichiers sont générés par logrotate dans le but d'alléger les logs des programmes et de supprimer les logs les plus anciens. Sa configuration se fait dans /etc/logrotate.conf.


Si l'on inclus la directive include /etc/logrotate.d, tous les fichiers contenu dans ce dossier sont inclus dans le traitement.

Pour chaque fichier de log, on ajoute soit dans /etc/logrotate.conf ou dans un fichier de /etc/logrotate.d :

<chemin et nom du fichier> {

<directives>

}


<chemin et nom du fichier> peut être soit un fichier ou un nom extensible (*).


<directives> est un ensemble de plusieurs directives, une par ligne :

Par exemple :

/var/log/httpd/*log {

# pas d'erreur si pas de logs

missingok

# passer les fichiers vides

notifempty

# ne recharger syslog qu'une fois

sharedscripts

postrotate

/bin/kill -HUP $(cat /var/run/httpd.pid 2>/dev/null) 2> /dev/null || true

endscript

}


V.Bibliographie

Syslog - Wikipédia

Logging via Syslog

Syslog

sharevb