Gentoo Forums
Gentoo Forums
Gentoo Forums
Quick Search: in
[HOWTO] Syslog-ng
View unanswered posts
View posts from last 24 hours

 
Reply to topic    Gentoo Forums Forum Index French
View previous topic :: View next topic  
Author Message
Antares
Apprentice
Apprentice


Joined: 04 Apr 2005
Posts: 184
Location: France

PostPosted: Wed Nov 16, 2005 2:02 am    Post subject: [HOWTO] Syslog-ng Reply with quote

Pas mal d'explications par l'exemple pour l'utilisation de syslog-ng.


Tout se fait dans le fichier de configuration suivant : /etc/syslog-ng/syslog-ng.conf

Ce fichier est constituté de 5 sections :

  • options - Les options générales
  • source - les sources d'événements
  • destination - les destinations de journaux
  • filter - les filtres
  • log - les actions


1. Section options

(j'ai pas tout traduit mais je le ferais bientot)
Code:
options {
       chain_hostnames(yes|no)
              Enable or disable the chained hostname format.

       long_hostnames(yes|no)
              This is a deprecated alias for chain_hostnames().

       keep_hostname(yes|no)
              Specifies  whether  to  trust  hostname  as it is included in the log message. If keep_hostname is yes and there is a hostname in the message it is not touched, otherwise it is
              always rewritten based on the information where the message was received from.

       use_dns(yes|no)
              Enable or disable DNS usage.  syslog-ng blocks on DNS queries, so enabling DNS may lead to a Denial of Service attack.  To prevent DoS, protect your syslog-ng network  endpoint
              with firewall rules, and make sure that all hosts, which may get to syslog-ng is resolvable.

       use_fqdn(yes|no)
              Add Fully Qualified Domain Name instead of short hostname.

       check_hostname(yes|no)
              Enable or disable whether the hostname contains valid characters.

       bad_hostname(regex)
              A regexp which matches hostnames which should not be taken as such.

       dns_cache(yes|no)
              Enable or disable DNS cache usage.

       dns_cache_expire(n)
              Number of seconds while a successful lookup is cached.

       dns_cache_expire_failed(n)
              Number of seconds while a failed lookup is cached.

       dns_cache_size(n)
              Number of hostnames in the DNS cache.

       create_dirs(yes|no)
              Enable or disable directory creation for destination files.

       dir_owner(uid)
              User id.

       dir_group(gid)
              Group id.

       dir_perm(perm)
              Permission value (octal mask).

       owner(uid)
              User id for created files.

       group(gid)
              Group id for created files.

       perm(perm)
              Permission value for created files.

       gc_busy_threshold(n)
              Sets the threshold value for the garbage collector, when syslog-ng is busy.  GC phase starts when the number of allocated objects reach this number.  Default: 3000. gc_idle_threshold(n)
              Sets the threshold value for the garbage collector, when syslog-ng is idle.  GC phase starts when the number of allocated objects reach this number.  Default: 100.

       log_fifo_size(n)
              The number of lines fitting to the output queue. An output queue is present for all destinations.

       log_msg_size(n)
              Maximum length of message in bytes (NOTE: some syslogd implementations have a fixed limit of 1024 characters).

       mark(n)
              The number of seconds between two MARK lines.  NOTE: not implemented yet.

       stats(n)
              The number of seconds between two STATS messages.

       sync(n)
              The number of lines buffered before written to file (can be overridden locally).

       time_reap(n)
              The time to wait before an idle destination file is closed.

       time_reopen(n)
              The time to wait before a died connection is reestablished.

       use_time_recvd(yes|no)
              This  variable  is used only for macro expansion where the meaning of the time specific macros depend on this setting, however as there are separate macros for referring to the
              received timestamp (R_ macros) and the log message timestamp (S_), so using this value is not recommended.

};


Par défaut, ceci peut suffir :
Code:
options { long_hostnames(off); sync(0); stats(43200); };


2. Section Source

Code:
Syntaxe : source <identifiant> { source-driver(paramètres); source-driver(paramètres); ... };


Les sources dispo sont :

  • unix-stream (<nom de fichier>) - Lis les messages à partir de tubes de type flux (AF_UNIX, SOCK_STREAM socket)
  • file (<nom de fichier>) - Lis les messages à partir d'un fichier donné.
  • tcp (<ip>,<port>) - Lis les messages à partir d'une source sur le reseau en utilisant le protocole tcp ou udp (Si vous ne voulez pas utiliser une interface spécifique, utilisez 0.0.0.0)
  • udp (<ip>,<port>) - Lis les messages à partir d'une source sur le reseau en utilisant le protocole tcp ou udp (Si vous ne voulez pas utiliser une interface spécifique, utilisez 0.0.0.0)
  • internal() - Lis les messages internes à syslog-ng.


En général, on met seulement :

Code:
source src {
  unix-stream("/dev/log");
  internal();
  file("/proc/kmsg");
};



3. Section Destination

Code:
Syntaxe : destination <identifiant> { destination-driver(paramètres); destination-driver(paramètres); ... };


Les destinations dispo sont :

  • file(<nom de fichier>) - Ecrit les messages dans un fichier donné.
  • tcp(<ip>,<port>) - Envoie les logs sur une machine sur le réseau en utilisant le protocole tcp.
  • udp(<ip>,<port>) - Envoie les logs sur une machine sur le réseau en utilisant le protocole udp.
  • unix-stream(<nom de fichier>) - Ecrit les messages dans des tubes de type flux (AF_UNIX, SOCK_STREAM socket)
  • usertty(<user>) - Ecrit les messages dans les consoles de l'utilisateur <user> ( * envoie les logs à tous les utilisateurs)
  • program(<commande à lancer>) - Envoie les logs vers un programme.


On peut utiliser l'option log_fifo_size(<TAILLE>)
De plus on peut utiliser toutes les variables suivantes : FACILITY, PRIORITY or LEVEL, DATE, FULLDATE, ISODATE, YEAR, MONTH, DAY, HOUR, MIN, SEC, FULLHOST, HOST

exemple :
Code:
destination hosts {
  file("/var/log/HOSTS/$HOST/$FACILITY/$YEAR/$MONTH/$DAY/$FACILITY$YEAR$MONTH$DAY"
       owner(root)
       group(root)
       perm(0600)
       dir_perm(0700)
       create_dirs(yes));
};



4. Section filter

Code:
Syntaxe : filter <identifiant> { expression; };


Les options dispo sont :

  • facility(<liste de noms séparés par des virgules>) - Filtre par type.
  • level(<liste de noms séparés par des virgules, ou une plage séparée par .. >) - Filtre les priorités ou niveaux.
  • program(<Expression Régulière(traduction pourrie :/)>) - Filtre le nom du programme générant le message.
  • host(<Expression Régulière(traduction pourrie :/)>) - Filtre une expression régulière du nom d'hôte de l'expéditeur du message.
  • match(<Expression Régulière(traduction pourrie :/)>) - Filtre un message sur une expression régulière.
  • filter(<Nom de filtre>) - Utilise un autre filtre.

Les expressions peuvent contenir "AND" "OR" et ou "NOT".

Exemple :
Code:
filter f_sshd{ match(" sshd") and not match("Invalid user"); };



5. Section log

Code:
Syntaxe : log { source(s1); source(s2); ...
               filter(f1); filter(f2); ...
               destination(d1); destination(d2); ...
               flags(flag1[, flag2...]); };


exemples :
Code:
log { source(src); filter(f_sshd); destination(sshd); };
log { source(src);
      destination(full);
};



6. Exemples et Astuces

  • Exemple sur le wiki anglais

  • Pour logger tout ce qu'un utilisateur tape en console, on peut faire ceci :
    Code:
    destination <utilisateur> { file(/var/log/users/<utilisateur>.log); };
    filter f_<utilisateur> { facility(local5) and match("<uid de l'utilisateur>"); };
    log { source(src); filter(f_<utilisateur>); destination(<utilisateur>); };


  • Pour protéger les logs contre la suppression , on peut faire ceci sur un fichier ou un répertoire :
    Code:
    $ chattr +a /var/log/fichier.log

    Ce qui n'autorise plus que l'ajout de données à la fin du fichier. Seul le root peut changer cela en faisant :
    Code:
    $ chattr -a /var/log/fichier.log

    Et le fichier redevient supprimable/modifiable.

  • Pour exporter vos logs sur le reseau de façon sécurisée :


Vos commentaires, remarques, ajouts, sont les bienvenus :D
Back to top
View user's profile Send private message
Display posts from previous:   
Reply to topic    Gentoo Forums Forum Index French All times are GMT
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum