Assista e histórico registrando os eventos de Login e Logout dos usuários no Linux

3

Gostaria de manter o histórico de login e logout dos usuários no Linux.

Ou seja, deixe-me saber se as chamadas relevantes do sistema são usadas para eventos de login e logout, para que eu possa fazer isso por meio da conexão da chamada do sistema.

Além disso, se houver outra maneira de o meu código proprietário (processo ou thread) poder receber eventos de login e logout.

Além disso, se já houver um mecanismo de manutenção de histórico de login / saída no Linux, por favor, deixe-me saber onde posso obter as informações detalhadas.

Obrigado.

Feliz

    
por Happy 10.09.2015 / 04:46

1 resposta

5

Se o subsistema de auditoria do kernel estiver ativado, você poderá ativar o módulo pam_loginuid.so PAM, que criará uma nova "sessão de auditoria" para cada login (gravando em / proc / self / loginuid). Isso será registrado por auditd ou systemd-journald.

Mas além disso, não há nenhuma chamada de sistema de "login". Quase tudo é feito no espaço do usuário (e um pouco disperso), exceto pela troca final de credenciais (que, no entanto, também é feita com frequência por daemons internamente). Não há nenhum evento "usuário efetuou login", pelo menos nenhum que seria consistente em todas as distribuições do Linux.

No entanto, todos os componentes envolvidos do já registram muitas informações. Por exemplo, você pode encontrar um log de sessão em /var/log/wtmp (leia com os comandos who <file> ou last ), e você pode encontrar várias mensagens sobre cada logon em /var/log/secure ou /var/log/auth.log ou o diário do systemd:

sshd[3037]: Authorized to grawity, krb5 principal [email protected] (krb5_kuserok)
sshd[3037]: Accepted gssapi-with-mic for grawity from 2a00:1a28:1157:143::2 port 55350 ssh2
kernel: audit: type=1006 audit(1441862594.054:16701): pid=3037 uid=0 old-auid=4294967295 auid=1000 old-ses=4294967295 ses=14576 res=1
sshd[3037]: pam_unix(sshd:session): session opened for user grawity by (uid=0)
systemd-logind[1531]: New session 14576 of user grawity.

Para monitorar isso em seu próprio programa, existem várias opções:

  • Se as máquinas de destino executarem o systemd, você poderá monitorar os sinais de D-Bus enviados pelo systemd-logind ( SessionNew e SessionRemoved ). O ConsoleKit tem uma interface semelhante.

  • Você pode implementar seu próprio módulo PAM, que envia notificações sobre IPC. Seria semelhante ao estágio de "sessão" de pam_unix (que atualmente apenas imprime a mensagem acima no syslog).

  • Você pode inotify-assistir os arquivos "utmp" ou "wtmp" (o primeiro em (/var)/run/utmp no Linux, o último em /var/log/wtmp ). A maioria das sessões de login é gravada lá para visualização com who ou w . (utmp mantém o estado atual, enquanto wtmp é um log atual.)

  • Você pode usar o auditd, que registrará as mensagens do kernel de pam_loginuid , bem como várias mensagens do espaço do usuário dos daemons.

Não se esqueça de distinguir entre sessões de logins "interativos" (gdm, sshd, login), "serviço" (imap, ftp) e "batch" (cron, systemd-user).

    
por 10.09.2015 / 05:31

Tags