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.
TippWenn 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/*.javawird auf den Pfad angewendet:
/abc/123/test.javaDann:
- "
a?c" stimmt mit "abc" überein - "
123" entspricht "123" - "
*.java" entspricht "test.java"
Wenn das Muster auf den Pfad angewendet wird:
/abc/123456/test.javaDann:
- "
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/**/*.javaentspricht 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.
HinweisDie 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.
HinweisWenn 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>
HinweisEine 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.
HinweisWo 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>
HinweisPlatzhalter 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>
HinweisSeien 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.
HinweisWenn 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}"/>
HinweisDie 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.
HinweisUmgebungsvariablen 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.
|
- Öffnen Sie das Computer or Policy editor, in dem Sie eine Umgebungsvariable überschreiben möchten.
- Klicken Sie auf .
- Klicken Sie im Environment Variable Overrides section auf View Environment Variables, um die Seite Environment Variable Overrides anzuzeigen.
- 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.
HinweisEin 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.
