Dateien mit Tripwire überwachen

LinuxBeginner
Jetzt üben

Einführung

In diesem Lab lernen Sie den Umgang mit Tripwire, einem leistungsstarken Host-basierten Intrusion Detection System (HIDS), um die Integrität Ihrer Dateien zu überwachen. Tripwire erstellt zunächst eine Referenzdatenbank (Baseline) Ihrer Systemdateien und scannt diese anschließend regelmäßig, um Hinzufügungen, Löschungen oder Änderungen zu erkennen. Dieser Prozess ist entscheidend, um unbefugte Änderungen zu identifizieren und die Systemsicherheit zu gewährleisten.

Sie werden den gesamten Prozess durchlaufen: von der initialen Konfiguration der Sicherheitsschlüssel über die Anpassung der Überwachungsrichtlinien bis hin zur Erstellung der Baseline, der Erkennung von Änderungen und der Auswertung von Berichten.

Tripwire-Schlüssel konfigurieren

Willkommen zum Lab. Das Paket tripwire wurde in Ihrer Umgebung bereits vorinstalliert, um Zeit zu sparen. Ihre erste Aufgabe besteht darin, die kryptografischen Schlüssel zu konfigurieren, die Tripwire zum Schutz seiner Datenbank und Konfigurationsdateien verwendet. Diese Schlüssel stellen sicher, dass ein Angreifer die Tripwire-eigenen Dateien nicht manipulieren kann, um seine Spuren zu verwischen.

  1. Überprüfen Sie zunächst, ob Tripwire installiert ist, indem Sie die Version abfragen.

    tripwire --version
    

    Sie sollten eine Ausgabe sehen, die die installierte Version von Tripwire anzeigt.

    Tripwire(R) 2.4.3.7
    (i686-pc-linux-gnu)
    ...
    
  2. Erzeugen Sie als Nächstes die kryptografischen Schlüssel manuell mit twadmin. Sie müssen sowohl einen Site-Key als auch einen Local-Key erstellen. Der Site-Key schützt die Richtlinien- und Konfigurationsdateien, während der Local-Key die Datenbank auf dem lokalen Rechner schützt.

    Erzeugen Sie zuerst den Site-Key:

    sudo twadmin --generate-keys --site-keyfile /etc/tripwire/site.key
    

    Falls die Schlüsseldatei bereits existiert, werden Sie gefragt, ob Sie diese überschreiben möchten. Geben Sie y ein und drücken Sie die Eingabetaste.

    Wenn Sie nach der Passphrase für den Site-Key gefragt werden, geben Sie labex-password ein. Bestätigen Sie die Passphrase durch erneute Eingabe.

    Hinweis: Die Eingabe der Passphrase ist aus Sicherheitsgründen verborgen – Sie sehen beim Tippen keine Zeichen, aber das System registriert Ihre Eingabe.

  3. Erzeugen Sie nun den Local-Key:

    sudo twadmin --generate-keys --local-keyfile /etc/tripwire/$(hostname)-local.key
    

    Geben Sie auch hier bei einer eventuellen Überschreibungsabfrage y ein.

    Wenn Sie nach der Passphrase für den Local-Key gefragt werden, geben Sie labex-password ein und bestätigen Sie diese. Denken Sie daran, dass die Eingabe unsichtbar bleibt.

    Nachdem Sie die Passphrasen eingegeben haben, werden beide Schlüssel generiert und im Verzeichnis /etc/tripwire/ gespeichert. Dieser Vorgang kann einige Minuten in Anspruch nehmen.

Überwachungsrichtlinie anpassen

Bevor Sie die initiale Datenbank (die Baseline) erstellen, müssen Sie festlegen, welche Dateien und Verzeichnisse Tripwire überwachen soll. Aufgrund von Kompatibilitätsproblemen mit der Standard-Richtliniendatei, die bei der Initialisierung zu Speicherfehlern (Segmentation Faults) führen können, erstellen Sie eine vereinfachte Richtlinie. Diese konzentriert sich auf wesentliche Systemdateien und Ihr Projektverzeichnis.

  1. Erstellen Sie zunächst eine Sicherungskopie der ursprünglichen Richtliniendatei.

    sudo cp /etc/tripwire/twpol.txt /etc/tripwire/twpol.txt.bak
    
  2. Erstellen Sie eine neue, vereinfachte Richtliniendatei, die problematische virtuelle Dateisysteme ausspart.

    sudo nano /etc/tripwire/twpol-simple.txt
    
  3. Fügen Sie den folgenden Inhalt in die Datei ein. Diese Richtlinie überwacht wichtige Systemdateien und Ihr Projektverzeichnis, vermeidet jedoch Pfade, die Initialisierungsfehler verursachen könnten:

    #
    ## Simplified Tripwire Policy File for Lab Environment
    #
    
    @@section GLOBAL
    TWBIN = /usr/sbin;
    TWETC = /etc/tripwire;
    TWVAR = /var/lib/tripwire;
    
    @@section FS
    
    SEC_CRIT      = $(IgnoreNone)-SHa ;
    SEC_BIN       = $(ReadOnly) ;
    SEC_CONFIG    = $(Dynamic) ;
    SEC_LOG       = $(Growing) ;
    SEC_INVARIANT = +tpug ;
    SIG_LOW       = 33 ;
    SIG_MED       = 66 ;
    SIG_HI        = 100 ;
    
    (
      rulename = "Tripwire Binaries",
      severity = $(SIG_HI)
    )
    {
        $(TWBIN)/siggen         -> $(SEC_BIN) ;
        $(TWBIN)/tripwire       -> $(SEC_BIN) ;
        $(TWBIN)/twadmin        -> $(SEC_BIN) ;
        $(TWBIN)/twprint        -> $(SEC_BIN) ;
    }
    
    (
      rulename = "Tripwire Data Files",
      severity = $(SIG_HI)
    )
    {
        $(TWVAR)/$(HOSTNAME).twd    -> $(SEC_CONFIG) -i ;
        $(TWETC)/tw.pol             -> $(SEC_BIN) -i ;
        $(TWETC)/tw.cfg             -> $(SEC_BIN) -i ;
        $(TWETC)/$(HOSTNAME)-local.key  -> $(SEC_BIN) ;
        $(TWETC)/site.key           -> $(SEC_BIN) ;
        $(TWVAR)/report             -> $(SEC_CONFIG) (recurse=0) ;
    }
    
    (
      rulename = "Critical system files",
      severity = $(SIG_HI)
    )
    {
        /bin            -> $(SEC_BIN) ;
        /sbin           -> $(SEC_BIN) ;
        /etc/passwd     -> $(SEC_CONFIG) ;
        /etc/shadow     -> $(SEC_CONFIG) ;
    }
    
    (
      rulename = "Lab Project Files",
      severity = $(SIG_HI)
    )
    {
      /home/labex/project        -> $(SEC_BIN) ;
    }
    
  4. Speichern Sie die Datei und beenden Sie nano mit Strg + O, gefolgt von Enter und schließlich Strg + X.

  5. Ersetzen Sie die ursprüngliche Richtliniendatei durch Ihre vereinfachte Version.

    sudo cp /etc/tripwire/twpol-simple.txt /etc/tripwire/twpol.txt
    

Sie haben nun eine vereinfachte Überwachungsrichtlinie erstellt, die in der Lab-Umgebung zuverlässig funktioniert. Im nächsten Schritt werden Sie diese Richtlinie verwenden, um die initiale Datenbank zu erstellen.

Tripwire-Datenbank initialisieren

Nachdem die vereinfachte Richtlinie bereitsteht, können Sie nun die Tripwire-Datenbank erstellen. Diese Datenbank dient als "bekanntermaßen guter" Referenzzustand (Baseline) Ihres Systems. Tripwire wird den aktuellen Zustand Ihrer Dateien mit dieser Baseline vergleichen, um Änderungen zu erkennen.

  1. Erstellen Sie zunächst die Konfigurationsdatei mit Ihrem neuen Site-Key neu, um die Kompatibilität sicherzustellen.

    sudo twadmin --create-cfgfile --site-keyfile /etc/tripwire/site.key /etc/tripwire/twcfg.txt
    

    Sie werden nach der Passphrase für den Site-Key gefragt. Geben Sie labex-password ein.

  2. Konvertieren Sie die Text-Richtliniendatei in das signierte Binärformat, das Tripwire verwendet.

    sudo twadmin --create-polfile /etc/tripwire/twpol.txt
    

    Geben Sie erneut die Passphrase für den Site-Key (labex-password) ein.

  3. Initialisieren Sie die Datenbank. Dieser Befehl scannt alle in Ihrer Richtlinie angegebenen Dateien und Verzeichnisse und protokolliert deren kryptografische Signaturen und Attribute.

    sudo tripwire --init
    

    Sie werden nach der Passphrase für den Local-Key gefragt. Geben Sie labex-password ein.

  4. Während der Initialisierung sehen Sie möglicherweise eine Warnung, dass die Datenbankdatei anfangs nicht existiert:

    #### Warning: File system error.
    #### Filename: /var/lib/tripwire/68b1139d06fc790d9895e107.twd
    #### No such file or directory
    #### Continuing...
    

    Dies ist bei der ersten Initialisierung normal und zu erwarten. Der Prozess wird fortgesetzt und die Datenbankdatei erstellt.

  5. Sobald der Vorgang abgeschlossen ist, überprüfen Sie, ob die Datenbankdatei erstellt wurde.

    ls -l /var/lib/tripwire/
    

    Sie sollten eine Datei sehen, die nach dem Hostnamen Ihres Rechners benannt ist und die Endung .twd hat (z. B. 68b1139d06fc790d9895e107.twd). Die Existenz dieser Datei bestätigt, dass Ihre Baseline-Datenbank erfolgreich erstellt wurde.

    total 8
    -rw-r--r-- 1 root root 4164 Aug 29 11:00 68b1139d06fc790d9895e107.twd
    drwxr-xr-x 2 root root    6 Nov 11  2021 report
    

Ihr Tripwire-System ist nun ordnungsgemäß mit einer Referenzdatenbank initialisiert. Zukünftige Änderungen an den überwachten Dateien werden erkannt, sobald Sie Integritätsprüfungen durchführen.

Dateiänderungen erkennen und melden

Da Tripwire nun über eine Baseline verfügt, können Sie die Erkennung von Änderungen testen. Sie werden eine neue Datei in Ihrem Projektverzeichnis erstellen, um zu sehen, wie Tripwire Modifikationen in überwachten Bereichen registriert.

  1. Erstellen Sie zunächst eine neue Datei im Verzeichnis project. Dies ist ein Verzeichnis, das Sie explizit in die Überwachungsrichtlinie aufgenommen haben.

    touch ~/project/test_file.txt
    
  2. Führen Sie nach der Änderung eine Integritätsprüfung durch. Tripwire scannt das System und vergleicht es mit der Baseline-Datenbank.

    sudo tripwire --check
    

    Sie werden nach der Passphrase für den Local-Key gefragt. Geben Sie labex-password ein.

  3. Nach Abschluss des Scans erstellt Tripwire einen Bericht und gibt eine Zusammenfassung in der Konsole aus. Die Zusammenfassung hebt Objekte hervor, die hinzugefügt oder geändert wurden. Sie sollten eine Ausgabe ähnlich der folgenden sehen:

    ===============================================================================
    Rule Summary:
    ===============================================================================
    
      Rule Name                       Severity Level    Added    Removed  Modified
      ---------                       --------------    -----    -------  --------
      Tripwire Binaries               100               0        0        0
      Critical system files           100               0        0        0
    * Tripwire Data Files             100               1        0        0
    * Lab Project Files               100               1        0        1
      (/home/labex/project)
    
    Total objects scanned:  16
    Total violations found:  3
    
    ===============================================================================
    Object Summary:
    ===============================================================================
    
    -------------------------------------------------------------------------------
    Rule Name: Lab Project Files (/home/labex/project)
    Severity Level: 100
    -------------------------------------------------------------------------------
    
    Added:
    "/home/labex/project/test_file.txt"
    
    Modified:
    "/home/labex/project"
    
  4. Der Bericht zeigt, dass Tripwire Folgendes erkannt hat:

    • Added: Die neue Datei test_file.txt in Ihrem Projektverzeichnis.
    • Modified: Das Verzeichnis /home/labex/project selbst (da sich sein Inhalt geändert hat).
    • Tripwire Data Files: Die Datenbankdatei wurde ebenfalls als "hinzugefügt" markiert, da dies die erste Prüfung seit der Initialisierung ist.

Diese Ausgabe bestätigt, dass Tripwire die von Ihnen vorgenommenen Änderungen am Dateisystem erfolgreich erkannt hat.

Integritätsbericht im Detail prüfen

Die Zusammenfassung des Befehls --check bietet einen guten Überblick, aber für eine detaillierte Analyse können Sie die vollständige Berichtsdatei einsehen. Diese Berichte werden in einem Binärformat gespeichert und müssen mit dem Dienstprogramm twprint gelesen werden.

  1. Listen Sie zunächst den Inhalt des Berichtsverzeichnisses auf, um den Namen des neuesten Berichts zu finden. Berichte enthalten einen Zeitstempel im Dateinamen.

    sudo ls -lt /var/lib/tripwire/report/
    

    Die Ausgabe listet die Berichtsdateien auf, wobei die neueste oben steht. Notieren Sie sich den Dateinamen, der normalerweise dem Format hostname-YYYYMMDD-HHMMSS.twr folgt.

    total 4
    -rw------- 1 root root 3456 Aug 29 11:02 68b1139d06fc790d9895e107-20250829-110252.twr
    
  2. Verwenden Sie den Befehl twprint, um den Bericht in einem menschenlesbaren Format anzuzeigen. Ersetzen Sie [REPORT_FILENAME] durch den tatsächlichen Dateinamen, den Sie im vorherigen Schritt ermittelt haben.

    sudo twprint --print-report --twrfile /var/lib/tripwire/report/[REPORT_FILENAME]
    

    Beispiel:

    sudo twprint --print-report --twrfile /var/lib/tripwire/report/68b1139d06fc790d9895e107-20250829-110252.twr
    
  3. Der detaillierte Bericht zeigt dieselben Informationen wie die Zusammenfassung, jedoch mit zusätzlichen Metadaten:

    Report created on:            Fri Aug 29 11:02:52 2025
    Database last updated on:     Never
    
    Host name:                    68b1139d06fc790d9895e107
    Host IP address:              172.18.0.8
    Policy file used:             /etc/tripwire/tw.pol
    Configuration file used:      /etc/tripwire/tw.cfg
    Database file used:           /var/lib/tripwire/68b1139d06fc790d9895e107.twd
    Command line used:            tripwire --check
    

    Der Bericht liefert umfassende Details zu jeder Änderung, einschließlich Zeitstempeln, Dateieigenschaften und Prüfsummen. Diese Detailtiefe ist für forensische Analysen unerlässlich, um genau zu verstehen, welche Änderungen auf Ihrem System stattgefunden haben.

  4. Sie können auch eine noch detailliertere Version mit Dateiattributen anzeigen, indem Sie das Flag --verbose verwenden:

    sudo twprint --print-report --verbose --twrfile /var/lib/tripwire/report/[REPORT_FILENAME]
    

    Dies zeigt zusätzliche Informationen wie Dateiberechtigungen, Eigentümer, Größe und verschiedene kryptografische Hashes für jede erkannte Änderung an.

Das Verständnis dieser Berichte ist für Systemadministratoren essenziell, um potenzielle Sicherheitsvorfälle zu untersuchen und die Systemintegrität zu wahren.

Zusammenfassung

In diesem Lab haben Sie die Grundlagen der Dateiintegritätsüberwachung mit Tripwire kennengelernt. Sie haben erfolgreich die Sicherheitsschlüssel von Tripwire konfiguriert, die Überwachungsrichtlinie um ein spezifisches Projektverzeichnis ergänzt und eine Referenzdatenbank des Dateizustands Ihres Systems erstellt.

Darüber hinaus haben Sie den typischen Arbeitsablauf eines Systemadministrators geübt: Sie haben absichtlich Dateien geändert, eine Integritätsprüfung durchgeführt, um diese Änderungen zu erkennen, und den detaillierten Bericht analysiert, um die Modifikationen nachzuvollziehen. Diese Fähigkeiten sind grundlegend für die Aufrechterhaltung der Systemsicherheit und die Erkennung unbefugter Aktivitäten.