Laut der systemd
Dokumentation journalctl
wird dies zum Durchsuchen der Protokolle und nicht des /var/log/*
Dateibaums empfohlen.
Währendman 1 journalctl
beschreibt, wie man es benutzt, ich weiß immer noch nicht, welche Argumente es braucht, um mir die Liste der Dinge zu geben, die ich will. Ich möchte zum Beispiel eine Liste der Benutzeranmeldungen sehen. Ich bin mir bewusstsshd
verwaltet SSH-Logins, aber was ist mit lokalen Anmeldungen und allgemeiner Benutzerauthentifizierung?
Folgendes habe ich versucht:
#shows all logs. huge
journalctl
#limit history and search for "login"
journalctl --since "yesterday" | grep login
#a week ago rather than just a day
journalctl --since `date +"%Y-%m-%d" --date "last week"` | grep login
... systemd-logind[678]: New session 81 of user jozxyqk.
Dies scheint zwar einige Hinweise zu geben, ist aber definitiv nicht die zuverlässigste Methode. Was ist der richtige Weg?
Antwort1
Laufen:
journalctl -q _AUDIT_TYPE=1112 _TRANSPORT=audit
Erläuterung:
Vorausgesetzt, Sie haben das Audit-Subsystem laufen (und das ist der Fall, sofern Sie es nicht deaktiviert haben), ist dies der beste Weg, um diese Art von Informationen zu erhalten, da unter anderem bei Verwendung _TRANSPORT=audit
von Nachrichten nicht wie bei den herkömmlichen Syslog-Sockets gefälscht werden können. Um zu sehenalleder über dieses Transportmittel gesendeten Nachrichten verwenden journalctl -q _TRANSPORT=audit
. (Das -q verhindert störende -- Reboot --
Zeilen.)
Um diese in ausführlicher Form anzuzeigen, tun Sie dies journalctl -q _TRANSPORT=audit -o verbose
. Eigentlich schlage ich vor, dass Sie jetzt anhalten und dies tun, während Sie weiterlesen, denn als Nächstes möchten wir nach einigen der dort angezeigten Felder filtern. Hier ist ein Datensatz aus meinem System:
_BOOT_ID=[redacted]
_MACHINE_ID=[redacted]
_HOSTNAME=[redacted]
_UID=0
_TRANSPORT=audit
SYSLOG_FACILITY=4
SYSLOG_IDENTIFIER=audit
AUDIT_FIELD_HOSTNAME=?
AUDIT_FIELD_ADDR=?
AUDIT_FIELD_RES=success
_AUDIT_LOGINUID=18281
_AUDIT_TYPE=1112
AUDIT_FIELD_OP=login
AUDIT_FIELD_ID=18281
_PID=5398
_SELINUX_CONTEXT=system_u:system_r:local_login_t:s0-s0:c0.c1023
AUDIT_FIELD_EXE=/usr/bin/login
AUDIT_FIELD_TERMINAL=tty6
_AUDIT_SESSION=541
_SOURCE_REALTIME_TIMESTAMP=1480529473269000
_AUDIT_ID=7444
MESSAGE=USER_LOGIN pid=5398 uid=0 auid=18281 ses=541 subj=system_u:system_r:local_login_t:s0-s0:c0.c1023 msg='op=login id=18281 exe="/usr/bin/login" hostname=? addr=? terminal=tty6 res=success'
Ganz MESSAGE
unten sehen Sie den unstrukturierten Log-Eintrag, der im Wesentlichen dem entspricht, was Sie in der nicht ausführlichen Syslog-Ausgabe sehen. Wirkönntegrep für MESSAGE=USER_LOGIN
(und ist sofort erledigt), aber mit dem Journal können wir noch mehr coole Sachen machen, also bleiben wir dran.
Jeder Audit-Nachrichtentyp hat ein zugeordnetes _AUDIT_TYPE
(stellen Sie sich das vor!). Aus irgendeinem Grund wird dies in der strukturierten Ausgabe nicht hilfreich in Text umgewandelt, sondern 1112
entspricht USER_LOGIN
. Ich habe dies bestätigt, indem ich nachgesehen habe libaudit.h
, was (mit einigen Kontextzeilen) Folgendes enthält:
#define AUDIT_USER_CHAUTHTOK 1108 /* User acct password or pin changed */
#define AUDIT_USER_ERR 1109 /* User acct state error */
#define AUDIT_CRED_REFR 1110 /* User credential refreshed */
#define AUDIT_USYS_CONFIG 1111 /* User space system config change */
#define AUDIT_USER_LOGIN 1112 /* User has logged in */
#define AUDIT_USER_LOGOUT 1113 /* User has logged out */
#define AUDIT_ADD_USER 1114 /* User account added */
#define AUDIT_DEL_USER 1115 /* User account deleted */
so, journalctl -q _AUDIT_TYPE=1112 _TRANSPORT=audit
ist das, was Sie brauchen. Es erhält SSH-, Terminal- und GUI-Anmeldungen und zeichnet Erfolg und Misserfolg auf. Beachten Sie, dass esnichtDinge wie sudo
oder abfangen su
– dafür gibt es unterschiedliche Prüfdatensätze.
Sogar die „Kurzversion“ der Ausgabe ist ziemlich ausführlich, daher möchten Sie möglicherweise -o json
ein kurzes Skript verwenden und erstellen, um die Ausgabe in ein ansprechendes Format zu analysieren.
Antwort2
journalctl -q SYSLOG_FACILITY=10 SYSLOG_FACILITY=4
Dies weist das Journal an, Nachrichten aus zwei verschiedenen Einrichtungen herauszufiltern. Nummer 10 für authpriv
und Nummer 4 für auth
. ssh sowie viele andere anmeldesensitive Anwendungen verwenden diese beiden Einrichtungen zum Protokollieren.
Antwort3
Möchten Sie Anmeldungen oder Anmeldeversuche?
Dies zeigt Anmeldungen, aberkeine Versuche(heute zum Beispiel) und funktioniert in Fedora 22:
$ journalctl -u 'systemd-logind' --since "today" --until "tomorrow"
Hier ist eine Beispielausgabe:
-- Logs begin at Mon 2014-09-01 03:10:03 BST, end at Fri 2015-11-20 09:55:02 GMT. -- Nov 20 08:47:15 meow systemd[1]: Starting Login Service... Nov 20 08:47:15 meow systemd-logind[699]: New seat seat0. Nov 20 08:47:15 meow systemd-logind[699]: Watching system buttons on /dev/input/event2 (Power Button) Nov 20 08:47:15 meow systemd-logind[699]: Watching system buttons on /dev/input/event0 (Power Button) Nov 20 08:47:15 meow systemd-logind[699]: Watching system buttons on /dev/input/event1 (Lid Switch) Nov 20 08:47:15 meow systemd[1]: Started Login Service. Nov 20 08:47:37 meow systemd-logind[699]: New session c1 of user gdm. Nov 20 08:47:46 meow systemd-logind[699]: New session c2 of user gdm. Nov 20 08:47:46 meow systemd-logind[699]: Removed session c1. Nov 20 08:47:46 meow systemd-logind[699]: Removed session c2. Nov 20 08:47:46 meow systemd-logind[699]: New session c3 of user gdm. Nov 20 08:51:22 meow systemd-logind[699]: New session 1 of user david1.
Es ist vollgestopft mit anderen Informationen, wie etwa dem Deckel und den Einschaltknöpfen, daher könnten Sie zur session
Präzisierung nach Folgendem greppen:
$ journalctl -u 'systemd-logind' --since "today" --until "tomorrow" | grep session Nov 20 08:47:37 meow systemd-logind[699]: New session c1 of user gdm. Nov 20 08:47:46 meow systemd-logind[699]: New session c2 of user gdm. Nov 20 08:47:46 meow systemd-logind[699]: Removed session c1. Nov 20 08:47:46 meow systemd-logind[699]: Removed session c2. Nov 20 08:47:46 meow systemd-logind[699]: New session c3 of user gdm. Nov 20 08:51:22 meow systemd-logind[699]: New session 1 of user david1.