Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Prochaine révision
Révision précédente
sysadmin:tips:logcheck [2014/10/21 11:10]
james créée
sysadmin:tips:logcheck [2015/08/06 11:01] (Version actuelle)
james [burp-backup] nouvelles regles
Ligne 4: Ligne 4:
  
 La ou bât blesse c'est qu'il arrive que certaines règles ne suffisent pas (ou les logs générés par les différents services changent de format). La ou bât blesse c'est qu'il arrive que certaines règles ne suffisent pas (ou les logs générés par les différents services changent de format).
 +
 +===== Deja comment tester une regle =====
 +
 +Pour tester une règle qui est une regexp on peut utiliser la commande grep, comme par exemple avec une règle pour postfix (donc sur le fichier /​var/​log/​mail.log) : les lignes affichées ici seront ignorées par logcheck :<​code>​egrep "​^\w{3} [ :​[:​digit:​]]{11} [._[:​alnum:​]-]+ postfix/​smtpd\[[[:​digit:​]]+\]:​ (dis)?​connect from [^[:​space:​]]+$"​ /​var/​log/​syslog</​code>​
 +
 +Un autre moyen est de lancer un dryrun de logcheck sur un fichier particulier (ici /​var/​log/​syslog),​ pour se faire : <​code>​
 +su logcheck -s /bin/bash -c "/​usr/​sbin/​logcheck -l /​var/​log/​syslog -o -t"</​code>​
 +
 +===== Ajouter des regles =====
 +Pour ajouter des regles (en fonction du role défini, mais par défaut "​server"​),​ cela se passe dans le fichier "/​etc/​logcheck/​ignore.d.server/​$SERVICE"​ en remplaçant $SERVICE par le nom du service
 +<​note>​Ce nommage en accord avec le service n'est en rien obligatoire mais il permet de retrouver ses petits</​note> ​
 +
 +Le conseil du chef est de ne pas modifier les règles existantes mais d'​ajouter les vôtres à un endroit simple pour gérer les futures mises a jour, par exemple ... la fin du fichier :-)
  
 Voici donc quelques règles que j'​utilise en plus de celles par défaut : Voici donc quelques règles que j'​utilise en plus de celles par défaut :
  
-===== snmpd =====+==== snmpd ====
 {{tag>​logcheck sysadmin tips debian wheezy ipv6 snmp snmpd}} {{tag>​logcheck sysadmin tips debian wheezy ipv6 snmp snmpd}}
 pour gérer correctement l'ipv6 : ajouter dans le fichier /​etc/​logcheck/​ignore.d.server/​snmpd :<​code>​ pour gérer correctement l'ipv6 : ajouter dans le fichier /​etc/​logcheck/​ignore.d.server/​snmpd :<​code>​
Ligne 13: Ligne 26:
 pour matcher les règles similaires à : <​code>​Oct 21 09:05:02 cerbere snmpd[11878]:​ Connection from UDP/IPv6: [2607:​f0d0:​1002:​51::​4]:​59407</​code>​ pour matcher les règles similaires à : <​code>​Oct 21 09:05:02 cerbere snmpd[11878]:​ Connection from UDP/IPv6: [2607:​f0d0:​1002:​51::​4]:​59407</​code>​
  
-===== bind =====+==== bind ====
 {{tag>​logcheck sysadmin tips debian wheezy bind}} {{tag>​logcheck sysadmin tips debian wheezy bind}}
 pour gérer correctement certains messages : ajouter dans le fichier /​etc/​logcheck/​ignore.d.server/​bind :<​code>​ pour gérer correctement certains messages : ajouter dans le fichier /​etc/​logcheck/​ignore.d.server/​bind :<​code>​
Ligne 19: Ligne 32:
 ^\w{3} [ :0-9]{11} [._[:​alnum:​]-]+ named\[[0-9]+\]:​ (general: )?(info: )?dumpstats complete$</​code>​ ^\w{3} [ :0-9]{11} [._[:​alnum:​]-]+ named\[[0-9]+\]:​ (general: )?(info: )?dumpstats complete$</​code>​
  
-===== openvpn ​=====+==== openvpn ====
 {{tag>​logcheck sysadmin tips debian wheezy openvpn}} {{tag>​logcheck sysadmin tips debian wheezy openvpn}}
-pour gérer correctement certains messages : ajouter dans le fichier /​etc/​logcheck/​ignore.d.server/​openvpn :<​code>​ +pour gérer correctement certains messages : ajouter dans le fichier /​etc/​logcheck/​ignore.d.server/​openvpn ​
-^\w{3} [ :​[:​digit:​]]{11} [._[:​alnum:​]-]+ (openvpn|ovpn-[._[:​alnum:​]-]+)\[[[:​digit:​]]+\]:​( ([-_.@[:​alnum:​]]+/​)?​[.[:​digit:​]]{7,​15}:​[[:​digit:​]]{2,​5})?​ CRL CHECK OK:.*$+  * CRL CHECK :<​code>​ 
 +^\w{3} [ :​[:​digit:​]]{11} [._[:​alnum:​]-]+ (openvpn|ovpn-[._[:​alnum:​]-]+)\[[[:​digit:​]]+\]:​( ([-_.@[:​alnum:​]]+/​)?​[.[:​digit:​]]{7,​15}:​[[:​digit:​]]{2,​5})?​ CRL CHECK OK:.*$</​code>​ 
 +  * ajout de [AF_INET] devant les IP :<​code>​ 
 +^\w{3} [ :​[:​digit:​]]{11} [._[:​alnum:​]-]+ (openvpn|ovpn-[._[:​alnum:​]-]+)\[[[:​digit:​]]+\]:​(( ([-_.@[:​alnum:​]]+/​)?​[.[:​digit:​]]{7,​15}:​[[:​digit:​]]{2,​5})?​( \[[-._[:​alnum:​]]+\])?​)?​ Peer Connection Initiated with (\[AF_INET\])?​[[:​digit:​].]{7,​15}:​[[:​digit:​]]+$ 
 +^\w{3} [ :​[:​digit:​]]{11} [._[:​alnum:​]-]+ (openvpn|ovpn-[._[:​alnum:​]-]+)\[[[:​digit:​]]+\]:​( ([-_.@[:​alnum:​]]+/​)?​[.[:​digit:​]]{7,​15}:​[[:​digit:​]]{2,​5})?​ TLS: Initial packet from (\[AF_INET\])?​[.[:​digit:​]]{7,​15}:​[[:​digit:​]]+,​ sid=[[:​xdigit:​]]{8} [[:​xdigit:​]]{8}$
 </​code>​ </​code>​
 +{{tag>​logcheck sysadmin tips debian jessie openvpn}}
 +  * VERIFY OK debian jessie :<​code>​
 +^\w{3} [ :​[:​digit:​]]{11} [._[:​alnum:​]-]+ (openvpn|ovpn-[._[:​alnum:​]-]+)\[[[:​digit:​]]+\]:​( ([-_.@[:​alnum:​]]+/​)?​[.[:​digit:​]]{7,​15}:​[[:​digit:​]]{2,​5})?​ VERIFY (SCRIPT )?OK: depth=[[:​digit:​]]+,​ (/​|C=)[-:​_./​=@[:​alnum:​],​ ]+$</​code>​
  
-===== amavisd-new ​=====+==== amavisd-new ====
 {{tag>​logcheck sysadmin tips debian wheezy amavisd-new amavis}} {{tag>​logcheck sysadmin tips debian wheezy amavisd-new amavis}}
-pour gérer correctement certains messages : ajouter dans le fichier /​etc/​logcheck/​ignore.d.server/​openvpn ​:<​code>​+pour gérer correctement certains messages : ajouter dans le fichier /​etc/​logcheck/​ignore.d.server/​amavisd-new ​:<​code>​
 ^\w{3} [ :​[:​digit:​]]{11} [._[:​alnum:​]-]+ amavis\[[[:​digit:​]]+\]:​ \([-[:​digit:​]]+\) Passed (CLEAN|SPAM(MY)?​)( {RelayedInbound})?,​( LOCAL)?( \[(IPv6:​)?​[[:​xdigit:​].:​]{3,​39}\](:​[[:​xdigit:​]]{0,​5})?​){0,​2} <​[^>​]*>​ -> <​[^>​]*>​(,<​[^>​]*>​)*,​( quarantine: ([[:​alnum:​]]/​)?​spam-[-+[:​alnum:​]]+(\.gz)?,​)?​( Queue-ID: [[:​xdigit:​]]*,​)?​( Message-ID: <​[^>​]+>​( \((added by[^)]+|sfid-[_[:​xdigit:​]]+)\))?,​)?​( Resent-Message-ID:​ <​[^>​]+>,​)?​ mail_id: [-+_[:​alnum:​]]+,​ Hits: (-?​[.[:​digit:​]]*)+,​ size: [[:​xdigit:​]]+,​ queued_as: [[:​xdigit:​]]+( OK id=[-[:​alnum:​]]+)?,​ [[:​digit:​]]+ ms$</​code>​pour gérer les messages type <​code>​ ^\w{3} [ :​[:​digit:​]]{11} [._[:​alnum:​]-]+ amavis\[[[:​digit:​]]+\]:​ \([-[:​digit:​]]+\) Passed (CLEAN|SPAM(MY)?​)( {RelayedInbound})?,​( LOCAL)?( \[(IPv6:​)?​[[:​xdigit:​].:​]{3,​39}\](:​[[:​xdigit:​]]{0,​5})?​){0,​2} <​[^>​]*>​ -> <​[^>​]*>​(,<​[^>​]*>​)*,​( quarantine: ([[:​alnum:​]]/​)?​spam-[-+[:​alnum:​]]+(\.gz)?,​)?​( Queue-ID: [[:​xdigit:​]]*,​)?​( Message-ID: <​[^>​]+>​( \((added by[^)]+|sfid-[_[:​xdigit:​]]+)\))?,​)?​( Resent-Message-ID:​ <​[^>​]+>,​)?​ mail_id: [-+_[:​alnum:​]]+,​ Hits: (-?​[.[:​digit:​]]*)+,​ size: [[:​xdigit:​]]+,​ queued_as: [[:​xdigit:​]]+( OK id=[-[:​alnum:​]]+)?,​ [[:​digit:​]]+ ms$</​code>​pour gérer les messages type <​code>​
 Oct 16 22:51:57 mailserver amavis[32039]:​ (32039-11) Passed CLEAN {RelayedInbound},​ [10.0.0.1]:​39213 [10.0.0.1] <​root@domain.com>​ -> <​root@domain.com>,​ Queue-ID: 8589710013F,​ Message-ID: <​20141016205157.1B85842A6@mailserver.domain.com>,​ mail_id: DpzmaAs5yyiC,​Hits:​ 4.799, size: 786, queued_as: B5161100158,​ 140 ms</​code>​ Oct 16 22:51:57 mailserver amavis[32039]:​ (32039-11) Passed CLEAN {RelayedInbound},​ [10.0.0.1]:​39213 [10.0.0.1] <​root@domain.com>​ -> <​root@domain.com>,​ Queue-ID: 8589710013F,​ Message-ID: <​20141016205157.1B85842A6@mailserver.domain.com>,​ mail_id: DpzmaAs5yyiC,​Hits:​ 4.799, size: 786, queued_as: B5161100158,​ 140 ms</​code>​
 ou "​[ADRESSE_IP]:​PORT [ADRESSE_IP]"​ ne sont pas filtrés par défaut. De plus il peut y avoir des "​_"​ dans le champs mail_id ajoutés dans cette règle. ou "​[ADRESSE_IP]:​PORT [ADRESSE_IP]"​ ne sont pas filtrés par défaut. De plus il peut y avoir des "​_"​ dans le champs mail_id ajoutés dans cette règle.
 +==== burp-backup ====
 +{{tag>​logcheck sysadmin tips debian jessie burp backup sauvegarde}}
 +Pour [[http://​burp.grke.org/​|BURP]],​ un super logiciel de backup qui supporte aussi (tres bien) les clients windows en plus des linux, ici installé sur une debian jessie :<​code>​
 +^\w{3} [ :​[:​digit:​]]{11} [._[:​alnum:​]-]+ burp\[[[:​digit:​]]+\]:​ auth ok for: [[:​alnum:​]]+$
 +^\w{3} [ :​[:​digit:​]]{11} [._[:​alnum:​]-]+ burp\[[[:​digit:​]]+\]:​ Client [[:​alnum:​]]+ does not want a certificate signed$
 +^\w{3} [ :​[:​digit:​]]{11} [._[:​alnum:​]-]+ burp\[[[:​digit:​]]+\]:​ Client uses TLSv1/SSLv3 (-|[[:​alnum:​]])+$
 +^\w{3} [ :​[:​digit:​]]{11} [._[:​alnum:​]-]+ burp\[[[:​digit:​]]+\]:​ Client supports being sent counters.$
 +^\w{3} [ :​[:​digit:​]]{11} [._[:​alnum:​]-]+ burp\[[[:​digit:​]]+\]:​ in do_backup_server$
 +^\w{3} [ :​[:​digit:​]]{11} [._[:​alnum:​]-]+ burp\[[[:​digit:​]]+\]:​ Do a backup of [[:​alnum:​]]+ now.$
 +^\w{3} [ :​[:​digit:​]]{11} [._[:​alnum:​]-]+ burp\[[[:​digit:​]]+\]:​ Running backup of [[:​alnum:​]]+$
 +^\w{3} [ :​[:​digit:​]]{11} [._[:​alnum:​]-]+ burp\[[[:​digit:​]]+\]:​ Running timer script: [[:​alnum:​]]+ .*$
 +^\w{3} [ :​[:​digit:​]]{11} [._[:​alnum:​]-]+ burp\[[[:​digit:​]]+\]:​ (Out of|In) timeband: .*$
 +^\w{3} [ :​[:​digit:​]]{11} [._[:​alnum:​]-]+ burp\[[[:​digit:​]]+\]:​ (Last backup|Next after ): ([[:​digit:​]]|-)+ ([[:​digit:​]]|:​)+( \(interval [[:​digit:​]]+h\))?​$
 +^\w{3} [ :​[:​digit:​]]{11} [._[:​alnum:​]-]+ burp\[[[:​digit:​]]+\]:​ (Not yet time for a backup of|Not running backup of) [[:​alnum:​]]+$
 +^\w{3} [ :​[:​digit:​]]{11} [._[:​alnum:​]-]+ burp\[[[:​digit:​]]+\]:​ (/​etc/​burp/​timer_script returned: (0|1)|exit child)$
 +^\w{3} [ :​[:​digit:​]]{11} [._[:​alnum:​]-]+ burp\[[[:​digit:​]]+\]:​ forked( status server)? child pid [[:​digit:​]]+$
 +^\w{3} [ :​[:​digit:​]]{11} [._[:​alnum:​]-]+ burp\[[[:​digit:​]]+\]:​ deleting [[:​alnum:​]]+ backup [[:​digit:​]]+$
 +^\w{3} [ :​[:​digit:​]]{11} [._[:​alnum:​]-]+ burp\[[[:​digit:​]]+\]:​ exit(ing| status server)$
 +^\w{3} [ :​[:​digit:​]]{11} [._[:​alnum:​]-]+ burp\[[[:​digit:​]]+\]:​ (Logging to|Compressing) /​[[:​alnum:​]/​]+([[:​digit:​][:​space:​]:​-]+)?/​log( to /​[[:​alnum:​]/​]+log.gz...)?​$
 +^\w{3} [ :​[:​digit:​]]{11} [._[:​alnum:​]-]+ burp\[[[:​digit:​]]+\]:​ [[:​digit:​]-]+ [[:​digit:​]:​]+ < [[:​digit:​]-]+ [[:​digit:​]:​]+.$
 +</​code>​
 +
 +==== Si comme moi vous utilisez des log custom ====
 +
 +=== postfix ===
 +J'​utilise des logs custom dans postfix car cela permet de tracer plus simplement les connexions d'ou proviennent les mails, et parce que c'est simple de le faire : voici un extrait de mon /​etc/​postfixmaster.cf :<​code>​
 +....
 +submission inet n       ​- ​      ​- ​      ​- ​      ​- ​      smtpd
 +  -o smtpd_tls_security_level=encrypt
 +  -o smtpd_sasl_auth_enable=yes
 +  -o smtpd_client_restrictions=permit_sasl_authenticated,​reject
 +  -o milter_macro_daemon_name=ORIGINATING
 +  -o syslog_name=postfix/​submission
 +smtps     ​inet ​ n       ​- ​      ​- ​      ​- ​      ​- ​      smtpd
 +  -o smtpd_tls_wrappermode=yes
 +  -o smtpd_sasl_auth_enable=yes
 +  -o smtpd_client_restrictions=permit_sasl_authenticated,​reject
 +  -o milter_macro_daemon_name=ORIGINATING
 +  -o syslog_name=postfix/​smtps
 +....
 +</​code>​ ou on peut voir que **syslog_name** ont été changé de leur valeur par defaut "​postfix"​ pour devenir "​postfix/​submission"​ ou "​postfix/​smtps"​ respectivement pour les connexions originaires du port submission ou encore établies en smtps (SSL).
 +Le problème de cette conf est que les règles logcheck d'​origine ne matchent plus les logs obtenus : on va donc changer ca.
 +
 +Pour rechercher les règles "​connect from" en place par défaut :
 +<​code>#​ grep connect /​etc/​logcheck/​ignore.d.server/​postfix | grep from</​code>​
 +qui devrait vous montrer quelques lignes dont une intéressante qui va servir de base pour notre règle custom :<​code>​
 +^\w{3} [ :​[:​digit:​]]{11} [._[:​alnum:​]-]+ postfix/​smtpd\[[[:​digit:​]]+\]:​ (dis)?​connect from [^[:​space:​]]+$</​code>​
 +on va donc ajouter la présence optionnelle de "​submission/"​ ou "​smtps/"​ entre "​postfix/"​ et "​smtpd",​ ce qui nous donne la ligne : <​code>​^\w{3} [ :​[:​digit:​]]{11} [._[:​alnum:​]-]+ postfix/​(submission/​|smtps/​)?​smtpd\[[[:​digit:​]]+\]:​ (dis)?​connect from [^[:​space:​]]+$</​code>​
 +On valide cette règle avec un coup de <​code>​egrep -e "​^\w{3} [ :​[:​digit:​]]{11} [._[:​alnum:​]-]+ postfix/​(submission/​|smtps/​)?​smtpd\[[[:​digit:​]]+\]:​ (dis)?​connect from [^[:​space:​]]+$"​ /​var/​log/​syslog | grep smtps</​code>​ et si on obtient bien les resultats a filtrer on peut ajouter ce filtre au fichier "/​etc/​logcheck/​ignore.d.server/​postfix"​.
 +
 +Autre règle a rajouter : <​code>​^\w{3} [ :​[:​digit:​]]{11} [._[:​alnum:​]-]+ postfix/​(submission/​|smtps/​)?​smtpd\[[[:​digit:​]]+\]:​ [[:​alnum:​]]+:​ client=[^[:​space:​]]+,​ sasl_method=[-[:​alnum:​]]+,​ sasl_username=[-_.@[:​alnum:​]]+$</​code>​
 +
 +===== Le monitoring a une facheuse tendance à faire des faux positifs =====
 +exemple de log obtenu (adapter à vos IPs de serveurs de monitoring 2607:​f0d0:​1002:​51::​1 et serveur dovecot 2607:​f0d0:​1002:​51::​2,​ mais vous ne voulez **pas** mettre ici des "​[.:​[:​xdigit:​]]+"​ pour ne pas cacher de vrais problèmes éventuels) :
 +<​code>​
 +# Oct 21 09:05:02 monserveur dovecot: imap-login: Aborted login (no auth attempts in 1 secs): user=<>,​ rip=2607:​f0d0:​1002:​51::​1,​ lip=2607:​f0d0:​1002:​51::​2,​ TLS, session=<​2DV5XVTN0gAqAQ41i0SEwAAAAAAAAAAC></​code>​
 +et sa règle correspondante :<​code>​
 +^\w{3} [ :​[:​digit:​]]{11} [._[:​alnum:​]-]+ dovecot: (pop3|imap)-login:​ Aborted login( \([[:​digit:​]]+ authentication attempts\)| \(no auth attempts in [[:​digit:​]]+ secs\))?: (user=<​[-_.@[:​alnum:​]]+>,​ method=[[:​alnum:​]-]+,​ |user=<>,​ )?​rip=2607:​f0d0:​1002:​51::​1,​ lip=2607:​f0d0:​1002:​51::​2(,​ (TLS( handshake)?​|secured))?​(,​ session=<​[[:​alnum:​]/​\+]+>​)?​$</​code>​
  
sysadmin/tips/logcheck.1413882653.txt.gz · Dernière modification: 2014/10/21 11:10 par james
Driven by DokuWiki Recent changes RSS feed Valid CSS Valid XHTML 1.0