informatique:linux:syslog
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
informatique:linux:syslog [2008/10/02 12:11] – Log priority pteu | informatique:linux:syslog [2020/09/14 08:50] (current) – relecture pteu | ||
---|---|---|---|
Line 1: | Line 1: | ||
- | {{tag> | ||
======Théorie du syslog====== | ======Théorie du syslog====== | ||
- | * service de gestion des logs sur le port udp/514 | + | * service de gestion des logs écoutant |
- | * 2 démons utilisés sous Linux : klogd et syslogd | + | * 2 démons utilisés sous Linux : **klogd** et **rsyslogd** |
- | * **klogd** : récupére | + | * **klogd** : récupère |
- | * **syslogd** : gestion des logs : il recoit | + | * **rsyslogd** : gestion des logs locaux |
- | =====Les services===== | + | =====Les services/types===== |
- | Listes des services reconnus par syslog : | + | Listes des services |
* **auth** : Messages relatifs à la sécurité du système et à l' | * **auth** : Messages relatifs à la sécurité du système et à l' | ||
* **cron** : Messages générés par les daemons cron et at. | * **cron** : Messages générés par les daemons cron et at. | ||
Line 37: | Line 36: | ||
- | =====/etc/syslog.conf===== | + | =====/etc/rsyslog.conf===== |
- | Fichier de conf de **syslogd** organisé en 2 colonnes : | + | Fichier de conf de **rsyslogd** organisé en 2 colonnes : |
- | * la première (sélecteur) définit l' | + | * la première (sélecteur) définit l' |
* la seconde (action) la destination (fichier, console, machine distante, liste d' | * la seconde (action) la destination (fichier, console, machine distante, liste d' | ||
Ces colonnes sont donc de la forme : | Ces colonnes sont donc de la forme : | ||
- | | + | <code bash> |
+ | < | ||
+ | </code> | ||
- | Par exemple pour récupérer les logs critiques ('' | + | Par exemple pour récupérer les logs critiques ('' |
- | mail.crit | + | <code bash> |
+ | mail.crit | ||
+ | </ | ||
On utilise : | On utilise : | ||
* une étoile '' | * une étoile '' | ||
- | * une virgule '','' | + | * une virgule '','' |
* un point virgule '';'' | * un point virgule '';'' | ||
+ | * un point d' | ||
* un tiret '' | * un tiret '' | ||
- | * la priorité '' | + | * la priorité '' |
- | Exemple1 | + | __Exemple1 |
mail, | mail, | ||
+ | | ||
- | Exemple2 : '' | + | =====Diagnostique===== |
+ | On peut vérifier la configuration avec la commande : | ||
+ | <code bash> | ||
+ | rsyslogd -N1 | ||
+ | </ | ||
+ | |||
+ | Pour lancer le démon syslog en mode DEBUG, il faut spécifier l' | ||
+ | <code bash> | ||
+ | vi / | ||
+ | | ||
+ | </ | ||
=====Configuration sous Debian===== | =====Configuration sous Debian===== | ||
- | ==== Syslog centralisé | + | =====Options de démarrage du démon===== |
- | Lorsqu' | + | Se configure dans le fichier **/ |
+ | <code bash> | ||
+ | # Options for rsyslogd | ||
+ | # -d enables debug | ||
+ | # -m 0 disables | ||
+ | # -r enables logging from remote machines | ||
+ | # -x disables DNS lookups for remote messages | ||
+ | # See rsyslogd(8) for more details | ||
+ | RSYSLOGD_OPTIONS="" | ||
+ | </ | ||
- | Pour que **sysklogd** accepte les logs depuis le réseau (ce n'est pas le cas par défaut), il faut le lancer avec l' | + | =====Filtres===== |
- | Sous Debian on peut spécifier les options de lancement du démon en modifiant la variable '' | + | |
- | # vi / | + | |
- | # | + | |
- | # For remote UDP logging use SYSLOGD=" | + | |
- | # | + | |
- | | + | |
- | Puis on le relance : | + | ====Notation basée propriété==== |
- | / | + | |
- | Restarting system log daemon.... | + | |
- | Vérification : | + | C'est une notation abrégée permettant d' |
- | ps -ef | grep syslogd | + | |
- | root | + | |
- | Bien sur, pour sécuriser le tout et éviter un DOS par flood de flux syslog depuis des machines malintentionnées, il faut complèter celà avec une règle iptables qui n'accepte les sockets udp/514 que depuis des machines bien identifiées, | + | Structure : '': |
- | iptables | + | <code bash> |
+ | # property-based filter : | ||
+ | # msg | hostname | programname | etc... | ||
+ | # compare-operation : | ||
+ | # | ||
+ | # string (cible) : | ||
+ | # | ||
+ | :msg, contains, " | ||
+ | # ancienne notation | ||
+ | # & ~ | ||
+ | # nouvelle notation | ||
+ | & stop | ||
+ | :msg, regex, "^\[ *[0-9]*\.[0-9]*\] iptables" | ||
+ | & stop | ||
+ | </ | ||
+ | |||
+ | ====Notation basée expression==== | ||
+ | |||
+ | Notation plus verbeuse basée sur le langage RainerScript propre à rsyslog, qui utilise des opérateurs logiques. | ||
+ | |||
+ | Structure : '' | ||
+ | |||
+ | <code bash> | ||
+ | if $msg regex '^\[ *[0-9]*\.[0-9]*\] iptables' | ||
+ | & stop | ||
+ | </ | ||
+ | |||
+ | |||
+ | ====Template==== | ||
+ | |||
+ | <code bash> | ||
+ | # création du template " | ||
+ | $template OpenVPN,"/ | ||
+ | # on y transfère tous les messages issus des processus dont le nom commence par " | ||
+ | : | ||
+ | # puis on arrête le traitement de ces messages pour éviter les doublons | ||
+ | : | ||
+ | </ | ||
+ | |||
+ | |||
+ | ===== Syslog centralisé ===== | ||
+ | |||
+ | Lorsqu' | ||
+ | |||
+ | Depuis Debian 8, pour activer la gestion des logs par le réseau il faut : | ||
+ | * décommenter les 2 lignes suivantes dans ''/ | ||
+ | <code bash> | ||
+ | # provides UDP syslog reception | ||
+ | $ModLoad imudp | ||
+ | $UDPServerRun 514 | ||
+ | </ | ||
+ | * activer la prise en charge " | ||
+ | * créer un fichier dans ''/ | ||
+ | <code bash> | ||
+ | # les logs provenant de l'IP 192.168.2.1 seront envoyés dans le fichier / | ||
+ | if $fromhost-ip == ' | ||
+ | # possible aussi de filtrer par bout d'IP | ||
+ | if $fromhost-ip startswith ' | ||
+ | # et c'est tout (on ne traite plus d' | ||
+ | & ~ | ||
+ | </ | ||
+ | * redémarrer le service | ||
+ | <code bash> | ||
+ | systemctl restart rsyslog | ||
+ | </ | ||
+ | |||
+ | Pour sécuriser un minimum, il faut compléter cela avec une règle iptables qui n' | ||
+ | <code bash> | ||
+ | iptables -A INPUT -p udp -s 192.168.2.1 --dport 514 -j ACCEPT | ||
+ | </ | ||
+ | |||
+ | ====Client distant==== | ||
+ | |||
+ | Pour envoyer les messages vers un serveur distant. | ||
+ | |||
+ | Structure : @[(zNUMBER)]HOST: | ||
+ | |||
+ | Exemple : sur le __client__ rsyslog distant, configurer le filtre suivant : | ||
+ | <code bash> | ||
+ | cat / | ||
+ | # Envoyer ces messages au syslog central | ||
+ | : | ||
+ | </ | ||
==== WRT54G(L) ==== | ==== WRT54G(L) ==== | ||
Line 109: | Line 205: | ||
Voilà donc où vont être redirigés ces damned messages de log. | Voilà donc où vont être redirigés ces damned messages de log. | ||
- | |||
- | ==== Mode DEBUG ==== | ||
- | |||
- | Pour lancer le démon syslog en mode DEBUG, il faut spécifier l' | ||
- | |||
- | vi / | ||
- | | ||
=====Syntaxe avancée===== | =====Syntaxe avancée===== | ||
Line 172: | Line 261: | ||
* http:// | * http:// | ||
+ | * https:// |
informatique/linux/syslog.1222949474.txt.gz · Last modified: 2013/10/14 20:54 (external edit)