Decoder: Decoder-Befehle für die Verwaltung von Regeln

Document created by RSA Information Design and Development on May 9, 2018
Version 1Show Document
  • View in full screen mode
 

In der NetWitness Core-Datenbank enthält die Regelstruktur die wichtigsten Funktionen für die Verwaltung von Regeln, und zwar für alle Core-Services, die über Regeln verfügen: Concentrator, Decoder, Log Decoder und Archiver. Regeln können in der NetWitness Suite-Benutzeroberfläche verwaltet werden, aber fortgeschrittene Benutzer können die Regeln eines Service auch über eine Befehlszeile hinzufügen, zusammenführen, ersetzen, löschen und validieren. Dieser Abschnitt enthält eine kurze Übersicht über die Befehle und ihre Nutzung. Dies sind die verfügbaren Befehle:

  • add: Fügt eine Regel an der angegebenen Position ein.
  • clear: Löscht alle vorhandenen Regeln im aktuellen Node des Service. Bei Verwendung des Befehls im Node /decoder/config/rules/application werden beispielsweise alle vorhandenen Anwendungsregeln im Decoder gelöscht.
  • delete: Löscht eine oder mehrere Regeln an der angegebener Position und in der angegebenen Anzahl.
  • merge: Führt einen übertragenen Regelsatz mit einem vorhandenen Regelsatz zusammen. Vorhandene Regeln, die mit den eingehenden Regeln übereinstimmen (und zwar entweder beim Namen oder bei der Regel selbst), werden ersetzt. Ansonsten werden die Regeln an der angegebenen Position eingefügt, wie in Befehl „merge“ beschrieben.
  • replace: Löscht alle vorhandenen Regeln und ersetzt sie durch den eingehenden Regelsatz.
  • validate: Validiert die Syntax einer Regel, aber nicht die Metaschlüssel.

Befehl „add“

Mit dem Befehl add wird dem vorhandenen Regelsatz eine Regel hinzugefügt. Die Formatierung ist wichtig, da doppelte Anführungszeichen in der API-Regelsprache und ebenso als Parameter für alle APIs von RSA NetWitness® Suite verwendet werden. Aus diesem Grund müssen Sie allen doppelten Anführungszeichen in der Regel selbst einen umgekehrten Schrägstrich (\) voranstellen. Die Syntax des Befehls lautet wie folgt:

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

  • rule ist die hinzuzufügende Regel. Achten Sie darauf, dass Sie alle Regeln, die Leerzeichen aufweisen, in doppelte Anführungszeichen setzen, und dass Sie allen doppelten Anführungszeichen, die Teil der Regel sind, einen umgekehrten Schrägstrich voranstellen.
  • name ist der Name der Regel.
  • alert ist die Warnmeldung für die Regel (falls vorhanden).
  • atPos ist die Position, an der die Regel eingefügt werden soll (beginnend mit 1). Null ist der Anfang der Liste und bei jeder Zahl, die größer als die aktuelle Länge der Liste ist, wird die Regel am Ende angefügt.

Dies ist ein Beispiel für einen Befehl, mit dem eine Regel mithilfe von NwConsole hinzugefügt wird:
send /decoder/config/rules/application add rule="ip.src exists" order=1 alert=alert.id name=testrule

Sehen Sie sich nun diese Regel an:

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

Um dies als Regel hinzuzufügen, müssen Sie die Parameter wie folgt übergeben:

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

Beachten Sie, dass allen doppelten Anführungszeichen im Regelparameter ein umgekehrter Schrägstrich vorangestellt wurde. Damit dies besser lesbar ist, können Sie innerhalb der Regel auch einfache Anführungszeichen verwenden. Einfache und doppelte Anführungszeichen sind für die Regel und die Abfragesprache gleichwertig, aber nicht für API-Parameter (hier werden nur doppelte Anführungszeichen unterstützt). Mit einfachen Anführungszeichen ist die gleiche Regel besser lesbar:

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

Befehl „merge“

Der Befehl merge dient der Zusammenführung einer eingehenden Liste von Regeln mit den vorhandenen Regeln im Service. So funktioniert es:

  • Vorhandene Regeln werden gefunden, die den gleichen Namen ODER die gleiche Regel aufweisen. Dann wird der vorhandene Name der Regel aktualisiert und die gleiche Position beibehalten.
  • Neue Regeln werden in die Regelliste basierend auf der angegebenen ZAHL eingefügt. Wenn die Zahl Null ist, werden sie an den Anfang der Liste eingefügt.
  • Die Regeln werden in der Reihenfolge ihres Empfangs verarbeitet: Wenn zwei Regeln mit Null nummeriert sind, wird die zweite Regel nach der ersten verarbeitet und an die oberste Position gesetzt. Alle vorhandenen Regeln werden zwei Stellen nach unten verschoben. Bei allen Zahlen, die höher als die vorhandenen Regelpositionen sind, werden die Regeln nach der letzten vorhandenen Regel eingefügt und entsprechend nummeriert.
  • Alle nicht nummerierten Regeln werden ebenfalls nach der letzten vorhandenen Regel eingefügt und erhalten die nächste verfügbare Nummer.

Die Syntax des Befehls „merge“ lautet wie folgt:

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

  • file-data ist der vollständige Pfad und Name der zusammenzuführenden Regeldatei.
  • file-format ist das Format der Regeldatei. Gültige Werte sind params-list, string, params, binary und params-binary.

Methoden zum Senden einer Liste von Regeln an einen Service

Es gibt zwei Möglichkeiten, eine Liste von Regeln zu senden. Sie können sie als .nwr (NetWitness-Regel)-Datei oder als nummerierten Satz von Parametern senden, wobei jede Zahl die Position, an der die Regel eingefügt werden soll, sowie die codierte Regel angibt. Wenn Sie die aktuelle Liste der Regeln in einem Service anzeigen möchten, müssen Sie den Befehl ls für die Regelkategorie ausführen (Anwendungsregeln für einen Decoder befinden sich z. B. in /decoder/config/rules/application).

Dies ist ein Beispiel für Befehle, mit denen vorhandene Regeln mithilfe von NwConsole aufgelistet werden:

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

cd /decoder/config/rules/application

ls

Dies ist ein weiteres Beispiel, bei dem vorhandene Regeln in NwConsole aufgelistet werden:

send /decoder/config/rules/application ls

Dies ist ein Beispiel des Befehls, mit dem auf Netzwerkregeln im RESTful-Port verwiesen wird, was Unterstützung für eine einfache admin HTML-App bietet.

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

Senden einer NetWitness-Regeldatei

Beginnen wir mit einer beispielhaften nwr-Datei. Jede Regel muss sich in einer separaten Zeile befinden:

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

Um Regeln mit NwConsole zu übertragen und zusammenzuführen, verwenden Sie die folgenden Befehle:

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

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

Um die vorhandenen Regeln durch die Regeln in der Datei zu ersetzen, verwenden Sie nicht den Befehl merge, sondern replace.

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

Um die Regeln in einer nwr-Datei mithilfe des RESTful-Ports zusammenzuführen, können Sie einen curl-Befehl verwenden, der die Regeln überträgt:

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

In den Beispielen werden Anwendungsregeln übertragen. Senden Sie Netzwerkregeln an /decoder/config/rules/network. Senden Sie Korrelationsregeln an /decoder/config/rules/correlation.

Senden von nummerierten Parametern

Die andere Möglichkeit, eine Regelliste zu senden, ist das Senden als nummerierte Parameter. Die Schwierigkeit bei dieser Methode ist, dass den Anführungszeichen in jeder nummerierten Regel ein Escape-Zeichen vorangestellt werden muss. Dies ist jedoch nur ein Problem, wenn Sie versuchen, es manuell durchzuführen. Um z. B. dieselben Regeln wie oben als Parameter über NwConsole zu senden, verwenden Sie den folgenden Befehl:

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"

Dieser Befehl ist schwer zu lesen, weil den enthaltenen Anführungszeichen umgekehrte Schrägstriche (\) vorangestellt werden müssen. Ansonsten bewirken diese beiden Befehle das Gleiche: Zusammenführen oder Hinzufügen von drei Regeln an den Positionen 1, 2 und 3. Wenn Sie meinen, dass der Befehl oben schwer zu lesen ist, schauen Sie sich den äquivalenten Befehl curl an:

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"

Weitere Informationen dazu, wie doppelte Anführungszeichen in Parametern mit Escape-Zeichen versehen werden, finden Sie unter Befehl „add“.

Sortieren von Regeln während der Übertragung

Übertragene Regeln werden auf zwei verschiedene Arten sortiert. Wenn sie als Parameter übergeben werden, bestimmt die Nummer des Parameters die Reihenfolge. Hat er keine Nummer, sucht merge nach einem order-Parameter in der Regel selbst und verwendet diesen Wert, sofern vorhanden.

Hinweis: Die Verwendung von order ist die einzige Möglichkeit zum Festlegen der Reihenfolge in einer .nwr-Datei. Wenn weder eine Nummer noch ein order -Parameter gefunden wird, gibt es keine Garantie für die Einfügereihenfolge.

Beispiel

Bei einem Decoder sind folgende Anwendungsregeln installiert. Beachten Sie, dass die Nummerierung IMMER aufeinanderfolgend ist und bei 1 beginnt:

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

Und Sie möchten die folgenden vier Regeln zusammenführen:

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

Sie verwenden eine beliebige Methode zum Übertragen der Regeln und erhalten folgendes Ergebnis:

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

Gibt es hier etwas Überraschendes? Jede Regel wurde wie folgt verarbeitet:

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

Diese Regel hat den gleichen Namen wie eine vorhandene Regel im Decoder (die dritte). Daher wurde die vorhandene Regel changing _filter_ to _keep_ aktualisiert.

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

Diese Regel ist neu und enthält order=0, sodass sie ganz oben eingefügt wird.

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

Diese Regel hat den Nicht-Nummernwert append für order und wird deshalb an das Ende der Liste eingefügt. Sie erreichen dasselbe durch Angabe einer sehr großen Zahl wie 999999.

Diese Regel ist die letzte, enthält aber order=3. Wenn sie keiner vorhandenen Regel entspricht (beim Namen oder Text der Regel selbst), wird sie an Position 3 platziert. Sie bildet also die dritte Regel in der Liste. Alle nachfolgenden Regeln wurden nach unten verschoben.

Befehl „replace“

Mit dem Befehl replace werden alle vorhandene Regeln entfernt und durch die eingehende Regelliste ersetzt. Unter Befehl „merge“ finden Sie ausführliche Informationen zum Formatieren der eingehenden Regelliste und zur Sortierung.

Dies ist ein Beispiel für den Befehl replace unter Verwendung einer NetWitness-Regeldatei:

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

Dies ist ein Beispiel für den Befehl replace unter Verwendung von nummerierten Parametern:

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

Befehl „clear“

Mit dem Befehl clear werden alle vorhandene Regeln aus dem Service entfernt. Dies ist ein Beispiel für den Befehl:

send /decoder/config/rules/application clear

Befehl „delete“

Mit dem Befehl delete werden eine oder mehrere Regeln vom Service gelöscht.

delete atPos <uint32> count <uint32, optional>

  • atPos löscht die Regel an der angegebenen Position. Die Regeln sind fortlaufend nummeriert, beginnend mit 1.
  • count löscht eine oder mehrere Regeln ab atPos. Dies ist ein optionaler Parameter, mit dem definiert wird, wie viele Regeln ab atPos gelöscht werden sollen. Der Standardwert ist 1.

Bei diesem Beispiel für den Befehl werden vier Regeln ab Position 0003 gelöscht:

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

Befehl „validate“

Mit dem Befehl validate wird sichergestellt, dass die Regel richtig angewendet wird. Denken Sie daran, dass mit diesem Befehl nicht überprüft werden kann, ob Sprachschlüssel und Entitäten gültig sind.

validate rule <string>

rule ist der Name der zu validierenden Regel. Achten Sie darauf, alle Regeln, die Leerzeichen enthalten, in doppelte Anführungszeichen zu setzen.

You are here
Table of Contents > Konfigurieren von Decoder-Regeln > Decoder-Befehle für die Verwaltung von Regeln

Attachments

    Outcomes