Journalctl을 사용하여 로그인 시도 목록을 얻는 방법은 무엇입니까?

Journalctl을 사용하여 로그인 시도 목록을 얻는 방법은 무엇입니까?

systemd설명서 에 따르면 파일 트리 journalctl가 아닌 로그를 찾아보는 것이 좋습니다 ./var/log/*

하지만man 1 journalctl사용 방법을 설명했지만, 내가 원하는 목록을 제공하는 데 어떤 매개변수가 필요한지 여전히 알 수 없습니다. 예를 들어, 사용자 로그인 목록을 보고 싶습니다. 나는 깨달았다sshdSSH 로그인 처리, 하지만 로컬 로그인과 일반 사용자 인증은 어떻습니까?

내가 시도한 것은 다음과 같습니다.

#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구조화되지 않은 로깅이 있는데, 이는 기본적으로 상세하지 않은 syslog 스타일 출력에서 ​​볼 수 있는 것입니다. 우리를할 수 있다grep을 사용하면 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.

덮개 및 전원 버튼과 같은 다른 정보와 혼합되어 있으므로 session더 정확한 정보를 얻기 위해 grep을 사용할 수 있습니다. $ 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.

관련 정보