Jeder Systemadministrator verliert hin und wieder den Schlaf wegen Systemeinbrüchen. Niemand möchte, dass ein Server, für den er verantwortlich ist, kompromittiert wird. Das Problem ist, dass, obwohl Sie Protokolle regelmäßig überprüfen können, ein wirklich effektiver Systemeinbruch keine offensichtlichen Protokolle herumliegen lässt. Dies macht es schwierig, definitiv zu wissen, ob Ihre Systeme sicher sind.
Zusätzlich zum Festlegen von SELinux auf Erzwingen und regelmäßige Pentests durchzuführen, ist eine der besten Möglichkeiten, Ihr System auf Sicherheitsverletzungen zu überwachen, – nun, Ihr System auf Sicherheitsverletzungen zu überwachen. Wenn das leichter gesagt als getan scheint, dann müssen Sie Tripwire ausprobieren. Tripwire ist ein Tool zur Überwachung der Dateiintegrität, das auf Änderungen an kritischen Dateien auf Ihrem System achtet. Dieser Artikel zeigt Ihnen, wie Sie Tripwire in Ihrem Netzwerk installieren, einrichten und verwenden.
Tripwire ist sowohl ein Unternehmen als auch eine Open-Source-Codebasis. Sie können die Überwachung von Tripwire erwerben oder den GPLv2-Code verwenden, den sie auf GitHub zur Verfügung gestellt haben. Es gelten die üblichen Kompromisse. Wenn Sie dafür bezahlen, erledigt Tripwire die meiste harte Arbeit für Sie, und Sie müssen nur auf die Berichte achten. Wenn Sie Tripwire selbst implementieren, können Sie es selbst einrichten und konfigurieren.
Installieren
Um Tripwire auf RHEL oder CentOS zu installieren, müssen Sie das EPEL-Repository (Extra Packages for Enterprise Linux) hinzufügen. Unter RHEL 8 müssen Sie den codeready-builder
aktivieren Option im subscription-manager
:
$ sudo repos --enable "codeready-builder-for-rhel-8-$(arch)-rpms"
Unter CentOS sollten Sie PowerTools
aktivieren :
$ sudo dnf config-manager --set-enabled PowerTools
Zum Installieren:
$ sudo dnf install -y epel-release
Wenn EPEL jetzt zu Ihrer Repository-Liste hinzugefügt wurde, installieren Sie Tripwire
:
$ sudo dnf install -y tripwire
Festlegen eines Hostnamens
Bevor Sie Tripwire konfigurieren, sollten Sie einen Hostnamen für Ihren Server festlegen, falls er noch keinen hat. Hostnamen sorgen häufig für Verwirrung, also lesen Sie meinen Artikel über das Festlegen von Hostnamen, um sicherzustellen, dass Sie sich darüber im Klaren sind, was Sie festlegen. Unter CentOS, RHEL und Fedora können Sie einen Hostnamen mit hostnamectl
festlegen :
$ sudo hostnamectl set-hostname --pretty "Rockhopper tripwire demo machine"
$ sudo hostnamectl set-hostname --static rockhopper
Schlüssel generieren
Als Nächstes müssen Sie Verschlüsselungsschlüssel für Tripwire generieren. Schließlich soll Tripwire verhindern, dass Angreifer ihre Spuren verwischen, daher müssen Tripwire-Daten stark verschlüsselt werden.
Erstellen Sie zuerst einen lokalen Schlüssel mit dem twadmin
Werkzeug:
$ sudo twadmin --generate-keys --local-keyfile /etc/tripwire/$(hostname)-local.key
Erstellen Sie als Nächstes einen Site-Schlüssel:
$ sudo twadmin --generate-keys --site-keyfile /etc/tripwire/site.key
In beiden Fällen müssen Sie für jeden Schlüssel eine Passphrase angeben. Bewahren Sie diese Passphrasen privat und sicher auf!
Tripwire verwendet zwei verschiedene Schlüssel für die Verschlüsselung:den lokalen Schlüssel, der für jeden Server eindeutig ist, und einen Standortschlüssel, den Sie auf allen Systemen innerhalb Ihrer Organisation verwenden können. Der Site-Schlüssel ist ein wichtiges Feature, da er es einem IT-Manager ermöglicht, eine einzige Sicherheitsrichtlinie für die Organisation vorzugeben, und sie kann zentral aktualisiert, mit dem Site-Schlüssel signiert und dann mit Ansible oder scp
verteilt werden für den Einsatz auf jedem Server. Jeder Serveradministrator hat jedoch immer noch einen eindeutigen lokalen Schlüssel, sodass er, obwohl die Sicherheitsrichtliniendatei nicht geändert werden kann, immer noch auf Tripwire zugreifen kann, um Updates und Berichte zu erhalten.
Tripwire-Konfigurationsdatei
Als nächstes müssen Sie eine grundlegende Konfigurationsdatei für Tripwire erstellen. Die meisten Standardeinstellungen in der Konfiguration sind akzeptabel und nichts braucht geändert werden, es sei denn, Sie wissen, dass sich Ihr System erheblich von dem unterscheidet, was Sie in der Beispielkonfigurationsdatei unter /etc/tripwire/twcfg.txt
sehen . Standardmäßig verwendet Tripwire sendmail
um Ihnen Benachrichtigungen per E-Mail zu senden. Wenn Sie Postfix verwenden, müssen Sie es jedoch nicht ändern, da postfix
bietet sendmail
Pseudonyme. In der Konfigurationsdatei sind auch die Speicherorte Ihrer Verschlüsselungsschlüssel und der Richtliniendatei definiert, also überprüfen Sie, ob diese korrekt sind.
Wenn Sie mit den Konfigurationsoptionen zufrieden sind, verwenden Sie twadmin
um den Konfigurationstext zu validieren und in eine Datei namens /etc/tripwire/tw.cfg
zu schreiben , die mit dem Standortschlüssel signiert ist. Zum Signieren der Konfigurationsdatei ist die Passphrase für Ihren Site-Schlüssel erforderlich.
$ sudo twadmin --create-cfgfile --site-keyfile=/etc/tripwire/site.key /etc/tripwire/twcfg.txt
Please enter your site passphrase:
Wrote configuration file: /etc/tripwire/tw.cfg
Syntax der Richtliniendatei
In der Richtliniendatei investieren Sie die meiste Arbeit für Tripwire. Ihre Tripwire-Richtlinie schreibt vor, welche Dateien überwacht und welche ignoriert werden sollen und welche irgendwo dazwischen liegen. Beide Extreme sind gleich wichtig. Wenn Ihre täglichen Tripwire-Berichte für jede einzelne Benutzerdatei, die sich im Laufe eines Arbeitstages ändert, ein falsches positives Ergebnis liefern, werden Sie schnell lernen, Ihre Tripwire-Berichte vollständig zu ignorieren.
Die Beispielrichtliniendatei, die mit der EPEL-Installation von Tripwire gebündelt ist, basiert auf einer vollständigen Installation einer Fedora-Workstation. Sie müssen es für Ihr System anpassen, es sei denn, Sie führen eine vollständige Installation von Fedora Workstation aus, aber wenn Sie es lesen, erhalten Sie eine Vorstellung davon, was eine Standardrichtliniendatei enthält. Um die Tripwire-Notation zu entschlüsseln, überprüfen Sie die twpolicy(4)
Manpage.
Richtliniendateien können komplex sein, und es könnte hilfreich sein, sie sich eher wie einen Sass
vorzustellen oder Makefile
als eine Konfigurationsdatei. Sie können variables
erstellen , oder verwenden Sie einige Standardregeln und rules
, und sogar conditionals
um festzulegen, wie Tripwire einzelne Verzeichnisse und Dateien behandelt.
Zum Beispiel ReadOnly
Variable definiert eine Regel für Dateien, die schreibgeschützt sein sollen. In diesem Zusammenhang bedeutet „schreibgeschützt“ nicht, dass die Dateiberechtigungen auf r--
gesetzt sind (also 400
), aber dass ab dem Zeitpunkt der Initialisierung von Tripwire zu einem täglichen Bericht oder einem Bericht auf täglicher Basis im Allgemeinen keine Änderung zu erwarten ist.
Eine Regel ist als Zeile aufgebaut, die durch ein Semikolon abgeschlossen wird (;
) und durch einen Pfeil begrenzt (->
). Dieser Codeblock setzt die ausführbaren Tripwire-Dateien auf ReadOnly
:
/sbin/siggen -> $(ReadOnly);
/sbin/tripwire -> $(ReadOnly);
/sbin/twadmin -> $(ReadOnly);
/sbin/twprint -> $(ReadOnly);
Die Beispieldatei von Fedora verwendet Variablen, um die meisten Regeln zu definieren. Zum Beispiel:
SEC_BIN = $(ReadOnly) ; # Binaries that should not change
Seine Einträge zur Überwachung von Tripwire-Binärdateien sind also:
/sbin/siggen -> $(SEC_BIN);
/sbin/tripwire -> $(SEC_BIN);
/sbin/twadmin -> $(SEC_BIN);
/sbin/twprint -> $(SEC_BIN);
Die beiden Beispiele dienen genau demselben Zweck, und die Implementierung ist nur unterschiedlich.
Verwenden Sie die Musterrichtliniendatei als Ausgangspunkt und erstellen Sie eine Richtlinie zur Überwachung Ihres Systems.
Generieren einer Richtliniendatei
Fügen Sie diese Zeile ausschließlich zu Testzwecken zu den Tripwire-Datendateien hinzu Abschnitt:
/etc/tripwire/secrets -> $(SEC_CRIT); # proof of concept
Erstellen Sie eine kritische Testdatei namens secrets
:
$ sudo touch /etc/tripwire/secrets
Generieren Sie Ihre Richtliniendatei mit twadmin
:
$ sudo twadmin --create-polfile \
--site-keyfile=/etc/tripwire/site.key \
/etc/tripwire/twpol.txt
Geben Sie die Passphrase Ihres Site-Schlüssels ein, wenn Sie dazu aufgefordert werden.
Das Ergebnis ist eine signierte und verschlüsselte Datei /etc/tripwire/tw.pol
.
Tripwire wird initialisiert
Mit Ihren generierten Schlüsseln, Ihrem Konfigurationssatz und einer Richtliniendatei können Sie jetzt Tripwire initialisieren:
$ sudo tripwire --init
Geben Sie Ihren Ortsnamen ein Schlüssel-Passphrase, wenn Sie dazu aufgefordert werden.
Wenn Sie Warnungen sehen, lesen Sie diese sorgfältig durch und korrigieren Sie die fehlerhaften Einträge in Ihrer Richtliniendatei. Es ist nicht ungewöhnlich, dass Ihr erster Versuch, eine Richtliniendatei zu erstellen, insbesondere wenn sie auf einer vorhandenen basiert, auf Dateien verweist, die nicht wirklich auf Ihrem System vorhanden sind. Sie können damit umgehen, indem Sie die fehlenden Dateien installieren oder die Verweise darauf aus Ihrer /etc/tripwire/twpol.txt
entfernen Masterdatei.
Wenn Sie Änderungen vornehmen mussten, aktualisieren Sie Ihre Richtliniendatei, indem Sie sie neu generieren, und initialisieren Sie dann Ihre Datenbank neu:
$ sudo twadmin --create-polfile \
--site-keyfile=/etc/tripwire/site.key \
/etc/tripwire/twpol.txt
$ sudo tripwire --init
Dies sollten Sie tun, bis Sie einen guten Startplatz erreicht haben. Sobald Sie eine vernünftige Ausgangsdatenbank haben, sollten Sie Ihre Datenbank nicht neu initialisieren, sondern stattdessen den tripwire
verwenden Befehl, um die Integrität Ihres Systems zu überprüfen und optional akzeptable Unterschiede mit --interactive
zu überschreiben Möglichkeit:
$ sudo tripwire --check --interactive
Anzeigen von Berichten
Die EPEL-Installation von Tripwire erstellt cron
Jobs, um Tripwire-Berichte auszuführen und Berichte per E-Mail an root
zu senden . Sie können auch einen manuellen Bericht erstellen:
$ sudo tripwire --check
Dieser Befehl speichert eine Berichtsdatei unter /var/lib/tripwire/reports
(oder welchen Speicherort Sie in der Konfigurationsdatei festgelegt haben). Verwenden Sie zum Anzeigen dieser Datei den twprint
Befehl:
$ sudo twprint --print-report --report-level 1 \
--twrfile /var/lib/tripwire/reports/`hostname`-20200317-163425.twr
Um einen Bericht mit einem Fehler anzuzeigen, ändern Sie die secrets
Testdatei und führen Sie einen Bericht aus:
$ sudo echo 1 > /etc/tripwire/secrets
$ sudo tripwire --check
Sehen Sie sich dann den Bericht an:
$ sudo twprint --print-report --report-level 1 \
--twrfile /var/lib/tripwire/reports/`hostname`-20200317-164413.twr
Added: "/var/lib/tripwire/rockhopper.twd.bak
Modified: "/etc/tripwire/secrets"
Vorausgesetzt, Sie sind mit der Änderung Ihrer Testdatei zufrieden, können Sie die Datenbank von Tripwire aktualisieren:
$ sudo tripwire --update \
--twrfile /var/lib/tripwire/reports/`hostname`-20200317-164413.twr
Schützen Sie Ihre Systeme
Tripwire ist ein hochpräziser und äußerst umständlicher Sicherheitsmonitor. Hören Sie auf, Protokolle nach Anzeichen von Eindringlingen zu durchsuchen, und lassen Sie Tripwire für sich arbeiten. Mit Tripwire wissen Sie Bescheid, wenn sich etwas an einem System ändert, und können entsprechend reagieren.
[ Möchten Sie mehr über Sicherheit erfahren? Sehen Sie sich die Checkliste für IT-Sicherheit und Compliance an. ]