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 (
SessionNeweSessionRemoved). 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/utmpno Linux, o último em/var/log/wtmp). A maioria das sessões de login é gravada lá para visualização comwhoouw. (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).