Decoder : Commandes de Decoder pour la gestion des règles

Document created by RSA Information Design and Development Employee on Apr 28, 2019
Version 1Show Document
  • View in full screen mode
 

Dans la base de données NetWitness Core, l’arborescence de règles conserve les principales fonctionnalités associées à la gestion des règles pour tous les services Core qui possèdent des règles : Concentrators, Decoders, Log Decoders et Archivers. Bien qu’il soit possible de gérer les règles dans l’interface utilisateur NetWitness Platform, les utilisateurs avancés peuvent également gérer les règles à l’aide d’une ligne de commande pour ajouter, fusionner, remplacer, supprimer et valider les règles sur un service. Cette section fournit un bref tour d’horizon des commandes et de leur utilisation. Voici les commandes disponibles :

  • add : ajoute une règle unique à la position spécifiée.
  • clear : supprime toutes les règles existantes sur le nœud actuel du service. Par exemple, la commande utilisée dans le nœud /decoder/config/rules/application supprime toutes les règles d’application existantes sur le Decoder.
  • delete : supprime une ou plusieurs règles à une position et un nombre spécifiés.
  • merge : fusionne un ensemble de règles transmises avec un ensemble de règles existantes. Les règles existantes qui correspondent aux règles entrantes (par nom ou règle) sont remplacées ; dans le cas contraire, les règles sont insérées à la position indiquée, comme décrit dans Commande Merge.
  • replace : supprime toutes les règles existantes et les remplace par l’ensemble de règles entrantes.
  • validate : valide la syntaxe d’une règle, mais ne valide pas les clés méta.

Commande Add

La commande add ajoute la règle à l’ensemble de règles existantes. La mise en forme est importante car l’API utilise des guillemets doubles dans le langage de règles et utilise également des guillemets doubles en tant que paramètres pour toutes les API RSA NetWitness® Platform. Par conséquent, vous devez neutraliser les guillemets doubles dans la règle elle-même en les faisant précéder par une barre oblique inversée (\). Voici la syntaxe de la commande  :

add rule=<string> name=<string> alert=<string, optional> atPos=<<uint32, optional>

  • rule est la règle à ajouter. N’oubliez pas de placer des guillemets doubles autour des règles avec un espace et de neutraliser les guillemets doubles qui font partie de la règle avec une barre oblique inversée.
  • name est le nom de la règle.
  • alert est l’alerte pour la règle (le cas échéant).
  • atPos est la position à laquelle la règle doit être ajoutée (basée sur 1). Zéro correspond à la partie supérieure de la liste et n’importe quel nombre supérieur à la taille actuelle de la liste est ajouté à la liste.

Exemple de commande permettant d’ajouter une règle à l’aide de NwConsole
send /decoder/config/rules/application add rule="ip.src exists" order=1 alert=alert.id name=testrule

Par exemple, prenons la règle suivante :

alias.host = "myPC" && country.src="china","russian federation"

Pour ajouter cet élément comme règle, vous devez envoyer les paramètres suivants :

rule="alias.host = \"myPC\" && country.src=\"china\",\"russian federation\"" name=myRule filter

Remarquez comme tous les guillemets doubles ont été annulés au sein du paramètre d’une règle. Une astuce simple pour optimiser la lisibilité consiste à utiliser des guillemets simples au sein d’une règle. Les guillemets simples et doubles sont interchangeables dans la règle et le langage de la requête, mais pas dans les paramètres de l’API (où seuls les guillemets doubles sont pris en charge). Par conséquent, voici un exemple plus lisible :

rule="alias.host = 'myPC' && country.src='china','russian federation'" name=myRule filter

Commande Merge

La commande merge est utilisée pour fusionner une liste de règles entrantes avec des règles existantes dans le service. Son fonctionnement est le suivant :

  • Elle détecte des règles existantes qui correspondent via le nom ou une règle de correspondance, elle met à jour le nom de la règle existante et conserve la même position.
  • Elle insère les nouvelles règles dans la liste des règles en fonction de la position du NUMÉRO. Si le numéro est zéro, elle se place en haut de la liste.
  • Elle traite les règles dans l’ordre reçu, donc si vous disposez de deux règles qui portent le numéro zéro, la deuxième règle est traitée après la première et demande la première place. Toutes les règles existantes sont déplacées vers le bas de deux places. Tous les numéros supérieurs aux positions des règles existantes sont ajoutés après la dernière règle existante et numérotés dans l’ordre.
  • Toute règle non numérotée est ajoutée après la dernière règle existante et numérotée dans l’ordre.

Voici la syntaxe de la commande Merge :

merge --file-data=<string> --file-format<string>

  • file-data est le chemin complet et le nom du fichier de règles à fusionner.
  • file-format est le format du fichier de règles. Les valeurs valides sont params-list, string, params, binary et params-binary.

Méthodes d’envoi d’une liste de règles vers un service

Il existe deux façons d’envoyer la liste des règles. Vous pouvez l’envoyer sous forme de fichier .nwr (règle NetWitness) ou sous forme d’ensemble numéroté de paramètres, chaque nombre indiquant la position pour insérer la règle, ainsi que la règle codée. Si vous souhaitez voir la liste actuelle de règles sur un service, vous devez exécuter la commande ls sur la catégorie de la règle (par exemple, les règles d’application sur un Decoder se trouvent dans /decoder/config/rules/application).

Exemple de commandes permettant de répertorier les règles existantes à l’aide de NwConsole :

login <hostname>:50004 <username> <password>

cd /decoder/config/rules/application

ls

Autre exemple permettant de répertorier les règles existantes avec NwConsole :

send /decoder/config/rules/application ls

Exemple de la commande permettant de pointer vers les règles réseau dans le port RESTful qui prend en charge une application de base admin HTML.

http[s]://<decoder>:50104/decoder/config/rules/network

Envoyer un fichier de règles NetWitness

Commençons par un exemple de fichier nwr, chaque règle doit se trouver sur une ligne distincte :

rule="ip.src=192.168.0.1" name=first keep

rule="ip.src=192.168.1.1" name=second alert=risk.info

rule="ip.src=192.168.2.1" name=third filter

Pour transmettre et fusionner des règles à l’aide de NwConsole, utilisez les commandes suivantes :

login <hostname>:50004 <username> <password>

send /decoder/config/rules/application merge --file-data=/root/App_Rules.nwr --file-format=params-list

Pour remplacer les règles existantes avec les règles contenues dans le fichier, au lieu d’utiliser la commande merge, utilisez la commande replace.

send /decoder/config/rules/application replace --file-data=<pathname> --file-format=params-list

Pour fusionner les règles dans un fichier nwr en utilisant le port RESTful, vous pouvez utiliser la commande curl qui transmet les règles :

curl -u "<username>:<password>" -H "Content-Type: application/octet-stream" --data-binary @<pathname> -X POST "http://<hostname>:50104/decoder/config/rules/application?msg=merge"

Les exemples transmettent les règles d’application. Pour pousser les règles du réseau, envoyez les règles à /decoder/config/rules/network. Pour les règles de corrélation, envoyez les règles à /decoder/config/rules/correlation.

Envoyer des paramètres numérotés

L’autre méthode permettant d’envoyer une liste de règles consiste à les envoyer sous forme de paramètres numérotés. La difficulté de cette méthode réside dans le fait d’utiliser obligatoirement un caractère d’échappement avec les guillemets au sein de chaque règle numérotée. Cependant, cela ne représente un problème que si vous essayez de le faire à la main. Par exemple, pour envoyer les règles ci-dessus sous forme de paramètres via NwConsole, utilisez la commande suivante :

send /decoder/config/rules/application merge 1="rule=\"ip.src=192.168.0.1\" name=first keep" 2="rule=\"ip.src=192.168.1.1\" name=second alert=risk.info" 3="rule=\"ip.src=192.168.2.1\" name=third filter"

Cette commande est difficile à lire parce que vous devez utiliser la barre oblique inversée (\) comme caractère d’échappement pour les guillements internes. Dans le cas contraire, ces deux commandes ont le même résultat. Fusion ou ajout de trois règles aux positions 1, 2 et 3. Si vous pensez que cela manque de lisibilité, voici à quoi ressemble la commande curl  :

curl -u "<username>:<password>" "http://<hostname>:50104/decoder/config/rules/application?msg=merge&1=rule%3D%22ip.src%3D192.168.0.1%22%20name%3Dfirst%20keep&2=rule%3D%22ip.src%3D192.168.1.1%22%20name%3Dsecond%20alert%3Drisk.info&3=rule%3D%22ip.src%3D192.168.2.1%22%20name%3Dthird%20filter"

Pour plus d’informations sur la façon de neutraliser les guillemets doubles à l’intérieur des paramètres, reportez-vous à la section Commande Add.

Règles de tri applicables lors de la transmission

Les règles transmises sont triées de l’une des deux manières suivantes. Lors du passage sous forme de paramètres, le numéro de chaque paramètre détermine l’ordre d’insertion. Sans véritable numéro, merge vérifie le paramètre order au sein de la règle elle-même et utilise cette valeur si elle s’y trouve.

Remarque : L’utilisation de order est le seul moyen de définir l’ordre dans un fichier .nwr. Si aucun nombre ou paramètre order n’est trouvé, il n’existe aucune garantie sur l’ordre d’insertion.

Exemple

Decoder dispose toujours des règles d’application suivantes installés. Notez que la numérotation est TOUJOURS consécutive et commence à 1 :

0001 : rule="ip.src = 192.168.0.1 || ip.dst = 192.168.0.1 || alias.host = 'My-PC'" name=first keep

0002 : rule="ip.src=192.168.1.1" name=second alert=risk.info

0003 : rule="ip.src=192.168.2.1" name=third filter

Et vous souhaitez fusionner les quatre règles suivantes :

rule="ip.src=192.168.3.1" name=third keep

rule="ip.dst=192.168.4.1" name=NewRule filter order=0

rule="alias.host = 'pc1','pc2'" name=filterTheseNames filter order=append

rule="service=80,443" name=web filter order=3

Utilisez n’importe quelle méthode pour transmettre vos règles et voici le résultat :

0001 : rule="ip.dst=192.168.4.1" name=NewRule filter order=1

0002 : rule="ip.src = 192.168.0.1 || ip.dst = 192.168.0.1 || alias.host = 'My-PC'" name=first keep order=2

0003 : rule="service=80,443" name=web filter order=3

0004 : rule="ip.src=192.168.1.1" name=second alert=risk.info order=4

0005 : rule="ip.src=192.168.3.1" name=third keep order=5

0006 : rule="alias.host = 'pc1','pc2'" name=filterTheseNames filter order=6

Des surprises ? Voici le traitement qui a été réservé à chaque règle.

1. rule="ip.src=192.168.3.1" name=third keep

Cette règle présente le même nom qu’une règle existante sur le Decoder (troisième). Ainsi, la règle a mis à jour la règle existante, changing _filter_ to _keep_.

2. rule="ip.dst=192.168.4.1" name=NewRule filter order=0

Cette règle est nouvelle et comporte order=0, ce qui implique une insertion tout en haut.

3. rule="alias.host = 'pc1','pc2'" name=filterTheseNames filter order=append

Cette règle comporte un append non numérique pour order. Par conséquent, elle est passée à la fin de la liste. Vous pouvez obtenir le même résultat en donnant un nombre très élevé, comme 999999.

Cette règle est la dernière mais elle comporte order=3, par conséquent, si elle ne correspond pas à une règle existante par le nom ou le texte de la règle lui-même, elle doit être placée dans la position 3. Et voici la troisième règle de la liste. Toutes les règles suivantes ont été transférées plus bas.

Commande Replace

La commande replace supprime toutes les règles existantes et les remplace par la liste de règles entrantes. Reportez-vous à la section Commande Merge pour obtenir plus d’informations sur la façon de mettre en forme la liste de règles entrantes et sur le fonctionnement du tri.

Voici un exemple de la commande replace utilisant un fichier de règles NetWitness :

send /decoder/config/rules/application replace --file-data=/root/Decoder-AppRules.nwr --file-format=string

Voici un exemple de la commande replace utilisant les paramètres numérotés :

send /decoder/config/rules/application replace 1="rule=\"ip.src exists\" name=\"test rule\" order=1 alert=alert.id"

Commande Clear

La commande clear supprime toutes les règles existantes sur le service. Voici un exemple de la commande :

send /decoder/config/rules/application clear

Commande Delete

La commande delete supprime une ou plusieurs règles sur le service.

delete atPos <uint32> count <uint32, optional>

  • atPos supprime la règle à la position donnée. Les règles sont numérotées à partir de 1 et dans un ordre séquentiel.
  • count supprime une ou plusieurs règles en commençant par atPos. Il s’agit d’un paramètre facultatif qui définit le nombre de règles à supprimer en commençant par atPos. La valeur par défaut est 1.

Cet exemple de la commande supprime les quatre règles commençant à la position 0003 :

send /decoder/config/rules/application delete atPos=0003 count=4

Commande Validate

La commande validate prend la règle fournie et vérifie qu’elle est correctement analysée. N’oubliez pas que cette commande ne peut pas vérifier si les clés de langue et les entités sont valides.

validate rule <string>

rule est le nom de la règle de validation. Veillez à placer des guillemets doubles autour des règles avec un espace.

You are here
Table of Contents > Configurer les règles de Decoder > Commandes de Decoder pour la gestion des règles

Attachments

    Outcomes