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

So richten Sie tlog auf Linux-Hosts für die Terminalprotokollierung ein

Terminal-Protokollierung mag wie ein Eingriff in die Privatsphäre klingen, aber es gibt viele Gründe, warum Sie wissen möchten, welche Befehle Ihre Benutzer ausführen. Ob aus Compliance-Gründen oder einfach nur für eine gute Systemadministration, manchmal möchten Sie einfach wissen, was Ihre Benutzer tun. Wenn Sie eine Flotte von Linux-Systemen verwalten und wissen müssen, was die Leute vorhaben, denen Sie eine Shell anvertraut haben, sollten Sie vielleicht tlog in Betracht ziehen . tlog ist ein Terminal-E/A-Logger, der in RHEL und mehreren anderen Distributionen enthalten ist. Es protokolliert mehr als nur Tastenanschläge; Es protokolliert auch die empfangene Ausgabe. Es kann verwendet werden, um eine Sitzung buchstäblich wiederzugeben.

In diesem Artikel führe ich Sie durch einen grundlegenden tlog Konfiguration und demonstrieren Sie etwas von der Macht, die es ausübt. Linux ist ziemlich gut darin, Aktionen zu protokollieren. Es kann beispielsweise Befehle protokollieren, die über sudo ausgeführt wurden . Die sichere log kann Ihnen mitteilen, wer sich angemeldet hat oder wer sich nicht angemeldet hat, aber nichts standardmäßiges protokolliert zentral jede Aktion von einem nicht privilegierten Benutzer übernommen. Ja, die meisten Shells führen einen Verlauf, aber Benutzer können diesen ändern oder sogar löschen, wenn sie wissen, was sie tun. Das tlog Das Dienstprogramm selbst ist nicht narrensicher, aber eine zusätzliche Protokollierungsschicht kann nicht schaden. Es hat jedoch seine Einschränkungen und Bedenken, die in der unten verlinkten Red Hat-Dokumentation beschrieben werden. Auch tlog meldet sich in JSON an, damit es später analysiert oder sogar wiedergegeben werden kann.

Mein Ziel ist es, Ihnen die Leistungsfähigkeit von tlog zu zeigen zusammen mit Cockpit. Cockpit ist, falls Sie es nicht wissen, eine Webverwaltungsschnittstelle, die in RHEL enthalten ist. Die Verwendung von Cockpit ist optional und wenn Sie tlog verwenden möchten ohne, das ist gut so. Überspringen Sie einfach die Anleitungsschritte, die die Cockpit-Konfiguration beinhalten.

[Das könnte Ihnen auch gefallen: Logrotate unter Linux einrichten]

Tlog einrichten

Für diese Anleitung verwende ich ein frisch installiertes minimales RHEL 8.3-System. Die offizielle Red Hat Enterprise Linux 8-Dokumentation zur Terminalprotokollierung finden Sie hier. Für den Einstieg benötigen Sie lediglich ein RHEL 8-System mit einem Abonnement. Dieser Vorgang sollte auch unter CentOS 8 nahezu identisch sein. Installieren Sie tlog und Cockpit und aktivieren Sie dann die Sitzungsaufzeichnung in sssd (dem System Security Services Daemon). Sie können tlog verwenden auf ein paar andere Arten, aber mit diesem Ansatz können Sie tlog verwalten über sssd, statt pro Benutzer.

Installieren Sie zuerst die erforderlichen Pakete:

[root@gangrif-tlogtest ~]# yum install -y tlog cockpit cockpit-session-recording

Sobald die Installation abgeschlossen ist, aktivieren und starten Sie Cockpit:

[root@gangrif-tlogtest ~]# systemctl enable cockpit.socket --now
Created symlink /etc/systemd/system/sockets.target.wants/cockpit.socket → /usr/lib/systemd/system/cockpit.socket.

Sie können Cockpit testen, indem Sie Ihren Webbrowser auf https://your-server's-IP:9090 . Wenn das nicht funktioniert, müssen Sie möglicherweise Cockpit in der hostbasierten oder netzwerkbasierten Firewall aktivieren. In meinem Fall war das nicht nötig.

Als nächstes fügen Sie tlog hinzu zur SSD-Konfiguration. Der sssd-Daemon ermöglicht viele Anpassungen an Ihrem Authentifizierungsstapel, einschließlich Dingen wie Remote-Benutzerverzeichnissen. In diesem Fall verwenden Sie es für lokales tlog Integration. Es gibt einige Möglichkeiten, dies einzurichten. Ich werde tlog hinzufügen Sitzungsaufzeichnung für eine bestimmte Gruppe namens suspicious-users , sodass jeder dieser Gruppe hinzugefügte Benutzer protokolliert wird. Sie können einzelne Benutzer oder alle Benutzer protokollieren, wenn Sie möchten. Fügen Sie die folgende Konfiguration zu /etc/sssd/conf.d/sssd-session-recording.conf hinzu . Stellen Sie sicher, dass diese Datei root:root gehört , und Benutzer/andere können die Datei nicht lesen oder schreiben. Sssd ist aus gutem Grund wählerisch.

[root@gangrif-tlogtest ~]# cat /etc/sssd/conf.d/sssd-session-recording.conf
[session_recording]
scope = some
groups = suspicious-users

Wenn Sie sssd nicht verwenden oder nicht verwenden können, gibt es eine Option, die tlog manuell konfiguriert für Benutzer. Die Option ist in der zuvor erwähnten Dokumentation beschrieben.

Nachdem Sie diese Datei platziert haben, starten Sie sssd neu. Testen Sie jetzt die Konfiguration.

Benutzersitzungen protokollieren

Dieser Gangrif Benutzer, er sieht verdächtig aus. Fügen Sie ihn den verdächtigen Benutzern hinzu gruppieren Sie diesen tlog ist für die Aufnahme konfiguriert.

[root@gangrif-tlogtest tlog]# groupmems -g suspicious-users -a gangrif
[root@gangrif-tlogtest ~]# id gangrif
uid=1000(gangrif) gid=1000(gangrif) groups=1000(gangrif),10(wheel),1001(suspicious-users)

Wenn Sie sich als gangrif anmelden , wird ein nettes Warnbanner angezeigt, das anzeigt, dass Sie beobachtet werden. Dieses Banner kann über den Hinweis geändert oder entfernt werden Direktive in /etc/tlog/tlog-rec-session.conf . Möglicherweise müssen Sie den Benutzern mitteilen, dass sie überwacht werden. Für mich tlog ist leistungsstärker, wenn Sie einen potenziellen Angreifer nicht darüber informieren, dass er überwacht wird. Indem Sie ihnen mitteilen, was Sie eingerichtet haben, wissen sie nur, was sie zu deaktivieren versuchen sollen.

[nlager@batou-lan ~]$ ssh [email protected]
[email protected]'s password:
Web console: https://gangrif-tlogtest.tamlab.rdu2.redhat.com:9090/ or https://10.8.109.214:9090/

Last login: Tue Dec 22 15:29:44 2020 from 10.10.116.62

ATTENTION! Your session is being recorded!

[gangrif@gangrif-tlogtest ~]$

Sehen Sie sich die Sitzung im Cockpit an

Standardmäßig tlog Protokolle im Systemjournal. Der einfachste Weg, Ihre protokollierten Daten wieder herauszuholen, ist die Verwendung des Session-Logging des Cockpits Tafel. Es ist eigentlich ziemlich glatt und gut zusammengesetzt. Sie können eine Sitzung wiedergeben und sehen, welche Befehle eingegeben wurden, einschließlich Tippfehler, eingegebene, aber fehlgeschlagene Befehle oder Befehle, die mit Strg+C geschlossen wurden . Wenn Sie auf die Protokollansicht drücken Schaltfläche zeigt Ihnen dieser Viewer sogar zugehörige Systemprotokolle, die während der Sitzung aktualisiert wurden. Es ist wirklich ein nettes Werkzeug.

Wechseln Sie vom Systemjournal zur Dateiprotokollierung

Wenn Sie Cockpit nicht verwenden, wird das Anzeigen der Protokolle etwas komplizierter, da sich die gesuchten Daten im Systemjournal befinden. In diesem Fall fand ich es am einfachsten, einfach tlog zu wechseln zur Aufnahme in eine Datei übergehen. Sie könnten sich auch in Syslog protokollieren, was einen ähnlichen Effekt hätte und möglicherweise einfacher zu warten wäre. Der Einfachheit halber werde ich einfach direkt in eine Datei schreiben. Ich sollte Sie warnen, dass sich tlog bewegt loggt sich aus dem Systemjournal aus und in eine Datei unterbricht die Cockpit-Integration.

Erstellen Sie zunächst einen Ort zum Speichern der Dateien und stellen Sie sicher, dass das tlog darauf schreiben kann Benutzer. Ich habe ein Verzeichnis in /var/log hinzugefügt genannt tlog und setzen Sie den Besitz auf tlog:tlog .

Als nächstes in /etc/tlog/tlog-rec-session.conf , sag tlog wo seine Protokolle gespeichert werden. In der Datei finden Sie Zeilengruppen für verschiedene Konfigurationen. Einer trägt die Bezeichnung File Writer Parameters . Mit diesem Parameter können Sie den Pfad für die Ausgabedatei definieren. Die Konfiguration für meinen Pfad sah folgendermaßen aus:

    // File writer parameters
    "file": {
            // The "file" writer log file path.
            "path" : "/var/log/tlog/tlog.log"
    },

Sagen Sie es jetzt tlog um den Dateischreiber anstelle des Standardwertes zu verwenden, der das Journal ist. Unten in der Konfigurationsdatei finden Sie eine Zeile kurz vor dem abschließenden } die ein //"writer":"journal" enthält Einstellung. Ändern Sie diese Einstellung in Datei, so:

        // The type of "log writer" to use for logging. The writer needs
        // to be configured using its dedicated parameters.
        "writer" : "file"
}

Wenn sich Ihr Zielbenutzer das nächste Mal anmeldet, wird die Datei /var/log/tlog/tlog.log erstellt und Sitzungen dort protokolliert werden sollen. Sie sollten die Protokollrotation darauf einrichten, und wenn Sie einen externen Logger haben, sollten Sie diese Datei dorthin senden. Diese Daten sind nur nützlich, wenn sie verfügbar sind, wenn Sie sie benötigen. Wenn ein Angreifer es findet und löscht, nützt es Ihnen nichts.

Sehen Sie sich die Sitzung mit tlog-play an

Sobald Sie diese Protokolle in einer Datei haben, können Sie sie sich ansehen. Sie könnten journalctl verwenden , aber da die Protokolle JSON-formatiert sind, sind sie für Menschen nicht einfach zu lesen. Als Beispiel mein rm -rf Befehlsbeispiel von oben sieht etwa so aus:

{"ver":"2.2","host":"gangrif-tlogtest.tamlab.rdu2.redhat.com","rec":"2a5a7ca40dd6424e91f587c0e012e623-3cf2-1f1e2d","user":"gangrif","term":"xterm-256color","session":31,"id":1,"pos":0,"timing":"=185x50+31>61+136>1+105>1+135>1+193>1+218>1+202>4+161>4+111>1+167>1+181>1+93>1+196>1+1412>2+2>166+1897>1+251>1+208>1+159>1+73>1+110>1+90>1+73>1+119>1+285>1+504>1+143>1+136>1+961>1+175>1+144>1+865>4","in_txt":"","in_bin":[],"out_txt":"\u001b]0;gangrif@gangrif-tlogtest:~\u0007[gangrif@gangrif-tlogtest ~]$ rm rf\b\u001b[K\b\u001b[K-rf /\r\nrm: it is dangerous to operate recursively on '/'\r\nrm: use --no-preserve-root to override this failsafe\r\n\u001b]0;gangrif@gangrif-tlogtest:~\u0007[gangrif@gangrif-tlogtest ~]$ mwahahaha!!!!   \b\u001b[K","out_bin":[]}

Die Informationen sind nicht leicht zu lesen, aber zum Glück gibt es ein Tool, das dies vereinfacht. Sie können tlog-play verwenden mit den im Journal aufgezeichneten Sitzungen, und Sie können die Aufzeichnungs-ID angeben, um diese bestimmte Aufzeichnung auszugeben. Wenn stattdessen eine Datei analysiert wird, funktioniert die Aufzeichnungs-ID nicht. Alle Aufnahmen landen in derselben Datei, und Sie können sie nicht einfach alle abspielen, da die Sitzungs-IDs nicht identisch sind. Du musst sie aufteilen. Sie können die Sitzungs-ID identifizieren, die Sie ansehen möchten, und dann grep diese Session-ID vor tlog-play in eine neue Datei wird damit zufrieden sein. Vielleicht kann Syslog so konfiguriert werden, dass diese Dateien beim Schreiben automatisch geteilt werden.

[root@gangrif-tlogtest tlog]# grep 2a5a7ca40dd6424e91f587c0e012e623-3da9-1fdf38 tlog.log >> session.log
[root@gangrif-tlogtest tlog]# tlog-play -i session.log
[gangrif@gangrif-tlogtest ~]$ rm -rf /
rm: it is dangerous to operate recursively on '/'
rm: use --no-preserve-root to override this failsafe
[gangrif@gangrif-tlogtest ~]$ logout

[root@gangrif-tlogtest tlog]#

Die Sitzung wird anhand der Timing-Daten aus dem JSON-Protokoll auf dem Bildschirm wiedergegeben. Es ist ziemlich glatt. Sie können sich vorstellen, wie nützlich dies bei der Durchführung von Forensiken sein könnte, nachdem ein Ausfall oder eine Kompromittierung erkannt wurde. Sie könnten sogar tlog verwenden für Dinge wie das Aufzeichnen einer Demo von etwas auf der Kommandozeile.

[ Holen Sie sich dieses kostenlose Buch von Red Hat und O'Reilly – Kubernetes Operators:Automating the Container Orchestration Platform. ] 

Abschluss

All dieses Gerede über die Überwachung der Benutzereingaben kann einige Fragen aufwerfen. Werden zum Beispiel Passworteingaben protokolliert? Was ist mit SSH-Sitzungen, die zu einem anderen Host springen? Was ist mit X Sitzungen? Die Dokumentation listet X Sitzungen als Einschränkung auf, aber tlog erfasst sie nicht. Die Passwortprotokollierung ist standardmäßig deaktiviert, kann aber bei Bedarf aktiviert werden.

Ob es also um Compliance geht oder nur um eine schicke Demo einer neuen Technologie aufzuzeichnen, ich hoffe, dieser Artikel hilft Ihnen dabei, die Arbeit mit tlog. zu erledigen


Linux
  1. So legen Sie den System-Hostnamen unter Linux fest oder ändern ihn

  2. So setzen Sie die $Path-Variable in Linux

  3. So legen Sie Proxy-Einstellungen in der Linux-Befehlszeile oder im Terminal fest

  4. So legen Sie die Prozess-ID in Linux für ein bestimmtes Programm fest

  5. Wie lege ich einen Standard-Nick für neue irssi-Verbindungen fest?

So öffnen Sie ein Linux-Terminalfenster

So richten Sie einen Pacemaker-Cluster für Linux mit hoher Verfügbarkeit ein

So legen Sie in Linux für jeden Monitor ein anderes Hintergrundbild fest

So öffnen Sie eine PDF-Datei im Linux-Terminal

So richten Sie einen Linux-Killswitch für VPNs ein

So legen Sie ein externes Netzwerk für Container in Linux-Containern (LXC) fest