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)
                
                