Ansichten:
Die Sprache der Integritätsüberwachungsregeln ist eine deklarative, XML-basierte Sprache, die die Systemkomponenten und zugehörigen Attribute beschreibt, die von Server- und Workload Protection überwacht werden sollen. Sie bietet auch eine Möglichkeit, festzulegen, welche Komponenten innerhalb einer größeren Menge von Komponenten von der Überwachung ausgeschlossen werden sollen.
Tipp
Tipp
Wenn Sie nur nicht autorisierte Änderungen an Dateien oder der Windows-Registrierung überwachen müssen, können Sie Vorlagen für Datei- und Registrierungsregeln verwenden, anstatt eine benutzerdefinierte zu erstellen. Weitere Informationen zur Verwendung dieser Vorlagen finden Sie unter Erstellen einer Integritätsüberwachungsregel.
Um eine neue benutzerdefinierte Integritätsüberwachungsregel zu erstellen, beginnen Sie mit dem Verfahren in Erstellen einer Integritätsüberwachungsregel (wählen Sie Custom (XML) als Vorlagentyp), und erstellen Sie dann Ihre benutzerdefinierte Regel gemäß der Sprache der Integritätsüberwachungsregeln, wie in den folgenden Abschnitten behandelt:

Entitätsmengen

Systemkomponenten, die in einer Integritätsüberwachungsregel enthalten sind, werden als "Entitäten" bezeichnet. Jeder Komponententyp ist eine Klasse von Entität. Zum Beispiel sind Dateien, Registrierungsschlüssel und Prozesse jeweils eine Klasse von Entität. Die Sprache der Integritätsüberwachungsregeln bietet ein Tag zur Beschreibung einer Menge von Entitäten (eines Entitätensatzes) für jede Klasse von Entität. Die folgenden Entity Set-Typen stehen zur Verwendung in einer Regel zur Verfügung:
  • DirectorySet: Regeln werden die Integrität von Verzeichnissen DURCHSUCHEN
  • FileSet: Regeln werden die Integrität der Dateien DURCHSUCHEN
  • GroupSet: Regeln werden die Integrität der Gruppen DURCHSUCHEN
  • InstalledSoftwareSet: Regeln werden die Integrität der installierten Software durchsuchen
  • PortSet: Regeln werden die Integrität der abhörenden Ports DURCHSUCHEN
  • ProcessSet: Regeln werden die Integrität der Prozesse DURCHSUCHEN
  • RegistryKeySet: Regeln werden Registrierungs-Schlüssel durchsuchen
  • RegistryValueSet: Regeln werden Registrierungswerte DURCHSUCHEN
  • ServiceSet: Regeln werden die Integrität der Dienste DURCHSUCHEN
  • UserSet: Regeln werden die Integrität der Benutzer DURCHSUCHEN
  • WQLSet: Regeln überwachen die Integrität der Ergebnisse einer Windows Management Instrumentation WQL-Abfrageanweisung
Eine einzelne Integritätsregel kann mehrere Entitätensätze enthalten. Dies ermöglicht es Ihnen beispielsweise, eine Anwendung mit einer einzigen Regel zu sichern, die mehrere Dateien und Registrierungseinträge überwacht.

Hierarchien und Platzhalter

Für Entitätsmengen, die einen hierarchischen Datentyp wie FileSet und RegistryKeySet darstellen, wird abschnittsbasiertes Musterabgleichen unterstützt:
  • / (Schrägstrich) : kennzeichnet Abschnitte des Musters, die auf Ebenen der Hierarchie angewendet werden
  • ** (zwei Sterne): entspricht null oder mehr Abschnitten
Folgende Platzhalter werden unterstützt:
  • ? (Fragezeichen): entspricht einem Zeichen
  • * (ein Stern) : entspricht null oder mehr Zeichen
"Escaping"-Zeichen werden ebenfalls unterstützt:
  • \ (Backslash) : hebt das nächste Zeichen auf
Das Muster wird in Abschnitte unterteilt, indem das Zeichen "/" verwendet wird. Jeder Abschnitt des Musters wird auf aufeinanderfolgende Ebenen der Hierarchie angewendet, solange er weiterhin übereinstimmt. Zum Beispiel, wenn das Muster:
/a?c/123/*.java
wird auf den Pfad angewendet:
/abc/123/test.java
Dann:
  • "a?c" stimmt mit "abc" überein
  • "123" entspricht "123"
  • "*.java" entspricht "test.java"
Wenn das Muster auf den Pfad angewendet wird:
/abc/123456/test.java
Dann:
  • "a?c" stimmt mit "abc" überein
  • "123" stimmt nicht mit "123456" überein, daher wird keine weitere Übereinstimmung durchgeführt
Das Muster "**" passt auf null oder mehr Abschnitte, und daher:
/abc/**/*.java
entspricht sowohl "abc/123/test.java" als auch "abc/123456/test.java". Es würde auch "abc/test.java" und "abc/123/456/test.java" entsprechen.

Syntax und Konzepte

In diesem Abschnitt werden einige Beispielregeln zur Integritätsüberwachung vorgestellt. Die Beispiele verwenden die FileSet Entitätensammlung, aber die beschriebenen Themen und Komponenten sind für alle Entitätensammlungen üblich. Eine minimale Regel zur Integritätsüberwachung könnte folgendermaßen aussehen:
<FileSet base="C:\Program Files\MySQL">
</FileSet>
Das Attribut "base" gibt das Basisverzeichnis für das FileSet an. Alles andere an der Regel wird relativ zu diesem Verzeichnis sein. Wenn der Regel nichts Weiteres hinzugefügt wird, wird alles (einschließlich Unterverzeichnisse) unterhalb des "base" auf Änderungen überwacht.
Hinweis
Hinweis
Die Platzhalter "*" und "?" können in einem "base"-Attributstring verwendet werden, jedoch nur im letzten Pfadbestandteil der Basis. Daher ist dies gültig:
<codeblock>base="C:\program files\CompanyName * Web Server" </codeblock>
  
but this is not: 
 
<codeblock>base="C:\* files\Microsoft Office"</codeblock>
Innerhalb eines Entitätensatzes können "include"- und "exclude"-Tags verwendet werden, um die Mustererkennung zu steuern. Diese Tags haben ein "key"-Attribut, das das zu vergleichende Muster angibt. Die Quelle des Schlüssels variiert je nach Entitätensatz. Zum Beispiel ist es bei Dateien und Verzeichnissen ihr Pfad, während es bei Ports das einzigartige Protokoll/IP/portNumber-Tupel ist.
Hinweis
Hinweis
Wenn ein in einer Einschluss- oder Ausschlussregel angegebener Pfad syntaktisch ungültig ist, wird der Agent ein "Integritätsüberwachungsregel-Kompilierungsproblem"-Agent-Ereignis generieren und die Regel-ID sowie den Pfad (nach der Erweiterung) als Parameter bereitstellen. Ein Beispiel für einen ungültigen Pfad wäre C:\test1\D:\test2, da ein Dateiname nicht zwei Volumenkennungen enthalten darf.

Tag einfügen

Das Include-Tag ist im Wesentlichen eine Positivliste. Die Verwendung bedeutet, dass nur die Entitäten, die damit (oder anderen Include-Tags) übereinstimmen, einbezogen werden. Durch das Hinzufügen eines Include-Tags überwacht die folgende Regel nun nur Änderungen an Dateien mit dem Namen "*.exe" im Ordner "C:\Programmdateien\MySQL" und Unterordnern:
<FileSet base="C:\Program Files\MySQL">
<include key="**/*.exe"/>
</FileSet>
"Includes" können kombiniert werden. Die folgende Regel überwacht Änderungen an Dateien mit den Namen "*.exe" und "*.dll" im Ordner "C:\Programmdateien\MySQL" und Unterordnern:
<FileSet base="C:\Program Files\MySQL">
<include key="**/*.exe"/>
<include key="**/*.dll"/>
</FileSet>
Es ist auch möglich, mehrere Kriterien in einem einzigen Einschlussblock zu kombinieren, wobei in diesem Fall alle Kriterien für eine gegebene Entität zutreffen müssen, damit sie eingeschlossen wird. Der folgende "include"-Tag erfordert, dass eine Entität sowohl mit ".exe" endet als auch mit "sample" beginnt, um eingeschlossen zu werden. Obwohl diese Anforderung prägnanter dargestellt werden könnte, wird der Nutzen deutlicher, wenn Schlüsselmustern mit anderen Merkmalen der Entität kombiniert werden, wie im Abschnitt "Merkmale" unten beschrieben.
<include>
<key pattern="**/*.exe"/>
<key pattern="**/sample*"/>
</include>
Das Folgende ist eine andere Möglichkeit, die gleichen Anforderungen auszudrücken:
<include key="**/*.exe">
<key pattern="**/sample*"/>
</include>

Tag ausschließen

Das Ausschluss-Tag fungiert als Sperrliste, indem es Dateien aus dem Satz entfernt, die sonst zurückgegeben würden. Das folgende (unwahrscheinliche) Beispiel würde alles außer temporären Dateien unter Beobachtung stellen.
<FileSet base="C:\Program Files\MySQL">
<include key="**"/>
<exclude key="**/*.tmp"/>
</FileSet>
Die folgende Regel schließt die "MySQLInstanceConfig.exe" aus dem Satz von EXEs und DLLs aus:
<FileSet base="C:\Program Files\MySQL">
<include key="**/*.exe"/>
<include key="**/*.dll" />
<exclude key="**/MySQLInstanceConfig.exe"/>
</FileSet>
Ähnlich wie das "include"-Tag kann das "exclude"-Tag so geschrieben werden, dass es mehrere Kriterien erfordert. Das folgende Beispiel zeigt ein "exclude"-Tag mit mehreren Kriterien.
<exclude>
<key pattern="**/MySQLInstanceConfig*" />
<key pattern="**/*.exe" />
</exclude>

Groß- und Kleinschreibung

Die Groß- und Kleinschreibung bei der Mustererkennung für ein Ein- oder Ausschluss-Tag kann durch das Attribut "casesensitive" gesteuert werden. Das Attribut hat drei zulässige Werte:
  • true
  • false
  • platform
Der Standardwert für dieses Attribut ist "platform", was bedeutet, dass die Groß- und Kleinschreibung des Musters mit der Plattform übereinstimmt, auf der es ausgeführt wird. Im folgenden Beispiel würden sowohl "Sample.txt" als auch "sample.txt" auf einem Windows-System zurückgegeben, aber nur "Sample.txt" auf einem Unix-System:
<FileSet base="C:\Program Files\MySQL">
<include key="**/*Sample*"/>
</FileSet>
In diesem Beispiel würde nur "Sample.txt" unter Windows und Unix zurückgegeben werden:
<FileSet base="C:\Program Files\MySQL">
<include key="**/*Sample*" casesensitive="true"/>
</FileSet>
Hinweis
Hinweis
Eine Groß-/Kleinschreibung-sensitive Einstellung von "true" ist auf einer Plattform wie Windows, die bei den meisten Objektnamen nicht zwischen Groß- und Kleinschreibung unterscheidet, von begrenztem Nutzen.

Entitätsmerkmale

Das Ein- und Ausschließen von Entitäten basierend auf anderen Merkmalen als ihrem "Schlüssel" wird für einige Entitätstypen ebenfalls unterstützt. Der Satz von Merkmalen unterscheidet sich je nach Entitätstyp. Das folgende Beispiel wird alle ausführbaren Dateien einschließen. Es hängt nicht von der Dateierweiterung ab, wie es bei früheren Beispielen mit Dateierweiterungen der Fall war, sondern überprüft stattdessen die ersten paar hundert Byte der Datei, um festzustellen, ob sie auf dem gegebenen Betriebssystem ausführbar ist.
<FileSet base="C:\Program Files\MySQL">
<include key="**" executable="true"/>
</FileSet>
Feature-Attribute müssen in einem "include"- oder "exclude"-Tag erscheinen. Um sie als Teil eines Mehrkriterien-include oder -exclude zu verwenden, müssen sie als Attribute des umschließenden include- oder exclude-Tags angegeben werden. Das folgende Beispiel schließt alle Dateien ein, die den String "MySQL" in ihrem Namen enthalten und ausführbar sind:
<include executable="true">
<key pattern="**/*MySQL*"/>
</include>
Das vorherige Beispiel kann prägnanter ausgedrückt werden als:
<include key="**/*MySQL*" executable="true"/>
Einige Merkmalsattribute sind einfach Übereinstimmungen mit dem Wert eines der Attribute der Entität. In solchen Fällen werden manchmal Platzhalterübereinstimmungen mit "*" und "?" unterstützt. Die Hilfeseiten für die einzelnen Entitätensätze geben an, welche Attribute auf diese Weise in Ein- oder Ausschlussregeln verwendet werden können und ob sie Platzhalterübereinstimmungen oder einfache Zeichenfolgenübereinstimmungen unterstützen.
Hinweis
Hinweis
Wo Platzhalter unterstützt werden, ist es wichtig zu beachten, dass die Übereinstimmung gegen den Zeichenfolgenwert des Attributs erfolgt und keine Normalisierung stattfindet. Konstrukte, die für Entitätsschlüssel-Übereinstimmungen verfügbar sind, wie "**" und die Verwendung von "/" zur Trennung hierarchischer Komponenten, gelten nicht. Das Abgleichen eines Pfadnamens unter Windows erfordert die Verwendung von "\", da dies das Zeichen ist, das im Wert des getesteten Attributs erscheint, während Unix-Systeme "/" in Pfadwerten verwenden, sodass Übereinstimmungen gegen Unix-Pfade "/" verwenden müssen.
Das Folgende ist ein Beispiel für eine Funktionsübereinstimmung unter Verwendung des Attributs "state":
<ServiceSet>
<include state="running"/>
</ServiceSet>
Hinweis
Hinweis
Platzhalter werden in Statusübereinstimmungen nicht unterstützt.
Das folgende Beispiel stimmt mit allen Prozessen überein, bei denen der Pfad der Binärdatei auf "\notepad.exe" endet:
<ProcessSet>
<include path="*\notepad.exe"/>
</ProcessSet>
Das folgende Beispiel entspricht allen Prozessen, bei denen die Befehlszeile mit "/sbin/" beginnt:
<ProcessSet>
<include commandLine="/sbin/*"/>
</ProcessSet>
Hinweis
Hinweis
Seien Sie vorsichtig beim Verwenden von Platzhaltern. Ein Platzhaltermuster wie "**" wird jede Datei in jedem Unterverzeichnis unterhalb von "base" betrachten. Das Erstellen einer Basislinie für ein solches Muster kann viel Zeit und Ressourcen in Anspruch nehmen.

UNDs und ODERs

Es ist möglich, logische UND- und ODER-Verknüpfungen durch die Verwendung von Mehrfachkriterien-Einschlüssen und -Ausschlüssen sowie mehrfachen Einschlüssen und Ausschlüssen auszudrücken.
Es gibt mehrere Möglichkeiten, wie ein Mehrfachkriterium ein- oder ausgeschlossen werden kann, um ein UND auszudrücken. Die einfachste Methode besteht darin, mehrere Kriterien innerhalb eines einzelnen umschließenden Tags einzuschließen. Das folgende Beispiel zeigt ein einfaches Mehrfachkriterium-UND:
<include>
<key pattern="**/*MySQL\*" />
<key pattern="**/*.exe"/>
</include>
Ebenso werden alle Kriterien, die als Attribut des einschließenden Tags ausgedrückt werden, mit den eingeschlossenen Kriterien als Teil der Mehrfachkriterienanforderung gruppiert. Das folgende Beispiel zeigt das vorherige Mehrfachkriterium "include", das auf diese Weise umgeschrieben wurde:
<include key="**/*.exe">
<key pattern="**/*MySQL*" />
</include>
Schließlich, wenn mehrere Kriterien als Attribute eines Einschlusses oder Ausschlusses ausgedrückt werden, werden sie als UND behandelt:
<include executable="true" key="**/*MySQL*" />
ORs werden einfach durch die Einbeziehung mehrerer Include- oder Exclude-Tags ausgedrückt. Der folgende Code schließt Dateien ein, wenn ihre Erweiterungen ".exe" ODER ".dll" sind:
<include key="**/*.dll" />
<include key="**/*.exe" />

Reihenfolge der Auswertung

Alle "Includes" werden zuerst verarbeitet, unabhängig von der Reihenfolge ihres Auftretens in der Regel. Wenn ein Objektname mit mindestens einem "Include"-Tag übereinstimmt, wird es anschließend gegen die "Exclude"-Tags getestet. Es wird aus der Menge der überwachten Objekte entfernt, wenn es mit mindestens einem "Exclude"-Tag übereinstimmt.

Entitätsattribute

Eine gegebene Entität hat eine Reihe von Attributen, die überwacht werden können. Wenn keine Attribute für eine Entitätengruppe angegeben sind (d. h. das Attribut-Wrapper-Tag nicht vorhanden ist), wird davon ausgegangen, dass die STANDARD-Attributgruppe für diese Entität verwendet wird. (Siehe die Abschnitte Kurzform-Attribute für die einzelnen Entitätengruppen.)
Für eine gegebene Entitätsmenge sind jedoch nur bestimmte Attribute der Entität für die Integritätsüberwachung von Interesse. Beispielsweise werden Änderungen am Inhalt einer Protokolldatei höchstwahrscheinlich erwartet und erlaubt. Änderungen an den Berechtigungen oder der Eigentümerschaft sollten jedoch gemeldet werden.
Das "attributes"-Tag der Entity Sets ermöglicht es, dies auszudrücken. Das "attributes"-Tag enthält eine Reihe von Tags, die die interessierenden Attribute aufzählen. Die Menge der erlaubten "attribute"-Tags variiert je nach dem Entity Set, für das sie bereitgestellt werden.
Hinweis
Hinweis
Wenn das "attributes"-Tag vorhanden ist, aber keine Einträge enthält, werden die durch die Regel definierten Entitäten nur auf ihre Existenz überwacht.
Das folgende Beispiel überwacht ausführbare Dateien in "C:\Programmdateien\MySQL", deren Name "SQL" enthält, auf Änderungen ihrer Attribute "zuletzt geändert", "Berechtigungen" und "Besitzer":
<FileSet base="C:\Program Files\MySQL" >
<include key="**/*SQL*" executable="true"/>
<attributes>
<lastModified/>
<permissions/>
<owner/>
</attributes>
</FileSet>
Das folgende Beispiel überwacht die Attribute "Berechtigungen" und "Besitzer" von Protokolldateien in "C:\Programmdateien\MySQL":
<FileSet base="C:\Program Files\MySQL" >
<attributes>
<permissions/>
<owner/>
</attributes>   
<include key="**/*.log" />
</FileSet>
Im folgenden Beispiel wird der STANDARD-Satz von Attributen überwacht. (Siehe Kurzschreibweise der Attribute unten)
<FileSet base="C:\Program Files\MySQL" >
<include key="**/*.log" />
</FileSet>
Im folgenden Beispiel werden keine Attribute überwacht. Es wird nur das Vorhandensein der Entitäten auf Änderungen überprüft.
<FileSet base="C:\Program Files\MySQL" >
<attributes/>
<include key="**/*.log" />
</FileSet>

Kurzschreibweise von Attributen

Kurzattribute bieten eine Möglichkeit, eine Gruppe von Attributen mithilfe eines einzigen übergeordneten Attributs anzugeben. Wie bei regulären Attributen unterscheidet sich die Menge der zulässigen Werte je nach Entitätensatz, für den sie bereitgestellt werden.
Kurzschreibweise von Attributen ist nützlich in Fällen, in denen eine Gruppe von Attributen natürlich zusammengehört, in Fällen, in denen das vollständige Auflisten der Attributgruppe mühsam wäre, und in Fällen, in denen sich die durch das übergeordnete Attribut repräsentierte Attributgruppe mit der Zeit oder der Systemkonfiguration ändern kann. Ein Beispiel für jeden Fall folgt:
Attribut
Beschreibung
STANDARD
Der Satz von Attributen, die für das Entitätenset überwacht werden sollen. Dies unterscheidet sich von "jedem möglichen Attribut" für das Entitätenset. Zum Beispiel würde es nicht jeden möglichen Hash-Algorithmus umfassen, sondern nur diejenigen, die als ausreichend erachtet werden. Für die Liste der "standardmäßigen" Attribute für jedes Entitätenset siehe die Abschnitte für die einzelnen Entitätensets.
CONTENTS
Dies ist die Kurzform für den Hash oder die Menge von Hashes des Dateiinhalts. Standardmäßig wird SHA-1 verwendet.

onChange-Attribut

Ein EntitySet kann so eingestellt werden, dass Änderungen in Echtzeit überwacht werden. Wenn das Attribut onChange eines EntitySet auf true gesetzt ist (der Standardwert), werden die von dem EntitySet zurückgegebenen Entitäten in Echtzeit auf Änderungen überwacht. Wenn eine Änderung erkannt wird, wird die Entität sofort mit ihrem Ausgangswert auf Abweichungen verglichen. Wenn das Attribut onChange eines EntitySet auf false gesetzt ist, wird es nur ausgeführt, wenn ein Ausgangswert erstellt wird oder wenn es durch eine geplante Aufgabe oder auf Abruf von Server- und Workload Protection ausgelöst wird.
Das folgende Beispiel überwacht die MySQL-Binärdateien in Echtzeit:
<FileSet base="C:\Program Files\MySQL" onChange="true">
<include key="**/*.exe"/>
<include key="**/*.dll" />
</FileSet>

Umgebungsvariablen

Umgebungsvariablen können in den Basiswert einbezogen werden, der in Entitätensätzen verwendet wird. Sie sind in "${}" eingeschlossen. Der Variablenname selbst wird mit "env." vorangestellt.
Im folgenden Beispiel wird das Basisverzeichnis des FileSets auf den im Umgebungsvariable PROGRAMFILES gespeicherten Pfad gesetzt:
<FileSet base="${env.PROGRAMFILES}"/>
Hinweis
Hinweis
Die Werte der referenzierten Umgebungsvariablen werden beim Start des Agents gelesen und gespeichert. Wenn sich der Wert einer Umgebungsvariablen ändert, muss der Agent neu gestartet werden, um die Änderung zu registrieren.
Wenn eine referenzierte Umgebungsvariable nicht gefunden wird, werden die sie referenzierenden Entitätensätze nicht gescannt oder überwacht, aber der Rest der Konfiguration wird verwendet. Es wird ein Alarm ausgelöst, der darauf hinweist, dass die Variable nicht vorhanden ist. Der Agent meldet eine ungültige Umgebungsvariable mit dem Agentenereignis "Integritätsüberwachungsregel Kompilierungsproblem". Die ID der Integritätsüberwachungsregel und der Name der Umgebungsvariable werden als Parameter an das Ereignis übergeben.
Die folgenden sind die Standardumgebungsvariablen, die von der Integritätsüberwachung verwendet werden:
Name
Wert
ALLUSERSPROFILE
C:\ProgramData
COMMONPROGRAMFILES
C:\Programme\Gemeinsame Dateien
PROGRAMFILES
C:\Programme
SYSTEMDRIVE
C:
SYSTEMROOT
C:\Windows
WINDIR
C:\Windows

Umgebungsvariablen-Überschreibungen

Umgebungsvariablen überschreiben, wenn nicht standardmäßige Speicherorte im Windows-Betriebssystem verwendet werden. Zum Beispiel sucht die Microsoft Windows - 'Hosts' file modified Integritätsüberwachungsregel, die Änderungen an der Windows Hosts-Datei überwacht, nach dieser Datei im Ordner C:\WINDOWS\system32\drivers\etc. Da jedoch nicht alle Windows-Installationen das Verzeichnis C:\WINDOWS\ verwenden, nutzt die Integritätsüberwachungsregel die WINDIR-Umgebungsvariable und stellt das Verzeichnis als %WINDIR%\system32\drivers\etc dar.
Hinweis
Hinweis
Umgebungsvariablen werden hauptsächlich von der virtuellen Appliance verwendet, wenn agentenloses Integritätsmonitoring auf einer virtuellen Maschine durchgeführt wird. Dies liegt daran, dass die virtuelle Appliance keine Möglichkeit hat zu wissen, ob das Betriebssystem auf einer bestimmten virtuellen Maschine standardmäßige Verzeichnisstandorte verwendet.
  1. Öffnen Sie das Computer or Policy editor, in dem Sie eine Umgebungsvariable überschreiben möchten.
  2. Klicken Sie auf EinstellungenErweitert.
  3. Klicken Sie im Environment Variable Overrides section auf View Environment Variables, um die Seite Environment Variable Overrides anzuzeigen.
  4. Klicken Sie in der Menüleiste auf Neu, geben Sie ein neues Name-Wert-Paar ein (zum Beispiel WINDIR und D:\Windows) und klicken Sie auf OK.

Registrierungswerte

Registrierungswerte können in den Basiswert aufgenommen werden, der in Entitätensätzen verwendet wird. Sie sind in ${} eingeschlossen. Der Pfad zum Registrierungswert selbst wird mit "reg." vorangestellt. Das folgende Beispiel setzt das Basisverzeichnis des FileSets auf den im Registrierungswert "HKLM\Software\Trend Micro\Deep Security Agent\InstallationFolder" gespeicherten Pfad:
<FileSet base="${reg.HKLM\Software\Trend Micro\Deep Security Agent\InstallationFolder}"/>
Die Werte der referenzierten Registrierungswerte werden gelesen, wenn eine neue oder geänderte Regel vom Agenten empfangen wird. Der Agent überprüft auch alle Regeln beim Start und wird die Basislinie für betroffene Regeln neu erstellen, wenn sich referenzierte Registrierungswerte ändern.
Wenn ein referenzierter Registrierungswert nicht gefunden wird, werden die ihn referenzierenden EntitySets nicht gescannt oder überwacht, aber der Rest der Konfiguration wird verwendet. Eine Warnung, dass die Variable nicht vorhanden ist, wird ausgelöst. Der Agent meldet eine ungültige Umgebungsvariablenerweiterung mit Agent-Ereignis 8012. Die ID der Integritätsüberwachungsregel und der Pfad des Registrierungswerts werden als Parameter an das Ereignis übergeben.
Hinweis
Hinweis
Ein Platzhalter ist nur in der letzten hierarchischen Komponente eines Basisnamens erlaubt. Zum Beispiel ist "base="HKLM\Software\ATI*" gültig und findet sowohl "HKLM\Software\ATI" als auch "HKLM\Software\ATI Technologies"; jedoch ist base="HKLM\*\Software\ATI* ungültig.

Verwendung von ".."

Die ".."-Konvention zur Referenzierung eines übergeordneten Verzeichnisses wird in allen aktuellen Versionen des Agenten unterstützt. Der Agent versucht, Basisverzeichnisnamen für FileSet- und DirectorySet-Elemente zu normalisieren, indem er ".."-Referenzen auflöst und Windows-Kurznamen in Langnamen umwandelt. Zum Beispiel hätte in einigen neueren Windows-Versionen das folgende FileSet ein Basisverzeichnis von C:\Users. In früheren Windows-Versionen wäre es C:\Documents and Settings.
<FileSet base="${env.USERPROFILE}\..">
<include key="*/Start Menu/Programs/Startup/*"/>
</FileSet>

Bewährte Verfahren

Regeln sollten so geschrieben werden, dass sie nur Objekte und Attribute von Bedeutung einschließen. Dies stellt sicher, dass keine Ereignisse gemeldet werden, wenn sich andere Attribute des Objekts ändern. Zum Beispiel kann Ihre Änderungsüberwachungsrichtlinie Einschränkungen bei Berechtigungen und Eigentum von Dateien in /bin vorsehen. Ihre Integritätsüberwachungsregel sollte Eigentümer, Gruppe und Berechtigungen überwachen, aber nicht andere Attribute wie lastModified oder Hash-Werte.
Beim Verwenden von Integritätsüberwachungsregeln zur Erkennung von Malware und verdächtiger Aktivität sollten Sie Dienste überwachen, auf die Nutzung von NTFS-Datenströmen achten und ausführbare Dateien an ungewöhnlichen Orten wie "/tmp" oder "${env.windir}\temp" beobachten.
Seien Sie so spezifisch wie möglich, wenn Sie angeben, welche Objekte in eine Regel aufgenommen werden sollen. Je weniger Objekte Sie einschließen, desto weniger Zeit wird benötigt, um Ihre Basislinie zu erstellen, und desto weniger Zeit wird benötigt, um nach Änderungen zu DURCHSUCHEN. Schließen Sie Objekte aus, von denen erwartet wird, dass sie sich ändern, und überwachen Sie nur die Attribute, die Sie interessieren.
Beim Erstellen einer Regel nicht:
  • Verwenden Sie "**/..." aus einer höheren Ebene der Hierarchie wie "/", "C:\" oder "HKLM\Software".
  • Verwenden Sie mehr als einen Inhaltshash-Typ, es sei denn, es ist unbedingt erforderlich.
  • Verweisen Sie auf benutzerspezifische Orte wie HKEY_CURRENT_USER, ${env.USERPROFILE} oder ${env.HOME}.
Jede dieser Anweisungen in Ihren Integritätsüberwachungsregeln wird Leistungsprobleme verursachen, da der Agent viele Elemente durchsucht, um die angegebenen Muster zu finden.