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

4

De acordo com o systemd docs, journalctl é recomendado para a navegação de logs, em vez da árvore de arquivos /var/log/* .

Embora o man 1 journalctl descreva como usá-lo, ainda não sei o que argumentos que precisa para me dar a lista de coisas que eu quero. Por exemplo, quero ver uma lista de logins de usuários. Estou ciente de que sshd lida com logins ssh , mas e os logins locais e a autenticação geral de usuários?

Veja o que 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 é o caminho correto?

    
por jozxyqk 20.01.2015 / 05:49

3 respostas

3

Executar:

journalctl -q _AUDIT_TYPE=1112 _TRANSPORT=audit

Explicação:

Supondo que você tenha o subsistema de auditoria em execução (e a menos que tenha desabilitado, é a melhor maneira de obter esse tipo de informação, porque entre outras coisas, se usar _TRANSPORT=audit , as mensagens não podem ser falsificadas como aqueles sobre o soquete syslog tradicional. Para ver all das mensagens enviadas através deste transporte, use journalctl -q _TRANSPORT=audit . (O -q mantém as linhas -- Reboot -- irritantes.)

Para ver isso em forma detalhada, faça journalctl -q _TRANSPORT=audit -o verbose . Na verdade, sugiro que você pare e faça isso agora, já que está acompanhando, porque a próxima coisa que queremos fazer é filtrar um 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'

O MESSAGE na parte inferior é o registro de log não estruturado, que é basicamente o que você vê na saída não detalhada do estilo syslog. Nós poderíamos grep para MESSAGE=USER_LOGIN (e ser feito agora), mas a revista nos permite fazer coisas mais legais, então vamos continuar nisso.

Cada tipo de mensagem de auditoria tem um _AUDIT_TYPE associado (imagine isso!). Por algum motivo, isso não é convertido para texto na saída estruturada, mas 1112 corresponde a USER_LOGIN . Confirmei isso verificando em libaudit.h , que tem (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 sucesso e falha. Note que não pega coisas como sudo ou su - existem registros de auditoria diferentes para eles.

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

    
por 22.12.2016 / 22:02
1

Você deseja logins ou tentativas de login?

Isso mostra logins, mas não tenta (hoje, por exemplo) e funciona no Fedora 22:

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

Aqui está a saída de amostra: -- 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, para que você possa fazer com que session seja 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.

    
por 20.11.2015 / 11:03
0
journalctl -q SYSLOG_FACILITY=10 SYSLOG_FACILITY=4

Isto diz ao jornal para filtrar mensagens provenientes de 2 instalações diferentes. Número 10 para authpriv e número 4 para auth . O ssh, assim como muitos outros aplicativos sensíveis ao login, usam essas duas instalações para registrar.

    
por 30.10.2017 / 13:30