Chinese (People's Republic of China)  English  Français


Supinfo-Projects.com
Tous les projets des élèves ingénieurs de Supinfo



Projets
  Dernier Projet
  Les plus populaires
  Tous les Projets

289 Visiteurs
3168 Projets


My Supinfo-Projects

   Connectez-vous
   Créez un Compte


Synopsis

   35 Visites
   Note INTERNET : 17.3
    (3 Votants)
   4 Commentaires

   Lire l'article

Evaluez cet article

20
18
16
14
12
10
8
6
4
2
0


Commentez cet article

Auteur :

Email :

Votre commentaire :



 
2005 - Note de Synthèse Stage
Centraliser ses logs avec Syslog-ng
[30 mn de lecture - paru le 10/7/2005 11:11:11 AM - Public : Débutant]

Auteur

PoppuFlavien SALSMANN
Elève-Ingénieur Supinfo Paris
Promotion SUPINFO 2007

   Lui écrire
   Tous les projets de cet auteur
   Le mini-CV de cet auteur

2 Configuration du serveur Syslog-NG

2.1 Organisation du fichier syslog-ng.conf

Syslog-ng charge lors de son lancement un fichier de configuration, se trouvant dans etc/syslog-ng/syslog-ng.conf. Vous pouvez néanmoins utiliser un autre fichier de configuration en utilisant l'option -f. Le fichier est divisé suivant 5 grandes sections :

  • Options, permettant de définir les paramètres généraux du serveurs de logs
  • Sources, permettant de définir les différentes sources possibles
  • Destination, permettant de définir l'endroit où le log sera stocké
  • Filter, permettant de définir les filtres s'opérant sur les logs (contenu, facilité, etc...).
  • Log, permettant de définir les actions et la prise en charge des logs
On traite les logs suivant leurs sources, leurs destinations et leurs formes (filtres). On peut ainsi tout à fait ignorer une bonne partie des logs que l’on reçoit en fixant des règles de filtres restrictives lorsque l’on traite les logs.

La section "options"

Voici la liste des paramètres possibles, permettant de personnaliser le fonctionnement du Daemon :

  • log_msg_size() : Taille maximale en octet d’un message
  • sync() : Nombre d'évènement avant d'écrire dans les journaux
  • log_fifo_size() : La pile de traitement des évènements, permet de stocker en mémoire x lignes
  • time_reap() : Ferme un fichier de journalisation après x secondes
  • time_reopen() : Nombre de secondes que l'on attend si la connexion est tombée
  • create_dirs() : Créer les répertoires de logs si nécessaire (Yes ou No)
  • perm() et dir_perm() : Permissions des fichiers de logs et du répertoire de logs
  • group() et dir_group() : Groupe propriétaire des logs et des répertoires de logs
  • owner() et dir_owner() : Utilisateur propriétaire des logs et des répertoires de logs
  • use_dns() : Utilisation des serveurs DNS pour résoudre les noms
  • long_hostnames() : Utilisation de noms longs DNS (On ou Off)
  • check_hostname() : Vérifie que le nom des clients DNS est valide (Yes ou No)
  • use_fqdn() : Utilisation des FQDN dans les noms de logs (Yes ou No)
  • keep_hostname() : Spécifie si l'on dois faire "confiance" au hostname (Yes or No)
  • dns_cache(), dns_cache_size(), dns_cache_expire() : Activation du cache DNS pour x Hosts pendant X Secondes
  • use_time_recvd() : Utiliser l'heure locale au lieu de l'horodatage (Yes ou No)
  • gc_busy_threshold() : Lancement du Garbage Collector au bout de X évènements quand syslog-ng est actif
  • gc_idle_threshold () : Lancement du Garbage Collector au bout de X évènements quand syslog-ng est inactif

La section "source"

On définit les différentes sources possibles des logs, on peut en définir plusieurs d'un coup, afin de regrouper plusieurs "sources" en une seule "virtuelle".

Exemple permettant de récupérer les logs arrivant de 10.0.1.5 en TCP


source ip780 {
tcp (ip ("10.0.1.5") );
};


Les sources possibles :

  • file() = ouvre un fichier donné et le lit
  • internal() = les messages internes de syslog-ng
  • pipe(), fifo() = ouvre un fichier fifo donné et le lit
  • udp() , tcp() = écoute sur le port udp ou tcp spécifié
  • sun-stream(), sun-streams() = écoute les systèmes Solaris
  • unix-dgram() = lit les sockets UNIX en mode SOCK_DGRAM (BSD)
  • unix-stream() = lit les sockets UNIX en mode SOCK_STREAM (Linux)

La section "destination"

On définit les différentes destinations possibles des logs, on peut en définir plusieurs d'un coup, afin d'envoyer les logs sur plusieurs fichiers par exemple.

Exemple permettant d'envoyer le message via un programe, ici un script perl, et vers un fichier


destination mailfile {
program("perl /scripts/log_mailsend.pl $MSG ");
file ("/var/log/syslog-ng/$YEAR.$MONTH.$DAY/$HOST/logfile.log");
};


Il est à noter que les noms de fichiers supportent les Macros. C'est un des aspects les plus intéressants de syslog-ng : vous pouvez en effet facilement trier vos fichiers de logs grâce à des noms facilement reconnaissables et personnalisables. Ainsi, les macros permettent de nommer le nom du fichier de logs suivant la machine, son IP, la date, etc...

Dans notre exemple, le fichier pourra par exemple s'appeller /var/log/syslog-ng/2005.10.04/MACHINE/logfile.log.

Les destinations possibles :

  • file() = écrit sur un fichier donné
  • usertty() = envoie le log sur un tty donné
  • fifo(), pipe() = écrit sur un fichier fifo donné
  • udp(),tcp() = envoie le message sur le port spécifié
  • program() = lance un programme donné et lui envoie le message
  • unix-dgram() = envoie un message contenant le log en SOCK_DGRAM
  • unix-stream() = envoie un message contenant le log en SOCK_STREAM

Les Macros utilisables :

  • FACILITY : facilité du log
  • LEVEL ou PRIORITY : niveau du log
  • DATE : la date durant laquelle le log a été
  • DAY : le jour durant lequel le log a été envoyé
  • HOST : le nom de la machine ayant envoyé le log
  • YEAR : l'année durant laquelle le log a été envoyé
  • HOUR : l'heure durant laquelle le log a été envoyé
  • MIN : la minute durant laquelle le log a été envoyé
  • MONTH : le mois durant lequel le log a été envoyé
  • SEC : la seconde durant laquelle le log a été envoyé
  • PROGRAM : le nom du programme ayant envoyé le log
  • FULLDATE : la date entière du log : avec l'heure, minute et seconde
  • WEEKDAY : les trois premières lettres du jour durant lequel le log a été envoyé (exemple : "Wed")

La section "filter"

On définit les filtres permettant de limiter les logs pris en compte. Partie primordiale du serveur syslog-ng, car permettant de traiter directement les logs, dès leur arrivée, sans avoir à les parser ou les traiter après réception. C'est sur cette section que vous devrezprincipalement vous concentrer.

Exemple permettant de récupérer les erreurs d'authentification

filter auth_errors { level(error) and facility(auth); };

A noter la possibilité de les inverser avec NOT et d'utiliser les opérandes AND et OR

Les filtres possibles :

  • facility() = le facility du log
  • level(), priority() = le niveau du log
  • filter() = évalue le log suivant un autre filtre
  • netmask() = vérifie le masque de sous réseau
  • match() = modèle du message (supporte les Regex)
  • host() = la machine présentant le log (supporte les Regex)
  • program() = le programme qui a généré le log (supporte les Regex)

Attention, les développeurs de Syslog-ng préconisent d'utiliser le moins possible les expressions régulières afin de ne pas trop surcharger le CPU des machines exécutant le daemon. Il est ainsi préférable d'utiliser plusieurs filtres "match", couplés avec des opérandes "AND", plutôt que d'utiliser un seul filtre "match" utilisant les Regex. Réfléchissez donc beaucoup avant de les utiliser!

La section "log"

Cette dernière partie permet tout simplement de "construire" vos captures de logs à partir des sections que nous avons définies auparavant. Vous pouvez donc complètement configurer l'application suivant vos besoins.

Exemple de section log


log exemple {
source(ip780);
destination(mailfile);
filter(auth_errors);
};


Cet exemple permet ainsi de récupérer les erreurs d'authentification (filter auth_errors) venant de la machine 10.0.1.5 (source ip780) et de les envoyer sur le fichier défini dans la destination (mailfile).

Pour plus de précisions, vous pouvez consulter la documentation officielle :
http://www.balabit.com/products/syslog_ng/reference-1.6/syslog-ng.html/book1.html

2.2 Exemple de fichier de configuration

Afin de mieux comprendre le système général de Syslog-ng, voici un exemple de fichier de configuration basique commenté.


# Définition de la configuration de syslog-ng
options 
{
  # Nombre d'évènements avant d'écrire dans les journaux
sync (0);
# Nombre de secondes que l'on va attendre si la connexion est tombée
  time_reopen(10);
# etc
};
# Les différentes sources possibles

# Evènements locaux
source s_localhost
{
    pipe ("/proc/kmsg" log_prefix("kernel: "));
    unix-stream ("/dev/log");
   internal();
};
# Tous les logs Réseaux udp
source s_network { udp( port(514) ); };
# Les destinations possibles
# Pour tous les logs locaux
destination d_localhost {
file ("/var/log/syslogng/$YEAR.$MONTH.$DAY/localhost/$FACILITY.log");
};
# Pour tous les logs Réseaux
destination d_network {
# Possibilité d’utiliser mySQL via un fifo file
pipe ("/tmp/mysql.pipe" template ("INSERT INTO logs(host, \
facility, priority, level, tag, datetime, program,\
msg) VALUES ('$HOST', '$FACILITY', '$PRIORITY', \
'$LEVEL', '$TAG', '$YEAR-$MONTH-$DAY $HOUR:$MIN:$SEC', \
     '$PROGRAM',  '$MSG');\n") template-escape(yes) );
file ("/var/log/syslog-ng/$YEAR.$MONTH.$DAY/$HOST/reseau.log");          
};
# Filtres 
filter f_local6 { facility(user); };
# Traitements des logs à proprement parlé
log {
    source(s_localhost);
destination(d_localhost);
};
log {
source(s_network);
filter(f_local6);
    destination(d_network);
};


La configuration du serveur est à présent terminée. Mais cela ne suffit évidemment pas, il faut à présent spécifier aux machines cibles qu'elles doivent transmettre leurs trames syslog à ce serveur. Nous allons donc expliquer le fonctionnement du démon de base syslogd, et le configurer afin qu'il redirige convenablement ses trames.


Articles de la même catégorie

 Pages : Top


17 Visites
0 Commentaires
Bien choisir son serveur en entreprise
[20 mn de lecture - paru le 10/6/2005 1:55:28 PM - Public : Débutant]

En savoir plus


15 Visites
0 Commentaires
Developing a SARL
[10 mn de lecture - paru le 10/5/2005 12:35:32 PM - Public : Débutant]

En savoir plus


50 Visites
0 Commentaires
Fonctionnalités de Mac os X 10.4 Server
[20 mn de lecture - paru le 10/4/2005 11:41:47 PM - Public : Confirmé]

En savoir plus

   Tous les Articles


SUPINFO Training Center peut vous proposer une formation système ...

   Devenez Ingénieur Système Microsoft en 35 jours avec SUPINFO Training Center
   Devenez Administrateur Système Microsoft avec SUPINFO Training Center


Powered by Campus-Booster Technology
Conditions d'utilisation & Copyright | Respect de la vie privée
© Copyright 1965-2006 Supinfo Paris, Paris Academy of Computer Science
Supinfo, Ecole Supérieure d'Informatique et Paris Academy Of Computer Science are trade marks.
23, rue de Château LANDON - 75010 PARIS - Phone : +33 (0) 153359 700 Fax : +33 (0) 153359 701

Web site autided by :