Vous êtes sur la page 1sur 7

Centraliser et exploiter les logs avec Syslog-ng et LogZilla

L'art de centraliser et d'exploiter les messages journaux (logs) avec Syslog-ng & LogZilla

introduit dans le systme, c'est d'efacer rapidement les traces afn de rendre son identifcation difcile, voire impossible. Les messages journaux tant trs importants non seulement pour la gestion proactive des incidents (pannes, problmes, etc.), mais aussi pour l'audit scurit (cas d'incident scurit par exemple), il convient de mettre en place des mesures visant les protger. Une des mesures de protection passe par l'implmentation d'un systme de centralisation des messages journaux vers un serveur. D'o cet article.

By Elie MABO IT Security Professional


Network+, Security+
http://www.matael.info

Fvrier 2012

C ' e st quoi un m e s s a g e journ al ?


Un message journal (log en anglais) est une information gnre par un programme suite un vnement (erreur, warning, etc.) survenu. L'vnement peut tre par exemple la suppression d'un rpertoire. En fonction des types de programmes, les messages journaux sont stocks dans des fchiers spciaux destins contenir ceux ci. La structure d'un message journal est dcoupe en trois grandes parties: Header: contient des informations sur la priorit, la version du protocole syslog, l'ID du processus, etc. Structured-data: contient des meta informations telles que les adresses, le trafc, etc. MSG: contient le texte du message. Je n'entrerai pas plus dans les dtails de la structure d'un message journal, car ce n'est pas l'objectif de cet article. Si vous souhaitez en savoir plus, rfrez vous au RFC 5424.

Pr s entation de S y s lo g-N G
Syslog-NG (Syslog New Generation) est une application permettant de grer des messages journaux gnrs par des programmes suite aux vnements survenus. Il s'agit d'une implmentation Open Source du protocole syslog (normalis par l'IETF, RFC 5424). Il permet d'enregistrer des informations sur des vnements (systmes, rseaux, scurits, applications, etc.) dans des f chiers spcifques appels des fchiers journaux. Syslog-NG permet galement de centraliser des messages journaux au niveau d'un point unique du rseau (serveur de logs par exemple), ce qui allge et facilite les tches de gestion des logs d'un ensemble de ressources systmes, rseaux et scurit. Syslog-NG est une alternative volue de syslog , qui est le programme de gestion des logs retrouv par dfaut sur la plupart des ressources (serveurs Unix/Linux par exemple). Syslog-NG est dvelopp aujourd'hui par la socit Balabit IT Security Ltd,

Po uquoi c e ntrali s er journau x ?

le s

mes sa ges

J'ai rdig cet article avec une vision oriente plus vers des problmatiques de scurit dans un systme d'information. Les messages journaux sont crs et et stocks dans des f chiers appels f chiers journaux, par des programmes. Ces messages sont grs par une application de gestion des logs. Par dfaut, les fchiers journaux sont stocks localement sur chacune des ressources. Cependant, en cas d'incident (attaque, panne, efets bizzares, etc.), il est important d'analyser ceux-ci afn de dtecter les causes possibles de l'incident. Hors l'une des premires actions d'un bon pirate une fois

Fon ctionn alit s de S y s l o g-N G


Par rapport syslog , syslog-NG ofre en plus des fonctionnalits dj ofertes par syslog: la possibilit d'envoi et de rception des messages via le protocole TCP (trs bien pour la fabilit) le fltrage et la rpartition des messages avec des expressions rgulires (super pour la fexibilit) la possibilit de chifrer les changes
1/7

Un article sur la scurit informatique de E lie M A B O (IT Security Professional)

Centraliser et exploiter les logs avec Syslog-ng et LogZilla de messages entre les ressources via le protocole TLS (trs important d'un point de vue scurit) la compatibilit avec IPv6 (gnial pour l'avenir) la compatible avec les bases SQL (Mysql, PostgreSQL, Oracle, etc.)
Pour le fonctionnement de syslog-NG, vous avez besoin juste d'installer les packages syslogng.x86_64 et eventlog.x86_64 Je vous recommande tout de mme de mettre jour vos systmes avant l'installation de syslog-NG. Un yum update fera l'afaire.

Ar chite chture de S y s l o g-N G


Syslog-NG peut fonctionner comme client (envoi des logs), comme serveur (rception des logs), comme relay (relayage des messages), ou la fois comme client et serveur. Dans le cadre de la centralisation et de l'exploitation des messages journaux dans un contexte scurit, son architechture peut tre tendue avec l'intgration de certains modules ou composants. Vous pourriez par exemple avoir: une base de donnes pour le stockage des logs une interface Web pour l'exploitation facilit des logs une PKI (Public Key Infrastructure) pour la gestion des certifcats et cls un ou plusieurs serveur (s) un ou plusieurs client (s)

L'installation se fait l'aide de la commande suivante:


[root@sixfeet ~]# yum install syslog-ng.x86_64

Cette commande installe galement le package eventlog.x86_64 et les dpendences ncessaires.

C o nfi guration S y sl o g-N G

t ape

p ar

t ape

de

In st allation de s y slo g-N G


L'installation de syslog-NG peut crer des confits avec certains fchiers utiliss par d'autres programmes de logs dj prsents sur la machine. C'est le cas du fchier "/etc/logrotate.d/syslog" de rsyslog . Si c'est le cas, dinstallez rsyslog avant d'installer syslog-ng . Dans cet article, je me suis bas sur une installation faite sur deux machines linux (architechture CPU 64bits) utilisant la distribution Scientifc Linux en version 6.1. En faisant un yum search syslog-ng, vous avez des paquets disponibles pour une installation via le gestionnaire de packages yum .
yum search syslog-ng output :
syslog-ng-devel.x86_64 : Development files for syslog-ng eventlog.x86_64 : Syslog-ng v2 support library eventlog-devel.x86_64 : Syslog-ng v2 support library development files eventlog-static.x86_64 : Syslog-ng v2 support static library files : Next-generation syslog

Syslog-NG utilise plusieurs types d'objets savoir: source, destination, log, parser, rewrite, template, etc. Dans cet article, j'aborde jusque quelques uns de ses objets. Le fchier de confguration de syslog-NG se trouve par dfaut dans le rpertoire /etc/syslog-ng/ et se nomme syslogng.conf . Il se compose de cinq (5) sections, savoir: 1. Options globales de confguration 2. Sources 3. Filtres 4. Destinations 5. Routes (application des sources, fltres et destinations prcdemment dfnis). Ainsi, la confguration de syslog-NG consiste modifer les paramtres de chacune de ces sections. Elle peut se faire suivants les 5 tapes ci-aprs: Etape1: Dfnition des options globales de confguration

Cette tape permet de con fgurer les paramtres globaux qui s'appliqueront tous les autres niveaux de confguration de syslog-NG.

Voici quelques exemples globaux: use_dns(yes) use_fqdn(yes) keep_hostname(yes) log_msg_size(12345)

de

paramtres

server
Un article sur la scurit informatique de E lie M A B O (IT Security Professional)

2/7

Centraliser et exploiter les logs avec Syslog-ng et LogZilla Etape2: Dfnition des sources Cette tape permet de dfnir des sources de provenance des messages. Les messages proviennent des ressources (serveurs, frewalls, routeurs, etc.). La dfnition des sources se fait l'aide du mot cl source et des drivers sources. Une source est identife par un nom et se compose d'un ou de plusieurs driver(s). Quelques exemples de drivers sources:

d'une machine match: permet de fltrer partir des motifs dfnis flter: permet d'appeller d'autres fltres et d'valuer leurs valeurs netmask: permet de dterminer si l'adresse IP source fait bien partie d'un sous rseau IP

unix-stream(): messages arrivant d'une socket unix internal(): messages gnrs pas syslog-NG tcp(): messages arrivant sur un port d'une interface rseau program(): messages gnrs par un programme fle(): messages lus depuis un fchier

Voici un exemple de dfnition d'un fltre : filter svr_log_filter1 { host("system" flags (ignorecase)) and level(warning); }; Etape4: Dfnition des destinations Cette tape permet de dterminer les destinations des messages. Dans le cadre de la centralisation des logs, les messages sont gnralement destins aux serveurs de centralisation. Ils peuvent tre stocks dans des fchiers, des pipes, sur des sockets, etc. La dfnition des destinations se fait l'aide du mot cl destination et des drivers destinations. Une destination est identife par un nom et se compose d'un ou de plusieurs driver(s). Quelques exemples de drivers destinations:

Pour avoir la liste complte des drivers sources, consultez le guide d'administration de syslog-ng. Le lien est donn dans les rfrences de cet article. Voici un exemple de dfnition d'une source: source svr_log_src { internal(); unix-stream("/dev/log/"); tcp(ip(0.0.0.0) port(5000) maxconnections(250)); }; l'adresse IP 0.0.0.0 permet au serveur d'couter sur toutes les interfaces rseaux oprationnelles. Etape3: Dfnition des fltres Cette tape permet de dfnir des fltres appliquer sur des mesages, afn d'exploiter uniquement les logs dont on a besoin. Les fltres permettent d'viter des messages polluant, c'est dire non utiles la supervision des ressources. Il existe plusieurs types de fltres. Voici quelques uns: facility: permet de fltrer sur la base des parties du systme qui envoient des messages (kernel par exemple) level: permet de fltrer partir des niveaux d'importance (emergency, alert, critical, etc.) program: permet de fltrer partir des programmes host: permet de f ltrer partir de l'adresses IP, d'un drapeau, d'un port

fle(): les messages sont crits dans un fchier spcifque pipe(): les messages sont crits dans un pipe spcif sql(): les messages sont envoys dans une base de donnes SQL usertty(): les messages sont envoys sur le terminal d'un utilisateur spcif

Pour avoir la liste complte des drivers destinations, consultez le guide d'administration de syslog-ng. Le lien est donn dans les rfrences de cet article. Voici un exemple de d fnition d'une destination: destination svr_log_dst { file("/var/log/messages " );
template("$DATE <$FACILITY. $PRIORITY> $HOST $MSGHDR $MSG\n")

};

La dclaration template permet de dfnir le format d'afchage des messages. Les paramtres d'un template utilisent des macros.
3/7

Un article sur la scurit informatique de E lie M A B O (IT Security Professional)

Centraliser et exploiter les logs avec Syslog-ng et LogZilla Etape5: Cration des routes Cette tape permet de connecter des sources aux destinations prcdemment dfnies. La cration des routes se fait l'aide du mot cl log . Voici un exemple de cration d'une route connectant une source et une destination: log svr_sphinx_log { source (svr_log_src); filter( svr_log_filter1); destination (svr_log_dst); }; pour Windows. Une fois l'installation faite, vous devez confgur l'agent de manire ce qu'il puisse envoyer des messages journaux vers le serveur de centralisation des messages.

La confguration de syslog-NG sur des postes Windows ne fait pas partie des objectifs de cet article.

S c uri s ation de s ch an g e s de m e s s a g e s entre le s m a c hine s via T L S


Syslog-NG permet de scuriser les changes de messages journaux entre les difrentes rssources rseaux. Il s'appuie sur le protocole TLS (Transport Layer Security) pour chifrer les communications et authentifer les deux parties impliques. Cela permet de garantir la confdentialit et l'authenticit des messages journaux changs. Le schma ci aprs prsente les tapes prliminaires entre le serveur et le client:

C o nfig uration de s pour l'envoi de s s e rveur de lo g s

a utre s po s te s lo g s ver s le

-> C a s ave c s y sl o g d
Sur chacun des postes depuis lequel vous souhaitez envoy des logs vers le serveur de logs, suivez les tapes suivantes:

- Editez le fchier /etc/sysconfg/syslog


[root@sixfeet ~]# vim /etc/sysconfig/syslog

- Ajoutez l'option -r . Ainsi, la ligne SYSLOGD_OPTIONS="-m 0 " devient: SYSLOGD_OPTIONS="-m 0 -r" - Editez le fchier /etc/syslog.conf - Ajoutez la ligne suivante: *.* @sixfeet.lix.polytechnique.fr - Redmarrez le dmon syslogd
[root@sixfeet ~]# service syslodg restart [root@sixfeet ~]# vim /etc/syslog.conf
Source: The syslog-ng Administrator Guide

Ce qu'il faut remarquer dans ce schma, c'est l'authentifcation mutuelle entre le serveur et le client (pas obligatoire).

Notez ici que les messages seront envoys en clair sur le rseau, ce qui n'est pas conseill en matire de scurit rseau. Je vous recommande cet efet d'installer syslog-ng sur les postes clients afn d'exploiter les fonctionnalits de chifrement des changes via le protocole TLS.

Cr ation du c ertifi c at et de la cl du s e rveur (si xfeet)


Nous allons crer et utiliser un certifcat (format X.509) ct serveur pour le chi frement des changes de logs et l'authentifcation du serveur. La distribution Scientifc Linux, tout comme d'autres distributions Linux comprennent gnralement une PKI installe et prte l'utilisation. Suivez les tapes suivantes pour crer le certifcat et les cls du serveur et ensuite confgurer syslog-NG pour prendre en compte le chifrement des communications et l'authentifcation du serveur.
4/7

-> C a s de s s t ation s Windo w s


Pour les postes Windows, vous avez la possibilit d'installer des agents syslog-NG

Un article sur la scurit informatique de E lie M A B O (IT Security Professional)

Centraliser et exploiter les logs avec Syslog-ng et LogZilla

Sur le serveur (sixfeet)


Etape1: En tant rpertoire certs que root, accdez au

Sur le client (sphinx)


Etape6: Crez un rpertoire cert.d dans le rpertoire /opt/syslog-ng/etc
[root@sphinx]# mkdir /opt/syslogng/etc/cert.d

[root@sixfeet ~]# cd /etc/pki/tls/certs/

Etape2: Utilisez la commande make pour crer le fchier .pem du serveur


[root@sixfeet certs]# make syslog-ng.pem

Etape7: Copiez le certifcat du serveur et coller le dans le rpertoire cert.d


[root@sphinx]# cd /opt/syslog-ng/etc/cert.d [root@sphinx cert.d]#scp root@sixfeet: /opt/syslog-ng/etc/cert.d/syslog-ng.cert .

Cette tape est interactive. Ce qui veut dire que vous devrez rpondre aux questions poses lors de celle-ci. Etape3: Crez deux rpertoires cert.d et key.d dans le rpertoire /opt/syslogng/etc
[root@sixfeet certs]# mkdir /opt/syslogng/etc/cert.d [root@sixfeet certs]# mkdir /opt/syslogng/etc/key.d

Etape8: Crez un hash du certifcat et un lien symbolique entre ce certifcat et le hash cr.
[root@sphinx cert.d]# openssl x509 -noout -hash -in syslog-ng.cert root@sphinx cert.d]# ln -s syslog-ng.cert 9a2982c8.0

Modifcation du fchier de confguration de syslog-ng sur le serveur Editez le fchier de confguration de syslog-ng (vim /etc/syslog-ng/syslog-ng.conf ) et ajoutez les lignes ci-aprs (en gras) dans la section source pour indiquer au serveur que le certifcat doit tre utilis pour le chifrement des messages journaux et l'authentifcation du serveur.
source svr_log_src_tls { tcp(ip(129.104.11.63) port(514) maxconnections(250)); tls( key_file("/opt/syslog-ng/etc/key.d/syslogng.key") cert_file("/opt/syslog-ng/etc/cert.d/syslogng.cert") peer_verify(optional-untrusted)) );

Etape4: Duppiquez le fchier syslogng.pem en syslog-ng.cert et syslogng.key


[root@sixfeet certs]# cp syslog-ng.pem syslog-ng.cert [root@sixfeet certs]# cp syslog-ng.pem syslog-ng.key

Etape5: Editez le fchier syslog-ng.cert et supprimez le bloc comprenant la cl prive


-----BEGIN PRIVATE KEY----xxxxxxxxx -----END PRIVATE KEY----[root@sixfeet certs]# vim syslog-ng.cert

Editez le fchier syslog-ng.key et supprimez le bloc comprenant le certifcat


-----BEGIN CERTIFICATE----xxxxxxxxx -----END CERTIFICATE----[root@sixfeet certs]# vim syslog-ng.cert

Supprimez le fchier syslog-ng.pem cr l'tape 2


[root@sixfeet certs]# rm -f syslog-ng.pem

N'oubliez pas de remplacer l'adresse IP cidessus par la vtre. N'oubliez pas galement de crer une connexion (log) dans le fchier de confguration de syslog-NG entre vos sources et cette nouvelle destination, puis de redmarrer le dmon syslog-ng . Modifcation du fchier de confguration de syslog-ng sur le client Editez le fchier de confguration de syslog-ng (vim /etc/syslog-ng/syslog-ng.conf ) et ajoutez les lignes ci-aprs (en gras) dans la section destination pour indiquer au client que le certifcat doit tre utilis pour le chifrement des messages journaux et
5/7

Dplacez les fchiers syslog-ng.cert et syslog-ng.key dans les rpertoires crs l'tapes 3
[root@sixfeet certs]# mv /opt/syslog-ng/etc/cert.d/ [root@sixfeet certs]# mv /opt/syslog-ng/etc/key.d/

syslog-ng.cert syslog-ng.key

Un article sur la scurit informatique de E lie M A B O (IT Security Professional)

Centraliser et exploiter les logs avec Syslog-ng et LogZilla l'authentifcation du serveur.


destination svr_log_dst_tls { tcp(129.104.11.63 port(514) tls( ca_dir("/opt/syslog-ng/etc/cert.d/))) ; ); http://nms.gdd.net/index.php/Install_Guide_for_LogZilla_v3.1

N'oubliez pas de remplacer l'adresse IP cidessus par la vtre. N'oubliez pas galement de crer une connexion (log) dans le fchier de confguration de syslog-NG entre vos sources et cette nouvelle destination, puis de redmarrer le dmon syslog-ng .

En fonction de votre distribution, vous s'y trouverez une procdure bien labore et complte dtaillant les tapes d'installation de LogZilla. Sachez que l'installation fait appel l'installation des nombreux autres packages indispensables pour le fonctionnement de LogZilla.

C o nfi guration de L o g Zill a


Normalement, au cours de l'installation, la confguration (base de donnes, rotation des logs, etc.) est faite en mme temps. Une fois de plus, refrez vous la procdure d'installation. Par dfaut, les fchiers de confguration de LogZilla se trouvent dans le rpertoire /var/www/logzilla .

E x ploitation de s lo g s ave c L o g Zilla


Une fois les messages centraliss, il faut les analyser. L'analyse des messages brutes peut tre fastidieux. C'est l qu'intervient des outils d'analyse et d'exploitation des messages journaux. Parmi ces outils, vous avez LogWatch, GrayLog, LogZilla, etc. Dans cet article, j'ai choisi de prsenter LogZilla, bien qu'il ne soit pas gratuit. Mon choix tant dlibr. Prsentation de LogZilla LogZilla (anciennement Php-syslog-ng) est une solution logicielle de monitoring des messages journaux gnrs par des programmes et centraliss sur un serveur. Il permet d'exploiter des messages stocks dans une base de donnes grace aux interfaces graphiques. Vous comprenez donc pourquoi il est important de centraliser les logs gnrs par des ressources. Il permet galement de faire une supervision proactive des ressources, ce qui permet d'anticiper sur certains incidents (pannes, problmes, etc.). Quelques fonctionnalits de LogZilla Dtection en temps rel des vnements (erreur, warning, etc.) Identifcation rapide de la dgradation du rseau et des serveurs Alerte en temps rel par mail Possibilit d'Intgration avec LDAP ou Active Directory

U tili s ation de L o g Zilla


Une fois de plus, je ne vais pas re-inventer la roue. Pour l'utilisation de linterface Web de LogZilla, je vous recommande d'aller sur ce site:
http://nms.gdd.net/index.php/LogZilla_3.1_User_Guide

Vous s'y trouverez une documentation bien labore qui vous permettra d'utiliser facilement LogZilla. Sur ce, il ne me reste plus qu' vous souhaiter bon courage et bonne utilisation de cet article. N'hsitez surtout pas de m'envoyer votre feedback par mail mon adresse perso (elie.mabo@gmail.com)

R fren ce s
1. Ofcial syslog-ng website http://www.balabit.com/network-security/syslog-ng/ 2. The syslog-ng Administrator Guide http://www.balabit.com/support/documentation/ 3. Syslog-ng mailing list https://lists.balabit.hu/mailman/listinfo/syslog-ng 4. BalaBit Documentation Blog http://robert.blogs.balabit.com 5. ofcial logzilla website http://www.logzilla.pro 6. LogZilla user Guide http://nms.gdd.net/index.php/LogZilla_3.1_User_Guide 7. Install Guide for LogZilla v3.1 http://www.gdd.net/index.php/Install_Guide_for_LogZilla_v

In st allation de L o g Zilla s o u s Linu x


L'installation de LogZilla sur un poste Linux difre en fonction la distribution (RedHat, Ubuntu, SUSE, etc.) que vous utilise. je vous recommande d'aller sur ce site:

Un article sur la scurit informatique de E lie M A B O (IT Security Professional)

6/7

Centraliser et exploiter les logs avec Syslog-ng et LogZilla


3.1

Un article sur la scurit informatique de E lie M A B O (IT Security Professional)

7/7