S ance 6 : La gestion des traces (logs)
Objectifs :
Identifier les diff rents outils de sauvegarde sous GNU/Linux
Configurer le d mon syslogd
Appliquer les outils de gestion des journaux sous GNU/Linux
Plan :
I.
Introduction
II. Configuration et fonctionnement
III. Outils de traitement de journaux
I. Introduction :
La journalisation est une part extr mement importante de la s curit et cest un des seuls outils
notre disposition pour la surveillance du syst me. Elle est un compl ment la protection et cest un
des piliers de la d tection dintrusion. On ne peut se contenter dune d tection dintrusion
cantonn e lentr e du r seau. Les pirates r ussissent parfois entrer, ou ils peuvent tre internes
lorganisme. Une bonne gestion de la journalisation coupl e un logiciel de r ponse automatique va
permettre une d tection rapide des probl mes et faciliter l tude post mortem de lintrusion.
La journalisation sert toutefois essentiellement la surveillance du syst me. Cest le principal outil
dont dispose ladministrateur. Il faut toutefois trouver le bon compromis, car la journalisation utilise
des ressources CPU et disque.
Une journalisation importante est parfois n cessaire lors de limplantation dun nouveau service,
mais il faut bien v rifier quelle est n cessaire par la suite. On notera galement que la
journalisation des v nements sert galement a des fins de statistiques ou de facturation. Sur les
syst mes UNIX/Linux il existe un d mon principal g rant la journalisation d v nement. Cest le
d mon Syslogd. Ce d mon re oit des messages v nementiels de la part de clients (locaux ou
distants) Syslog (par exemple named, sendmail, etc..) ou du d mon Klogd qui est charg d couter
les messages du noyau et de les envoyer au d mon Syslogd pour que celui ci les journalise suivant
son fichier de configuration. Dans ce dossier nous nous focaliserons principalement sur l tude du
d mon Syslogd (commun ment appel Syslog). Klogd ne sera donc pas tudi dans les d tails. Au
niveau r seau, on pr cisera que le d mon Syslog est un processus de niveau applicatif (couche 7
mod le OSI) utilisant comme port quand le serveur syslog est configur pour couter sur le r seau
le port UDP 514 (protocole Syslog).
II. Configuration et fonctionnement
1. Le programme syslogd :
Le programme Syslogd est en g n ral lanc au d marrage tout comme le programme klogd (qui
travaille en g n ral avec syslogd). Tous deux sont pr sents dans les r pertoires rcX.d/ sous forme de
liens vers les scripts de d marrage des services (S10syslogd).
Nous allons pr sent expliquer et d tailler le fonctionnement du service syslogd. Le binaire syslogd
pr sent dans /sbin/ est lanc par le script de d marrage /etc/init.d/sysklogd lorsque celui ci est
invoqu avec un argument de type start ou restart. Au d marrage du programme, le fichier de
configuration /etc/syslog.conf qui est le fichier de configuration principal de syslogd est lu.
Le paquet (ou fichiers install s apr s une compilation) sysklogd contient un certain nombre de
fichiers (binaires, fichiers de configurations, fichier de documentations, etc..) .
On voit dans ces fichiers outre le binaire principal /sbin/syslogd, le fichier binaire /usr/sbin/syslogd
listfiles et /usr/sbin/syslog facility. Ils constituent les 3 fichiers binaires de lensemble syslog.
Le binaire syslogd listfiles a pour but de s lectionner le fichier de logs le plus adapt a une rotation
(en g n ral le fichier le plus volumineux) dans les fichiers de logs list s dans /etc/syslog.conf. Ce
binaire est lanc par les scripts /etc/cron.daily/sysklogd et /etc/cron.weekly/sysklogd qui sex cutent
a p riode constante. Le fichier binaire syslog facility sert a installer ou d sinstaller une nouvelle
priorit a un message dans le fichier de configuration syslog.conf.
Il est noter que le d mon syslogd par d faut n coute pas sur le r seau et re oit donc des messages
Advertisement
v nementiels en local laide dune socket Unix domain. Cette socket est en r alit un fichier
sp cial appel FIFO se comportant comme une liste dattente dans lequel le d mon va lire. Il sagit
en r alit du fichier /dev/log. Un programme C peut donc envoyer des messages Syslogd en
crivant directement dans ce fichier. Il est cependant possible de modifier le comportement par
d faut du processus en lui demandant d couter les messages sur le r seau via le protocole syslog en
utilisant le port UDP 514. Pour configurer cela, on aura besoin de rajouter loption r lors du
lancement du script de d marrage sysklogd ou alors, on modifie le fichier de configuration
/etc/default/syslogd ou le script /etc/init.d/sysklogd en rajoutant loption r la variable SYSLOGD
#! /bin/sh
/etc/init.d/sysklogd: start the system log daemon.
PATH=/bin:/usr/bin:/sbin:/usr/sbin
pidfile=/var/run/syslogd.pid
binpath=/sbin/syslogd
test x $binpath || exit 0
Options for start/restart the daemons
For remote UDP logging use SYSLOGD=" r"
#
SYSLOGD=" r"
Pour modifier les fichiers de configuration qui appartiennent root, il faut obligatoirement avoir les
droits de super utilisateur. Les fichiers de configuration ont les droits de lecture uniquement pour
tout le monde sauf root qui a en plus les droits d' criture. Les fichiers de configuration cron ont tous
les droits en mode root, le droit x en plus pour les utilisateurs du groupe root, et les autres nont
toujours que le droit r. Pour ce qui concerne les binaires et les fichiers scripts, root a toujours tous
les droits, les membres du groupe root ont les droits x et r et les autres nont que le droit d'ex cution.
2. Configuration de /etc/syslog.conf
Le fichier /etc/syslog.conf est le principal fichier de configuration du d mon syslogd.
Syntaxe g n rale :
Chaque ligne de ce fichier indique le type du message (appel Service ou Facility en anglais), le
niveau de gravit (appel Priorit ) et sa Destination (fichier, terminal,...).
Par exemple, la ligne suivante permet denvoyer les messages dinformation des programmes de
messagerie dans le fichier mail.info :
mail.info /var/log/mail.info
Chaque ligne est de la forme : Service.Priorit頠Destination
Service correspond au type de programme (D mon, Noyau,...) et doit tre lun de ces mots
cl s : auth, authpriv, cron, daemon, kern, lpr, mail, mark, news, security (identique auth),
syslog, user, uucp et local0 local7.
Priorit repr sente le niveau de gravit du message et doit tre lun de ces mots cl s :
debug, info, notice, warning, warn (identique warning), err, error (identique err), crit, alert,
emerg, panic (identique emerg). ATTENTION : En indiquant un niveau, syslog enverra les
messages de ce niveau et tous les messages des niveaux plus importants. Donc en mettant debug ,
syslog enverra tous les messages (de debug panic).
Destination repr sente la destination du message est peut tre un chemin vers un fichier
texte (ex : /var/log/mail.info) ou le nom dune console pour envoyer les messages l cran (ex :
/dev/tty8) ou un autre serveur (ex : @MonAutreServeur).
Remarque : Chaque programme d termine les Services et les Priorit s quil utilise et il est
rarement possible de les modifier. Par exemple, les programmes Postfix et Fetchmail utilisent le
Service mail
Le signe ; pour s parer plusieurs Services
Il est possible de mettre plusieurs services pour une m me destination en utilisant le ; :
Service1.Priorit 1; Service2.Priorit 2 Destination
Le signe , pour plusieurs Services avec une m me Priorit頻
Advertisement
Il est possible dindiquer plusieurs Services pour le m me niveau de Priorit頻 avec le signe
, . La ligne suivante envoie dans le fichier mail_news les messages en provenance des
Services mail et new dont la Priorit頻 est sup rieure ou gale ࠫ info . :
mail,news.info /var/log/mail_news
Le signe = pour ne traiter que la Priorit頻 indiqu e
Il est possible de nenvoyer que les messages dune seule Priorit頻 (sans les Priorit s de
niveaux sup rieures) avec le singe = . Exemple :
mail.=err /var/log/mail.err
Le signe * pour traiter toutes les Services
La commande suivante permet denvoyer les messages derreurs de toutes les Services dans le
fichier error
*.error /var/log/error
Le signe * pour traiter toutes les Priorit s
Le signe * permet dindiquer que lon souhaite toutes les Priorit s (Le r sultat est le m me
quen mettant debug , mais cest plus lisible). Exemple :
mail.* /var/log/mail
Le signe * pour envoyer des messages sur toutes les consoles ouvertes
La ligne suivante, permet denvoyer tous les messages derreurs sur toutes les consoles ouvertes
gr ce au signe * plac en destination la fin de la ligne :
.alert
Le signe ! pour exclure les niveaux sup rieurs ou gaux la Priorit頻 indiqu e
Le signe ! permet dindiquer que lon souhaite exclure le niveaux indiqu et tous les niveaux
sup rieurs celui indiqu . La ligne suivante, permet denvoyer dans le fichier mail tous les
messages sauf ceux sup rieurs ou gaux la Priorit頻 warn :
mail.*;mail.!warn /var/log/mail
La ligne suivante permet denvoyer dans le fichier mail tous les messages sup rieurs ou gaux
la Priorit頻 notice et inf rieure la Priorit頻 crit :
mail.notice;mail.!crit /var/log/mail
Le signe pour am liorer les performances en criture
Le signe est utilis devant les chemins de fichiers les moins critiques pour am liorer les
performances en criture au risque de perdre des donn es en cas de crash du syst me (pas de
synchronisation des fichiers). Cette ligne enregistre tous les messages de la Service mail
dans le fichier mail :
mail.* /var/log/mail
Le signe \ pour crire une instruction sur plusieurs lignes
La commande suivante crite sur deux lignes gr ce au signe \ , permet denvoyer tous les
messages de mails ou de news dans le fichier mail_news :
mail.*;\
news.* /var/log/mail_newsEnvoyer les logs dans une console
La ligne suivante permet denvoyer tous les logs dans la console tty8 (CTRL+ALT+F8) :
. /dev/tty8
Les lignes suivantes permettent denvoyer les logs des mails dans le fichier mail et en m me
temps sur la console tty8
mail.* /var/log/mail
mail.* /dev/tty8
Le signe @ pour envoyer les logs sur un autre serveur
La ligne suivante permet denvoyer tous les logs sur un autre serveur nomm頫pgdebian :
. @pgdebian
Red marrer le d mon
A chaque modification du fichier /etc/syslog.conf , il faut red marrer le d mon :
/etc/init.d/sysklogd restart
Advertisement
Lors du d marrage, le d mon cr era les nouveaux fichiers de logs, si ceux ci nexistent pas.
Mettre syslogd l coute du r seau
Pour pouvoir centraliser les logs en provenance dautres serveurs ou routeurs, il faut mettre le
d mon syslogd l coute du r seau.
Pour cela, il faut ajouter le param tre r sur la commande de d marrage du d mon.
Sur Debian testing, il faut modifier le fichier /etc/default/syslogd et renseigner la variable
SYSLOGD comme indiqu e ci dessous :
SYSLOGD=" r"
Il faut aussi configurer les routeurs ou les autres serveurs pour que ceux ci exportent leurs logs vers
le serveur principal.
Exporter des logs dun autre poste sous Linux
Pour exporter tous les logs dun poste vers un serveur appel par exemple pgdebian , il suffit
dajouter la ligne suivante dans le fichier /etc/syslog.conf de ce poste :
. @pgdebian
La ligne suivante permet de nenvoyer que les messages derreurs :
*.notice{{ }}@pgdebian
Exporter les logs dun poste Windows
Pour quun syst me Windows (NT, 2000,..) exporte ses logs sur un serveur syslog sous Linux, il faut
installer le programme ntsyslog (http://ntsyslog.sourceforge.net/).
La commande suivante, permet dinstaller le service sur le poste Windows :
ntsyslog install
Le programme NTSyslogCtrl.exe permet de configurer le service pour indiquer le serveur et les
logs envoyer sur celui ci.
Quelques commandes pour consulter les logs
La commande suivante permet de voir les 10 derni res lignes du fichier syslog
tail /var/log/syslog
La commande suivante, permet de voir les 200 derni res lignes :
tail 200 /var/log/syslog
La ligne suivante permet de voir les 10 derni res lignes avec une actualisation en temps r el :
tail f /var/log/syslog
Cette commande retourne les lignes du fichiers syslog contenant la cha ne de caract res
LeMotif :
cat /var/log/syslog | grep i LeMotif
En combinant les deux commandes pr c dentes, il est possible par exemple davoir en temps r el,
les logs de fetchmail :
tail f /var/log/syslog | grep fetchmail
Pour avoir uniquement les logs du noyau Linux au d marrage du poste :
dmesg
Utilisation de syslog ng :
Le service syslog pr sente au moins deux d fauts : la s curit et la non discrimination des sources.
La non discrimination des sources d' mission de messages de journalisation est beaucoup plus
g nante du point de vue exploitation.
L'utilisation de syslog ng permet de traiter cette difficult simplement. Le d mon syslog ng se
substitue compl tement au d mon syslog pr c dent.
La grande diff rence se situe au niveau du fichier de configuration du service : /etc/syslog-
ng/syslog-ng.conf. Pour chaque cat gorie de journalisation, on doit composer avec une
d finition de source, de filtre et de destination. Voici un exemple reprenant le cas du commutateur :
D finition d'une source
source net {
journalisation via eth2 -> commutateur sw1
udp(ip(192.168.2.1));
Advertisement
};
D finition d'un filtre
filter f_sw1 {
host(192.168.2.2) and level(info,notice,warn,crit,err);
};
D finition d'une destination
destination d_net_devices {
file("/var/log/$HOST.log" owner("root") group("adm") perm(0640));
};
Utilisation des trois d finitions
log {
source(net);
filter(f_sw1);
destination(d_net_devices);
};
L'application de cette configuration entra ne la cr ation d'un fichier
/var/log/192.168.2.2.log qui re oit tous les messages du commutateur sw1 qui a
l'adresse IP 192.168.2.2. Le fichier de destination est cr avec un nom correspondant
l'adresse IP de l' quipement parce qu'aucun service DNS n'a t configur . En exploitation r elle, on
installe g n ralement un service DNS d di au p rim tre de gestion de l'infrastructure. Dans ce cas,
les fichiers de journalisation portent le nom d'h te de l' quipement.
L'ajout de tout nouvel quipement avec un autre nom et une autre adresse IP entra nera le cr ation
d'un nouveau fichier de journalisation. On pourra alors traiter les alertes s par ment pour chaque
quipement.
III. Outils de traitement de journaux :
La probl matique du traitement des journaux bute sur la motivation tr s limit e des responsables
d'exploitation. On entend trop souvent que la lecture des journaux est fastidieuse et inutile. Pourtant,
on ne compte plus les exemples d'intrusions qui auraient pu tre vit es facilement si les logs
avaient t consult s r guli rement.
L'offre des outils de traitement de logs est tr s diverse. Voici deux propositions d'outils choisis avec
un parti pris vident : imposer la lecture des journaux via le courrier lectronique.
Logwatch
logwatch met un rapport toutes les 24h synth tisant les v nements par service. Dans le
contexte de ce document, on active un service correspondant tous les journaux mis par les
quipements r seau. La grande force de logwatch, c'est la sommation des entr es r p titives
qui optimise la taille du rapport.
Logcheck
logcheck est un outil con u partir des paquets Debian GNU/Linux. Il met un rapport toutes
les heures en fonction de trois niveaux d'utilisation : poste de travail, serveur et
parano aque . Plus on avance vers la parano a , plus le nombre de messages retenus est
important. Pour chaque niveau d'utilisation, la synth se des v nements comprend trois
niveaux de priorit de traitement : alerte, s curit et syst me. Dans le contexte de ce
document, on ajoute les fichiers de journalisation des quipements r seau la liste des fichiers
trait s par logcheck. Apr s la lecture de quelques rapports, on est capable d' diter ses propres
r gles de s lection en s'inspirant des r gles existantes pour les autres services du syst me. La
grande majorit des op rations de s lection effectu es par logcheck sont pr d finies par des
utilisateurs tr s exp riment s : les responsables des paquets. C'est un avantage consid rable
pour les d butants. On gagne ainsi un temps tr s important dans l'apprentissage du travail
d'analyse.