informatique:linux:syslog
Differences
This shows you the differences between two versions of the page.
Next revision | Previous revision | ||
informatique:linux:syslog [2008/09/22 13:22] – créée 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, | ||
+ | | ||
+ | |||
+ | =====Diagnostique===== | ||
- | Exemple2 | + | 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===== | ||
- | 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' | + | =====Options |
- | Sous Debian on peut spécifier les options | + | |
- | # vi / | + | |
- | # | + | |
- | # For remote UDP logging use SYSLOGD=" | + | |
- | # | + | |
- | | + | |
- | Puis on le relance : | + | Se configure dans le fichier **/etc/default/ |
- | | + | <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="" | ||
+ | </ | ||
- | Vérification | + | =====Filtres===== |
- | | + | |
- | | + | ====Notation basée propriété==== |
+ | |||
+ | C'est une notation abrégée permettant d' | ||
+ | |||
+ | Structure | ||
+ | |||
+ | <code bash> | ||
+ | # property-based filter : | ||
+ | # | ||
+ | # 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 | ||
+ | :programname, | ||
+ | </ | ||
+ | |||
+ | |||
+ | ===== 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) ==== | ||
Avec certain équipement, | Avec certain équipement, | ||
Line 107: | Line 214: | ||
'' | '' | ||
+ | Pour reprendre l' | ||
+ | |||
+ | user.=warning | ||
+ | |||
+ | mais alors j' | ||
+ | |||
+ | # lui il récupère presque tout ! | ||
+ | *.*; | ||
+ | | ||
+ | # lui il récupère le facility user | ||
+ | user.* | ||
+ | | ||
+ | # lui je l'ai inventé pour l' | ||
+ | *.=warning | ||
+ | |||
+ | Et voici les modifications à leur apporter : | ||
+ | |||
+ | # maintenant il ne récupère plus le facility user (qui va déjà dans user.log de toute façon) | ||
+ | *.*;\ | ||
+ | | ||
+ | | ||
+ | # lui il récupère le facility user sauf la priorité warning | ||
+ | user.*; | ||
+ | | ||
+ | # lui je l'ai inventé pour l' | ||
+ | *.=warning; | ||
+ | |||
+ | Surtout, ne pas oublier de rediriger les flux de notre routeur ! | ||
+ | |||
+ | # | ||
+ | user.=warning | ||
+ | |||
+ | ====Log==== | ||
+ | On peut choisir la priorité syslog des journaux iptables (dans cet exemple, 4) : | ||
+ | iptables -t filter -A INPUT -j LOG --log-level=4 | ||
=====logger===== | =====logger===== | ||
Line 119: | Line 261: | ||
* http:// | * http:// | ||
+ | * https:// |
informatique/linux/syslog.1222089737.txt.gz · Last modified: 2013/10/14 20:54 (external edit)