如何使用journalctl取得登入嘗試清單?

如何使用journalctl取得登入嘗試清單?

根據systemd文檔,journalctl建議瀏覽日誌,而不是/var/log/*文件樹。

儘管man 1 journalctl描述瞭如何使用它,我仍然不知道它需要什麼參數才能給我我想要的東西的清單。例如,我想查看使用者登入的清單。我意識到sshd處理 ssh 登入,但是本地登入和一般用戶身份驗證呢?

這是我嘗試過的:

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

這似乎給了一些指示,但絕對不是最可靠的方法。正確的方法是什麼?

答案1

跑步:

journalctl -q _AUDIT_TYPE=1112 _TRANSPORT=audit

解釋:

假設您正在執行審計子系統(除非您停用它,否則您會這樣做),這是獲取此類資訊的最佳方式,因為除其他外,如果您使用_TRANSPORT=audit,訊息就不能像傳統syslog 套接字上的消息那樣被欺騙。查看全部透過此傳輸發送的訊息中,使用journalctl -q _TRANSPORT=audit. (-q 可以排除煩人的-- Reboot --行。)

若要以詳細形式查看這些內容,請執行journalctl -q _TRANSPORT=audit -o verbose。實際上,我建議您在繼續操作時立即停止並執行此操作,因為我們要做的下一件事是過濾我們在那裡看到的一些欄位。這是我的系統中的記錄:

_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'

底部MESSAGE是非結構化日誌記錄,基本上就是您在非詳細系統日誌樣式輸出中看到的內容。我們可以grep for MESSAGE=USER_LOGIN(並立即完成),但日誌讓我們可以做更多很酷的事情,所以讓我們繼續下去。

每個審核訊息類型都有一個關聯的_AUDIT_TYPE(想像一下!)。由於某種原因,這不能有效地轉換為結構化輸出中的文本,但1112對應於USER_LOGIN.我透過簽入確認了這一點libaudit.h,其中有(帶有一些上下文行):

#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 */

所以,journalctl -q _AUDIT_TYPE=1112 _TRANSPORT=audit這就是你所需要的。它獲取 ssh、終端機和 GUI 登入信息,並記錄成功和失敗。請注意,它捕捉諸如sudo或 之類的東西su——這些東西有不同的審計記錄。

即使輸出的“短”版本也有點冗長,因此您可能需要使用-o json並創建一個短腳本將輸出解析為漂亮的格式。

答案2

journalctl -q SYSLOG_FACILITY=10 SYSLOG_FACILITY=4

這告訴日誌過濾掉來自兩個不同設施的訊息。 10 號為authpriv,4 號為auth。 ssh 以及許多其他登入敏感應用程式使用這兩個工具來登入。

答案3

您想要登入或嘗試登入嗎?

這顯示了登入訊息,但是不嘗試(以今天為例)並在 Fedora 22 中運行:

$ journalctl -u 'systemd-logind'  --since "today" --until "tomorrow"

這是範例輸出: -- 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.

它混雜著其他訊息,例如蓋子和電源按鈕,因此您可以 grep 以session獲得更精確的資訊: $ 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.

相關內容