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

Page 1 sur 11Lecteur de document UniversityLib

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

Information Technology - System Administration · course

Browse all gestion et économie documents

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.