Como posso obter uma lista de tentativas de login com o journalctl?

Como posso obter uma lista de tentativas de login com o journalctl?

De acordo com a systemddocumentação, journalctlé recomendado navegar nos logs, em vez da /var/log/*árvore de arquivos.

Enquantoman 1 journalctldescreve como usá-lo, ainda não sei quais argumentos são necessários para me fornecer a lista de coisas que desejo. Por exemplo, quero ver uma lista de logins de usuários. estou cientesshdlida com logins ssh, mas e os logins locais e a autenticação geral do usuário?

Aqui está o que eu tentei:

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

Isto parece dar algumas indicações, mas definitivamente não é o método mais robusto. Qual é a maneira correta?

Responder1

Correr:

journalctl -q _AUDIT_TYPE=1112 _TRANSPORT=audit

Explicação:

Supondo que você tenha o subsistema de auditoria em execução (e, a menos que você o desative), essa é a melhor maneira de obter esse tipo de informação, porque, entre outras coisas, se você usar _TRANSPORT=audit, as mensagens não poderão ser falsificadas como aquelas no soquete syslog tradicional . Vertodosdas mensagens enviadas através deste transporte, use journalctl -q _TRANSPORT=audit. (O -q evita -- Reboot --linhas irritantes.)

Para vê-los de forma detalhada, faça journalctl -q _TRANSPORT=audit -o verbose. Na verdade, sugiro parar e fazer isso agora mesmo enquanto você acompanha, porque a próxima coisa que queremos fazer é filtrar alguns dos campos que vemos lá. Aqui está um registro do meu sistema:

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

Na MESSAGEparte inferior está o registro de log não estruturado, que é basicamente o que você vê na saída não detalhada do estilo syslog. Nóspoderiagrep for MESSAGE=USER_LOGIN(e pronto agora), mas o diário nos permite fazer mais coisas legais, então vamos continuar.

Cada tipo de mensagem de auditoria tem um associado _AUDIT_TYPE(imagine só!). Por alguma razão, isso não é convertido em texto na saída estruturada, mas 1112corresponde a USER_LOGIN. Confirmei isso fazendo check-in libaudit.h, que possui (com algumas linhas de contexto):

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

então, journalctl -q _AUDIT_TYPE=1112 _TRANSPORT=audité o que você precisa. Ele obtém logins ssh, terminal e GUI e registra sucessos e falhas. Observe quenãopegue coisas como sudoou su- existem registros de auditoria diferentes para eles.

Mesmo a versão "curta" da saída é meio detalhada, então você pode querer usar -o jsone criar um script curto para analisar a saída em um formato bonito.

Responder2

journalctl -q SYSLOG_FACILITY=10 SYSLOG_FACILITY=4

Isto diz ao diário para filtrar mensagens provenientes de 2 instalações diferentes. Número 10 para authprive número 4 para auth. ssh, assim como muitos outros aplicativos sensíveis ao login, usam esses dois recursos para registrar.

Responder3

Você quer logins ou tentativas de login?

Isso mostra logins, masnão tentativas(hoje por exemplo) e funciona no Fedora 22:

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

Aqui está um exemplo de saída: -- 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.

Ele está repleto de outras informações, como a tampa e os botões liga/desliga, então você pode usar o grep para sessionser mais preciso: $ 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.

informação relacionada