OSSEC : filtrage de regles

OSSEC : filtrage de regles jpp

Il arrive que certains messages pourtant "normaux" de votre système encombrent inutilement les mails envoyés par OSSEC. 
Certains logiciels laissent des traces dans les logs systèmes et OSSEC repère ces "anomalies", il est particulièrement sensible à certains mots "failed", "error" ... 
Si une de vos applications génère de tels messages il faut installer un filtre secondaire permettant d'éliminer ces "fausses alertes". 
Il faut alors récupérer le numéro de la règle offensée dans le message (la 1002 est particulièrement sensible) et créer une règle dépendante éliminant le cas gênant. 
Le fichier "local_rules.xml" est destiné à cet effet. 
Par exemple : 
Xen me génère régulièrement des messages "this function is not supported by the hypervisor: virConnectNumOfInterfaces" et c'est encore la règle 1002 qui repère ce truc. 
Il suffit d'ajouter dans le fichier local : 
  <rule id="101117" level="0"> 
    <if_sid>1002</if_sid> 
    <match>this function is not supported by the hypervisor: virConnectNumOfInterfaces</match> 
    <description>erreurs</description> 
  </rule> 
Il faut donner :

  • Un numéro à votre règle ( > 100000), ici 101117 et un niveau d'erreur. Un niveau à zéro annule la condition d'erreur <balise <rule...>. On pourrait aussi rendre une erreur plus grave en augmentant son LEVEL.
  • La règle offensée (ici la fameuse règle 1002) balise <if_sid>
  • Le texte du message, avec les blancs (je ne suis pas un spécialiste des expressions régulières ...)
  • Une description et c'est fini.

Un petit restart de OSSEC et le message ennuyeux s'évanouit ! 

Pour des messages plus complexes, comportant par exemple des parties variables il faut enchaîner deux règles dépendantes : 
  <rule id="101110" level="0"> 
    <if_sid>5104</if_sid> 
    <match>device tap</match> 
    <description>erreurs</description> 
  </rule> 
  <rule id="101111" level="0"> 
    <if_sid>101110</if_sid> 
    <match>entered promiscuous mode</match> 
    <description>erreurs</description> 
  </rule> 
Le message a intercepter comportait une partie variable : le numéro de "tap" concerné, rappel : je ne suis pas un spécialiste des expressions régulières ...). 
Bon filtrage ...