GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Sicherheitsüberwachung unter Linux mit Tripwire

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. ]


Linux
  1. Überleben eines Sicherheitsaudits mit Enterprise Linux

  2. Linux-Sicherheit:Schützen Sie Ihre Systeme mit fail2ban

  3. Balance zwischen Linux-Sicherheit und Benutzerfreundlichkeit

  4. Linux-Sicherheit:Manipulation von SELinux-Richtlinien mit Booleschen Werten

  5. Erste Schritte mit SSH unter Linux

Überwachung von Linux- und Windows-Hosts mit Glances

Linux-Sicherheitsaudit mit Lynis

Überwachung der Bandbreite unter Linux mit Nethogs

Überwachung von Linux-Servern mit iPhone/iPad

Melden Sie sich unter Linux und macOS mit einem privaten SSH-Schlüssel an

Linux vs. Windows-Sicherheit