Daten aus der Ariel-Datenbank entfernen

Das ACP-Tool (Ariel Copy) liest eine Ariel-Datenbank, wendet Kriterien an und schreibt die gefilterten Daten an eine andere Position um. Dieses Tool ist nützlich für die Einhaltung der Datenschutz-Grundverordnung (DSGVO). Sie möchten beispielsweise alle Daten entfernen, die mit einem bestimmten Benutzernamen oder einer bestimmten Quellen-IP-Adresse markiert sind.

Anmerkung: Dieser technische Blogartikel ist Unverändert und hat kein zusätzliches Vetting durchlaufen.

Verwendung

Stellen Sie dem Tool die Datenbank (Ereignisse | Datenflüsse), die Start-und Endzeiten, die gefiltert werden müssen, die AQL-Abfrage (-q) oder die anzuwendende Kombination aus Schlüsselersteller und -wert (-k/-p), den Benutzer, der sie ausführen muss (-u) und das Zielverzeichnis (-d) zur Verfügung.

Das ACP-Tool liest die Ariel-Datenbank für die angegebenen Zeiten, wendet den Filter an und stellt alle Datensätze, die mit dem Filter übereinstimmen, in das angegebene Zielverzeichnis.

[root@m5arch06 templates]# /opt/qradar/bin/runjava.sh com.q1labs.ariel.io.ACP
data base name is required
Configured data bases:
		flows
		hc
		simarc
		events
		simevent
usage: ACP -n events -d /store/new_ariel -b "2013/11/21 1:00:00" -e
           "2013/11/21 4:00:00"
           ACP -n events -d /store/new_ariel -b "2013/11/21 1:00:00" -e "2013/11/21
           4:00:00" -q "username is not null and sourceip = '127.0.0.1'" -u admin
           Options:
 -n,--name           data base name, for example -n events
 -b,--begintime      begin time, for example -t "2018/08/28 09:04",
                     optional, by default current system time
 -e,--endtime        end time, for example -t "2018/08/28 10:04",
                     optional, by default current system time
 -d,--destination    Destination directory i.e. /store/filtered_ariel/
 -h,--help           print this message
 -k,--keycreator     class for IKeyCreator
 -p,--param          optional parameter for IKeyCreator
 -q,--query          AQL 'where clause' to copy records
 -u,--user           username (default=admin)
 -v,--testedvalue    value to compare createKey with
[root@m5arch06 templates]#

Primer zur Ariel-Dateistruktur

Bevor wir weiter gehen, lassen Sie uns überprüfen, wie Ariel-Daten -Layout auf Platte sind. Ariel ist eine zeitreihenbasierte Datenbank. Ariel weiß nicht, welche Daten sich auf der Platte befinden, bis er sie durchsucht. Sie können Ariel-Daten zwischen Systemen kopieren, ohne dass sich dies auf die Ariel-Datenbank auswirkt. Ariel-Daten werden in Minutendatensätzen in einem Format ähnlich dem folgenden gespeichert:

/store/ariel/[events | flows ]/[records | payloads | md]/YYYY/MM/dd/hh/
Dabei gilt Folgendes:
  • Ereignisse oder Datenflüsse ist der Name der Ariel-Datenbank

  • Datensätze ist der normalisierte Ereignisdatensatz
  • Nutzdaten sind die Rohnutzdaten, die den Datensätzen zugeordnet sind.
  • Md sind die Hashsignaturen oder Nachrichtenauszüge (optional mit HMAC verschlüsselt) der Ariel-Daten.

Im Allgemeinen haben die Ariel-Datendateien die folgende Struktur:

identifier~Minute#_File#~UUID~UUID~RetentionBucketNumber

Im Verzeichnis records werden Dateien wie die folgenden angezeigt:
  • events~5_0~35c5c6bddcb24578~ad5711e8c1337858~0

    Dieser Datensatz stellt den normalisierten Ereignisdatensatz für die 5th -Minute und das 0th -Aufbewahrungsbucket (Standardbucket) dar.

  • SourceIP~5_0~35c5c6bddcb24578~ad5711e8c1337858~0

    Der Index sourceIP für die 5th Minute und das 0th Aufbewahrungsbucket (Standardbucket)

Im Verzeichnis payloads werden Dateien wie die folgenden angezeigt:

payload_events~5_0~35c5c6bddcb24578~ad5711e8c1337858~0

Die unaufbereiteten Nutzdaten für die 5th -Minute und das 0th -Aufbewahrungsbucket (Standardbucket).

Im Verzeichnis md werden Dateien wie die folgende Datei angezeigt:

  • events~5_0~35c5c6bddcb24578~ad5711e8c1337858~0.HMACSHA512

    Die HMAC-SHA512 -Signatur für die normalisierten Ereignisdatensätze für das 5th Minuten-und 0th Aufbewahrungsbucket

  • payload_events~5_0~35c5c6bddcb24578~ad5711e8c1337858~0.HMACSHA512

    Die HMAC-SHA512 -Signatur für die unformatierten Nutzdaten für die 5th -Minute und das Aufbewahrungsbucket 0th .

    Hinweis: Das ACP-Tool erstellt ein Verzeichnis namens hashes anstelle von md. Wenn Sie das Datei-Hashing oder das Integritätshashing aktiviert haben, achten Sie auf dieses Problem.

Beispiel-Entfernen von Ereignissen mit dem Benutzernamen 'root'

In diesem Beispiel sollen alle Ereignisse mit dem Benutzernamen root aus der Ariel-Ereignisdatenbank für einen Zeitraum zwischen 09:00 und 10:00 Uhr entfernt werden.

  1. Zuerst suchen wir und zeigen, was wir entfernen wollen.
    Der folgende Screenshot zeigt alle Ereignisse:
    Abb. 1. Alle Veranstaltungen
    Abbildung mit allen Ereignissen, die in einem bestimmten Zeitrahmen erfasst wurden.
  2. Führen Sie anschließend das ACP-Tool aus:
    [root@m5arch06 ~]# /opt/qradar/bin/runjava.sh com.q1labs.ariel.io.ACP -n events -b "2018/08/28 09:00:00" -e "2018/08/28 10:00:00" -q "username not like 'root'" -u admin -d /store/new_ariel
    AQL criteria: [username not like 'root'] User: admin
    Copying: [events] to /store/new_ariel Timeline from Tue Aug 28 09:00:00 NDT 2018 to Tue Aug 28 09:59:00 NDT 2018
    Trying to copy dir: /store/ariel/events/records/2018/8/28/9[18-08-28,09:00:00]
    Reader started ...
    Processing interval /store/ariel/events/records/2018/8/28/9/events~59_0~13e6848042143d0~92f58da705b4b452~0[18-08-28,09:59:00]
    Processing interval /store/ariel/events/records/2018/8/28/9/events~58_0~23b0a632f1df4d10~bbe50149b34453d8~0[18-08-28,09:58:00]
    Processing interval /store/ariel/events/records/2018/8/28/9/events~57_0~745684fd0cca424c~a9857807a2952671~0[18-08-28,09:57:00]
    Processing interval /store/ariel/events/records/2018/8/28/9/events~56_0~89c02507d81940c3~a54edd654c2ce796~0[18-08-28,09:56:00]
    …. … ...
    Processing interval /store/ariel/events/records/2018/8/28/9/events~4_0~2c48501471734615~b8ca3cb590a16e05~0[18-08-28,09:04:00]
    Processing interval /store/ariel/events/records/2018/8/28/9/events~3_0~3e369b679aa64306~a97b95e8528a1a9b~0[18-08-28,09:03:00]
    Processing interval /store/ariel/events/records/2018/8/28/9/events~2_0~4e370db759d44bd2~81f695b0164b5a66~0[18-08-28,09:02:00]
    Processing interval /store/ariel/events/records/2018/8/28/9/events~1_0~cdbe9e25b9ee4dbd~982ef0da1ab7e85d~0[18-08-28,09:01:00]
    Processing interval /store/ariel/events/records/2018/8/28/9/events~0_0~ecd2e4bf6bbb425a~b2acfe04fda202a6~0[18-08-28,09:00:00]
    Reader stopped. Written 9507759 records, Skipped 2654 records
    
    Completed copying dir: /store/ariel/events/records/2018/8/28/9[18-08-28,09:00:00]
    
    [root@m5arch06 ~]#
    
    Der folgende Screenshot zeigt alle Ereignisse ohne den Benutzernamen Root :
    Abbildung 2. Alle Ereignisse mit Rootbenutzernamen
    Abbildung mit allen Ereignissen, die mit dem Rootbenutzernamen in einem bestimmten Zeitrahmen erfasst wurden.
    Der folgende Screenshot zeigt alle Ereignisse ohne den Benutzernamen Root .
    Abb. 3 Alle Ereignisse ohne Rootbenutzernamen
    Abbildung mit allen Ereignissen, die ohne den Rootbenutzernamen in einem bestimmten Zeitrahmen erfasst wurden.

    Wie bereits erläutert, wurden alle Ereignisse von 09:00 bis 10:00 Uhr entfernt, die mit dem Stammelement username übereinstimmen. Mit dem ACP-Tool haben wir in unseren Kriterien angegeben, dass username NICHT root war.

    Außerdem haben wir die gefilterten Datensätze im Verzeichnis /store/new_Ariel abgelegt.

  3. Ersetzen Sie die alten Ariel-Daten durch die neuen Ariel-Daten.

    Im Verzeichnis /store/new_ariel (das Ziel, das wir in diesem Beispiel ausgewählt haben) können wir sehen, dass wir Daten im Wert von einer Stunde verarbeitet haben:

    [root@m5arch06 new_ariel]# find /store/new_ariel -maxdepth 6
    /store/new_ariel
    /store/new_ariel/events
    /store/new_ariel/events/hashes
    /store/new_ariel/events/hashes/2018
    /store/new_ariel/events/hashes/2018/8
    /store/new_ariel/events/hashes/2018/8/28
    /store/new_ariel/events/hashes/2018/8/28/9
    /store/new_ariel/events/records
    /store/new_ariel/events/records/2018
    /store/new_ariel/events/records/2018/8
    /store/new_ariel/events/records/2018/8/28
    /store/new_ariel/events/records/2018/8/28/9
    /store/new_ariel/events/payloads
    /store/new_ariel/events/payloads/2018
    /store/new_ariel/events/payloads/2018/8
    /store/new_ariel/events/payloads/2018/8/28
    /store/new_ariel/events/payloads/2018/8/28/9
    [root@m5arch06 new_ariel]#
    

    In diesem Beispiel wurden die Daten so ausgewählt, dass sie an Stundengrenzen angerechnet werden, um die Archivierung und Kopien zu vereinfachen (der Befehlmv kann verwendet werden). Wenn Ihre Daten nicht an Stundengrenzen anstehen, müssen Sie Datei für Datei umlagern.

  4. Archivieren Sie die alten Daten aus dem Verzeichnis ariel im Verzeichnis ariel_archive , indem Sie den folgenden Befehl eingeben:
    [root@m5arch06 store]# mv /store/ariel/events/records/2018/8/28/9 /store/ariel_archive/events/records/2018/8/28/
    [root@m5arch06 store]# mv /store/ariel/events/payloads/2018/8/28/9 /store/ariel_archive/events/payloads/2018/8/28/
    [root@m5arch06 store]# mv /store/ariel/events/md/2018/8/28/9 /store/ariel_archive/events/hashes/2018/8/28/
    [root@m5arch06 store]#
    

    Zu diesem Zeitpunkt ist die Stunde der Daten nicht durchsuchbar. Die Ariel-Datenbank kann sie nicht finden, da sich die Dateien nicht mehr in der Ariel-Datenbank befinden.

  5. Kopieren oder verschieben Sie die neuen Daten aus dem Verzeichnis new_ariel in das Verzeichnis ariel , indem Sie den folgenden Befehl eingeben:
    [root@m5arch06 store]# cp -a /store/new_ariel/events/records/2018/8/28/9 /store/ariel/events/records/2018/8/28
    [root@m5arch06 store]# cp -a /store/new_ariel/events/payloads/2018/8/28/9 /store/ariel/events/payloads/2018/8/28
    [root@m5arch06 store]# cp -a /store/new_ariel/events/hashes/2018/8/28/9 /store/ariel/events/md/2018/8/28
    [root@m5arch06 store]#
    
    Hinweis: Wir haben von hashes zu mdgewechselt. Lesen Sie den Hinweis im Abschnitt "Ariel file structure primer".

    Da wir die Suchvorgänge für diese Daten ausgeführt haben, bevor wir begonnen haben, entfernen wir diese Suchvorgänge, damit wir den Cursor-Cache nicht erhalten, wenn wir identische Suchvorgänge ausführen. Entfernen Sie die Suchen aus Suchergebnisse verwalten auf der Registerkarte Protokollaktivität .

  6. Führen Sie die Suche nach allen Daten von 09:00 bis 10:00 Uhr aus.
    Abbildung 4. Neue Suche
    Die Abbildung zeigt eine Suche, die in einem bestimmten Zeitrahmen ausgeführt wird.
    Anmerkung: Die Gesamtergebnisse sind mit den Ergebnissen des Rootbenutzernamens identisch, die vor der Ausführung des ACP-Tools erzielt wurden.
  7. Suchen Sie nach dem Rootbenutzernamen.
    Abbildung 5. Neue Suche nach Rootbenutzernamen
    Die Abbildung zeigt eine Suche nach Rootbenutzernamen, die innerhalb eines bestimmten Zeitrahmens ausgeführt wird.
    Anmerkung: Einige meiner Indizes wurden nicht neu generiert. Die regulären minutenweise eigenschaftsbasierten Indizes werden erstellt, aber die Superindizes werden nie generiert und die Freitextsuche /Lucene wird auch nicht generiert. (Bekanntes Problem) Glücklicherweise haben wir für uns das Tool /opt/qradar/bin/ariel_offline_indexer.sh !

Syntax für das Offline-Indexer-Script

Verwenden Sie /opt/qradar/bin/ariel_offline_indexer.sh , um die Superindizes zu generieren.

Usage is:
[root@m5arch06 store]# /opt/qradar/bin/ariel_offline_indexer.sh --help
usage: options
 -R,--repair         re-build corrupted super indices
 -d,--duration       time duration to look files for in minutes, for
                     example -d 5
 -n,--name           ariel data base name, for example -n events
 -t,--endtime        end time, for example -t "2018/08/28 11:00",
                     optional, by default current system time
 -F,--renamefrom     rename from (internal use)
 -L,--light          load minimal QRadar frameworks
 -T,--renameto       rename to (internal use)
 -V,--validate       validate super indices
 -a,--auto           backfill all active indexes
 -b,--batchmode      run in batch mode with options in a file
 -f,--fts            create free text search indices
 -h,--help           print this message
 -k,--key            property java class name
 -l,--list           list all enabled indices from the configuration
 -p,--param          optional paramiter for property (key creator
                     construction)
 -r,--remove         remove indices for a property
 -s,--superindices   create super indices from the minute indices
 -v,--verbose        verbose (optional, default = false)
 -w,--threads        maximum number of threads to produce minute indices
                     if requested, default is 48
[root@m5arch06 store]#
Der Freitextindex und die Superindizes werden durch Eingabe des folgenden Befehls neu generiert:
[root@m5arch06 store]# /opt/qradar/bin/ariel_offline_indexer.sh -n events -t "2018/08/28 10:00" -d 60 -f -s

2018/08/28 11:04	Running command [-n, events, -t, 2018/08/28 10:00, -d, 60, -f, -s] ...
Trying to index dir: /store/ariel/events/records/2018/8/28/9/lucene[18-08-28,09:00:00]
Completed indexing dir: /store/ariel/events/records/2018/8/28/9/lucene[18-08-28,09:00:00]

All done in 0:02:39.840
[root@m5arch06 store]#

Jetzt sind unsere Freitextindizes und Superindizes gefüllt.