User Tools

Site Tools


informatique:linux:syslog

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Next revision
Previous revision
Last revisionBoth sides next revision
informatique:linux:syslog [2008/09/22 13:22] – créée pteuinformatique:linux:syslog [2020/01/23 09:03] – Diagnostique et debug pteu
Line 61: Line 61:
 Exemple2 : ''*.debug;mail,news.none'' indique que l'on logge tous les messages de débogage, sauf ceux venant des services mail et news. Exemple2 : ''*.debug;mail,news.none'' indique que l'on logge tous les messages de débogage, sauf ceux venant des services mail et news.
  
 +====Diagnostique====
 +
 +On peut vérifier la configuration avec la commande :
 +<code bash>
 +rsyslogd -N1
 +</code>
 +
 +Pour lancer le démon syslog en mode DEBUG, il faut spécifier l'option ''-d'' :
 +<code bash>
 +vi /etc/default/syslogd
 + SYSLOGD="-d"
 +</code>
  
 =====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'option %%-r%%. +==== Syslog centralisé ====
-Sous Debian on peut spécifier les options de lancement du démon en modifiant la variable ''SYSLOGD'' dans ''/etc/default/syslogd'' (qui est utilisé par le script de lancement ''/etc/init.d/sysklogd'') : +
-  # vi /etc/default/syslogd +
-   # +
-   # For remote UDP logging use SYSLOGD="-r" +
-   # +
-   SYSLOGD="-r"+
  
-Puis on le relance : +Lorsqu'on a un parc qui grossi il devient très utile de centraliser les logs des différents équipements sur une seule machineC'est possible en configurant syslog pour qu'il accepte les messages venant du réseau.
-  /etc/init.d/sysklogd restart +
-  Restarting system log daemon....+
  
-Vérification +Depuis Debian 8, pour activer la gestion des logs par le réseau il faut 
-  ps -ef | grep syslogd +  * décommenter les 2 lignes suivantes dans ''/etc/rsyslog.conf''
-  root     14634     1  0 23:08 ?        00:00:00 /sbin/syslogd -r+<code bash> 
 +# provides UDP syslog reception 
 +$ModLoad imudp 
 +$UDPServerRun 514 
 +</code> 
 +  * créer un fichier dans ''/etc/rsyslog.d/'' , par exemple ''test.conf'' et y définir où stocker les logs que l'on va recevoir : 
 +<code bash> 
 +# les logs provenant de l'IP 192.168.2.seront envoyés dans le fichier /var/log/test.log 
 +if $fromhost-ip == '192.168.2.1' then /var/log/test.log 
 +# possible aussi de filtrer par bout d'IP 
 +if $fromhost-ip startswith '192.168.2.' then /var/log/test.log 
 +# et c'est tout (on ne traite plus d'autres règles pour ces logs) 
 +& ~ 
 +</code> 
 +  * redémarrer le service 
 +<code bash> 
 +systemctl restart rsyslog 
 +</code> 
 + 
 +Pour sécuriser un minimum, il faut compléter cela avec une règle iptables qui n'accepte les sockets udp/514 que depuis notre machine : 
 +<code bash> 
 +iptables -A INPUT -p udp -s 192.168.2.1 --dport 514 -j ACCEPT 
 +</code> 
 + 
 +=== Exemples de filtres === 
 + 
 +<code bash> 
 +# compare-operation : 
 +#       contains | isequal | startswith | regex | ereregex | isempty 
 +# property-based filter : 
 +#       msg | hostname | programname | etc... 
 +# cible : 
 +#       prefixée par "-" pour écrire en asynchrone 
 + 
 +
 +# notation abrégée 
 +
 +:msg, contains, "iptables " -/var/log/iptables/iptables.log 
 +& ~ 
 +:msg, regex, "^\[ *[0-9]*\.[0-9]*\] iptables" -/var/log/iptables/iptables.log 
 +& ~ 
 + 
 +
 +# notation plus verbeuse (avec un "if"
 +
 +if $msg regex '^\[ *[0-9]*\.[0-9]*\] iptables' then /var/log/iptables/iptables.log 
 +& ~ 
 + 
 +
 +# utilisation d'un template 
 +
 +# création du template "Openvpn" pour l'emplacement des logs openvpn 
 +$template OpenVPN,"/var/log/openvpn/ovpn.log" 
 +# on y tansfère tous les messages issus des processus dont le nom commence par "ovpn-" 
 +:programname, startswith, "ovpn-" -?OpenVPN 
 +# puis on arrête le traitement de ces messages pour éviter les doublons 
 +:programname, startswith, "ovpn-"
 +</code> 
 + 
 +==== WRT54G(L) ====
  
 Avec certain équipement, comme un routeur Linksys WRT54G, on ne connait pas forcément le facility des messages envoyés, donc on ne sais pas comment les récupérer. Ca se vérifie avec **tcpdump** : Avec certain équipement, comme un routeur Linksys WRT54G, on ne connait pas forcément le facility des messages envoyés, donc on ne sais pas comment les récupérer. Ca se vérifie avec **tcpdump** :
Line 107: Line 170:
 ''mail.!info'' désigne les messages dont la priorité est strictement inférieure à info. ''mail.!info'' désigne les messages dont la priorité est strictement inférieure à info.
  
 +Pour reprendre l'exemple des log du routeur odin, je veux les isoler dans un fichier spécial : ''odin_iptables.log''. Je pourrais me contenter d'ajouter la ligne suivante à la conf de mon syslogd :
 +
 +  user.=warning  -/var/log/odin_iptables.log
 +
 +mais alors j'aurai de la redondance dans mes logs : en effet l'information sera également placer dans tous les autres fichiers de log qui matchent le facility "user" ou la priorité "warning". Sachant que, comme on le devine facilement, mon routeur est un firewall, il va émettre un tas de données que je ne veux surtout pas concerver en double, triple, voir plus. Il faut donc parser la conf du syslog, repérer les règles qui matchent, et leur dire de ne plus matcher :) (non, je n'aime pas la redondance !). Voici les dites lignes :
 +
 +  # lui il récupère presque tout !
 +  *.*;auth,authpriv.none  -/var/log/syslog
 +  
 +  # lui il récupère le facility user
 +  user.*                  -/var/log/user.log
 +  
 +  # lui je l'ai inventé pour l'exemple (il n'existe pas par défaut) : il récupère tous les warnings
 +  *.=warning              -/var/log/careful.log
 +
 +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)
 +  *.*;\
 +   auth,authpriv,user.none  -/var/log/syslog
 +  
 +  # lui il récupère le facility user sauf la priorité warning
 +  user.*;user.!=warning     -/var/log/user.log
 +  
 +  # lui je l'ai inventé pour l'exemple (il n'existe pas par défaut) : il récupère tous les warnings sauf le facility user
 +  *.=warning;user.none      -/var/log/careful.log
 +
 +Surtout, ne pas oublier de rediriger les flux de notre routeur !
 +
 +  #récupération des logs de mon routeur
 +  user.=warning   -/var/log/odin_iptables.log
 +
 +====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 217:
  
   * http://okki666.free.fr/docmaster/articles/linux068.htm   * http://okki666.free.fr/docmaster/articles/linux068.htm
 +  * https://www.rsyslog.com/doc/v8-stable/rainerscript/expressions.html
informatique/linux/syslog.txt · Last modified: 2020/09/14 08:50 by pteu