You are on page 1of 8

Nom : Romain Quarr

Section : 5I option Scurit Rseaux


Systme : Ubuntu 8.10 noyau 2.6.27-11-generic
Daemon utilis : Syslogd 1.5-2
Shell utilis : Bash version 3.2.39(1)

Administration et scurit sous Unix

Le dmon Syslogd

Sommaire

Introduction1
Installation..1
Configuration et fonctionnement.2
Scurit..5
Rfrences..6

INTRODUCTION
La journalisation est une part extrmement importante de la scurit et cest un des seuls outils notre disposition
pour la surveillance du systme. Elle est un complment la protection et cest un des piliers de la dtection
dintrusion. On ne peut se contenter dune dtection dintrusion cantonne lentre du rseau. Les pirates
russissent parfois entrer, ou ils peuvent tre internes lorganisme. Une bonne gestion de la journalisation
couple un logiciel de rponse automatique va permettre une dtection rapide des problmes et faciliter ltude
post-mortem de lintrusion.
La journalisation sert toutefois essentiellement la surveillance du systme. 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 ncessaire lors de limplantation dun nouveau service, mais il faut bien
vrifier quelle est ncessaire par la suite. On notera galement que la journalisation des vnements sert galement
a des fins de statistiques ou de facturation. Sur les systmes UNIX/Linux il existe un dmon principal grant la
journalisation dvnement. Cest le dmon Syslogd. Ce dmon reoit des messages vnementiels de la part de
clients (locaux ou distants) Syslog (par exemple named, sendmail, etc..) ou du dmon Klogd qui est charg
dcouter les messages du noyau et de les envoyer au dmon Syslogd pour que celui-ci les journalise suivant son
fichier de configuration. Dans ce dossier nous nous focaliserons principalement sur ltude du dmon Syslogd
(communment appel Syslog). Klogd ne sera donc pas tudi dans les dtails. Au niveau rseau, on prcisera que le
dmon Syslog est un processus de niveau applicatif (couche 7 modle OSI) utilisant comme port quand le serveur
syslog est configur pour couter sur le rseau le port UDP 514 (protocole Syslog).

INSTALLATION
Sur la plupart des distributions UNIX/LINUX, Syslogd (et ses sous programmes dpendants tels que Klogd) sont
installs de base avec la distribution. (Cest donc biensur le cas avec la version dUbuntu prcise dans lentte sur
la page daccueil). Nanmoins, s il y a un problme il est toujours possible de dsinstaller Syslog et de le rinstaller.
Je vais expliquer diffrente manire possible dinstaller (rinstaller) Syslogd.
Installer,dsinstaller ou rinstaller Syslog
Synaptic : Sous Ubuntu via Synaptic (substitut graphique daptitude)si la machine dispose dun serveur X11, choisir
la rinstallation, suppression totale (avec les fichiers de configuration) ou partielle (les fichiers de configuration
restent).
Aptitude en mode shell :
Pour supprimer toute trace prcdente : sudo apt-get remove sysklogd
Pour installer le paquet syslogd et ses dpendances : sudo apt-get install/reinstall sysklogd

On peut galement installer le paquet avec tout autre gestionnaire de paquet (dpkg,yum,rpm,etc..). Le dpt qui
contient le paquet est en gnral prsent dans le sources.list. Dans le cas dune compilation en utilisant les fichiers
sources, on peut installer le programme aprs lavoir dezip en tapant la liste de commande suivantes :
./configure
Make
Make install
Une fois le programme install, on peut vrifier sa prsence suivant son mode dinstallation en tappant

Pour les systmes debian. Ou encore :

Chaque gestionnaire de paquet offre des options pour vrifier pour vrifier si un paquet est install ou non. Dans le
cas dune installation via la compilation, on peut rechercher des traces de fichiers (scripts,binaires, etc) en faisant un
find ou un locate (mettre avant la base de donne des fichiers installs a jour avec la commande updatedb). Il est
galement interessant de regarder quels fichiers sont installs par le paquet laide de la commande dpkg L
sysklogd.

CONFIGURATION ET FONCTIONNEMENT
Une fois le programme syslog install, on peut vrifier sil est actif ou non en tappant :

On voit bien que le binaire syslogd (lanc par le script de dmarrage sysklogd) est actif en mmoire et a comme PID
4254.
Le programme Syslogd est en gnral lanc au dmarrage tout comme le programme klogd (qui travaille en gnral
avec syslogd). Tous deux sont prsents dans les rpertoires rcX.d/ sous forme de liens vers les scripts de dmarrage
des services (S10syslogd).
Nous allons prsent expliquer et dtailler le fonctionnement du service syslogd. Le binaire syslogd prsent comme
montr dans la prcdente capture dans /sbin/ est lanc par le script de dmarrage /etc/init.d/sysklogd lorsque
celui-ci est invoqu avec un argument de type start ou restart. Au dmarrage du programme, le fichier de
configuration /etc/syslog.conf qui est le fichier de configuration principal de syslogd est lu. Nous aborderons un peu
plus tard ce fichier de configuration. La liste des bibliothques utilises par le dmon sobtient grce la commande
ldd dont nous nallons pas afficher le rsultat ici, celui-ci nayant que peu dintrt.
Le paquet (ou fichiers installs aprs une compilation) sysklogd contient un certain nombre de fichiers (binaires,
fichiers de configurations, fichier de documentations, etc..) qui vont tre lists et expliqus pour certain pour mieux
comprendre le fonctionnement global. En tapant dpkg L sysklogd on obtient la liste des fichiers installs avec le
paquet. On peut voir les fichiers :
/etc/cron.daily/sysklogd
/etc/cron.weekly/sysklogd
/etc/default/syslogd
/etc/init.d/sysklogd
/etc/syslog.conf
/sbin/syslogd
/usr/sbin/syslog-facility
/usr/sbin/syslogd-listfiles
/usr/share/doc/sysklogd/changelog.Debian.gz
/usr/share/doc/sysklogd/changelog.gz

/usr/share/doc/sysklogd/copyright
/usr/share/doc/sysklogd/readme.txt.gz
/usr/share/man/man5/syslog.conf.5.gz
/usr/share/man/man8/sysklogd.8.gz
/usr/share/man/man8/syslog-facility.8.gz
/usr/share/man/man8/syslogd-listfiles.8.gz
/usr/share/man/man8/syslogd.8.gz
/usr/share/sysklogd/dummy

On voit dans lensemble de ces fichiers outre le binaire principal /sbin/syslogd le fichier binaire /usr/sbin/syslogdlistfiles et /usr/sbin/syslog-facility. Ils constituent les 3 fichiers binaires de lensemble syslog.
Le binaire syslogd-listfiles a pour but de slectionner le fichier de logs le plus adapt a une rotation (en gnral le
fichier le plus volumineux) dans les fichiers de logs lists dans /etc/syslog.conf. Ce binaire est lanc par les scripts
/etc/cron.daily/sysklogd et /etc/cron.weekly/sysklogd qui sexcutent a priode constante. Le fichier binaire
syslog-facility sert a installer ou dsinstaller une nouvelle priorit a un message dans le fichier de configuration
syslog.conf.
Il est noter que le dmon syslogd par dfaut ncoute PAS sur le rseau et reoit donc des messages vnementiels
en local laide dune socket Unix domain. Cette socket est en ralit un fichier spcial appel FIFO se comportant
comme une liste dattente dans lequel le dmon va lire. Il sagit en ralit 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 dfaut du processus en lui demandant dcouter les messages sur le rseau 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 dmarrage 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 superutilisateur. Les fichiers de configuration ont les droits de lecture uniquement pour tout le monde sauf root qui a en
plus les droits decriture. 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 dexecution.
Nous allons maintenant tudier le fichier de configuration du dmon syslogd. Lors de son lancement, syslogd lit le
fichier /etc/syslog.conf, et en dduit dans quel fichier doit tre enregistr chaque message. Chacun deux est
compos de trois parties distinctes : la priorit, le service et le texte qui devra tre enregistr dans lhistorique. Cest
en fonction de la priorit du message et du service qui la gnr que syslog dterminera dans quel fichier
enregistrer le message. Dans syslog.conf, on dfinit donc ce que lon veut tracer, le niveau de traabilit et o on
doit envoyer la trace.
Exemple : mail.info

/var/log/mail.info

Chaque ligne est de la forme :


Service.Priorit

Destination

Service correspond au type de programme (Dmon, Noyau,...) et doit tre lun de ces mots-cls : auth, authpriv,
cron, daemon, kern, lpr, mail, mark, news, security (identique auth), syslog, user, uucp et local0 local7.
Priorit reprsente le niveau de gravit du message et doit tre lun de ces mots cls : 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 reprsente la destination du message et peut tre un chemin vers un fichier texte (ex :
/var/log/mail.info) ou le nom dune console pour envoyer les messages lcran (ex : /dev/tty8) ou un autre serveur
(ex : @MonAutreServeur).
Remarque : Chaque programme dtermine les Services et les Priorits quil utilise et il est rarement
possible de les modifier. Par exemple, les programmes Postfix et Fetchmail utilisent la Service mail .
Ne pas oublier quaprs chaque modification dun fichier de configuration, il faut relancer le script de dmarrage du
service pour que les changements soient pris en compte.
Le service syslog enregistre les logs quil reoit en fonction des paramtres prsents dans syslog.conf. Ainsi, tous les
logs sauf les logs dauthentification seront prsents dans le fichier /var/log/syslog et seront galement rpartis
grace au dmon dans dautres fichiers de logs correspondant a un meme service et a un niveau de criticit. Pour
exemple, voici la liste des 10 derniers logs prsents dans /var/log/syslog.conf

Afin de vrifier le bon fonctionnement du service, on peut dj taper la commande /etc/init.d/sysklogd status qui
devrait retourner syslogd is running . Ensuite, on dispose de la commande logger qui nous permet denvoyer a
la demande un message a syslog. La vrification du contenu des fichiers de log nous prouvera si le fichier a t reu
ou non, donc si le dmon fonctionne correctement. Cet exemple est illustr dans la capture suivante ou lon peut
sapercevoir que jenvoie un message de type lpr (service dimpression) au dmon syslog laide de la commande
logger. On peut vrifier que le message est bien prsent dans /var/log/syslog et dans le fichier de le fichier de log
concern /var/log/lpr.log

On peut donc conclure daprs ce test que localement le dmon syslogd fonctionne correctement. Penchons nous
maintenant sur le cas ou le dmon coutera sur le rseau via le port UDP 514 afin de centraliser les logs que lui
forwardent les autres ordinateurs. Il va falloir modifier le fichier de configuration syslog.conf comme expliqu
prcdemment et ajouter la variable SYSLOGD la valeur r puis relancer le service. Pour le poste qui gnrera le
message, il faudra configurer dans syslog.conf pour le service lpr, non pas un chemin local mais ladresse IP de la
machine qui centralisera les logs. Refaisons la mme exprience partir dun autre poste du rseau

Le port UDP 514 est a prsent ouvert car le dmon syslogd est maintenant en coute de message sur le rseau. Un
nmap sans avoir mis loption r dans la variable SYSLOGD du fichier /etc/default/syslogd naurait pas indique le port
514 en ouvert mais en ferm. Sur la machine (famille-server.home) qui va envoyer le message lpr au serveur syslog
(pc-rom1) on a configur dans /etc/syslog.conf en face du champs lpr.* la valeur de ladresse IP de la machine a qui
envoyer le message (a la place du fichier local /var/log/lpr.log) soit @192.168.1.140 (ip du serveur syslog). Puis je
redmarre le service puis tape la meme commande que prcdemment avec la commande logger sur le pc distant.
Voici la trace de /var/log/syslog du serveur montrant que le dmon syslog a bien receptionn le message forward
par famille-server.home

On voit bien a la dernire ligne que le serveur a bien rceptionn le message du client distant famille-server.home.
Ces 2 exemples ont donc dmontr lutilisation du dmon syslogd via une utilisation locale ou via le rseau. Ces tests
attestent du bon fonctionnement du service.

SECURITE
La premire des rgles de scurit est davoir les dmons mis jour pour corriger dventuels bugs. En effet, si un
dmon plante, on a un dfaut de disponibilit de service (la disponibilit tant un des piliers de la scurit). De la
mme manire, les programmes tant conu par des humains ne sont pas exempt de failles quun individu maicieux
pourra exploiter (nous en donnerons une liste non exhaustive dans la suite de cette documentation). Ainsi pour
raliser la mise a jour dun dmon, on peut utiliser la commande :
Apt-get install sysklogd
Si le paquet est la dernire version disponible, le rsultat de la commande le notifiera sinon le paquet sera mis a
jour. Pour connaitre la version dun paquet on peut taper la commande : aptitude show sysklogd. On peut ensuite
comparer la version de son paquet avec ce qui se trouve sur internet par exemple.
Il y une possibilit que le dmon syslogd soit utilis comme passage pour une attaque de dni de service. Un
programme(ur) malicieux pourrait trs simplement noyer le dmon syslogd avec des messages, ce qui conduirait les
journaux remplir toute la place restante du systme de fichiers. Activer la journalisation travers la socket de
domaine internet exposera le systme des risques extrieurs vis--vis des programmes ou des utilisateurs de la
machine locale.

Il y a de nombreuses mthodes pour protger cette machine :


1. Implmenter le pare-feu du noyau pour limiter les htes ou les rseaux ayant accs la socket 514/UDP.
2. La journalisation peut tre dirige vers un systme de fichiers isol ou non-racine qui, s'il est plein, n'impactera
pas la machine.
3. Le systme de fichiers ext2 peut tre utilis en le configurant pour limiter un certain pourcentage du systme de
fichier pour une utilisation par root seulement. REMARQUEZ que cela obligera lancer syslogd comme processus
non root. REMARQUEZ AUSSI que cela empchera l'utilisation de la journalisation distante, puisque syslog sera
incapable de lier la socket 514/UDP.
4. Dsactiver la socket de domaine internet limitera les risques sur la machine locale.
Pour palier aux quelques problmes de scurit que propose le dmon syslogd, on trouve des amliorations de ce
dmon appels syslog -ng ou on trouve encore le dmon rsyslog

REFERENCES
http://fr.wikipedia.org/wiki/Syslog Informations gnrales sur le service
http://www.karlesnine.com/tag/syslogd Manuel francais de Syslogd
http://www.coagul.org/spip.php?article210 Configuration de syslogd (syslog.conf)

You might also like