Uma maneira de fazer isso é usar o syslog e redirecionar a mensagem para o e-mail:
Outra maneira é usar um analisador de log como SEC ou Splunk .
Algumas semanas atrás, pensei que seria uma boa idéia escrever um script que deveria me enviar um email sempre que algum usuário fizesse login em meu servidor.
Então, cheguei a um script em perfeito funcionamento notifyLogin.sh
, então decidi chamá-lo do script .bash_login
de cada usuário.
Tão bom, mas hoje descobri que alguém poderia fazer login no meu servidor usando a opção ssh
client -t
, selecionando assim um shell disponível. Por exemplo:
ssh user@myserver -t sh
Desta forma, .bash_login
não executa nem /etc/profile
.
Minha pergunta é: Existe algum script "universal" (que significa que id não importa qual shell está sendo usado) que é executado sempre que um usuário efetua login?
Outra opção é usar o pam. Roubado da página encontrada no google :
session optional pam_exec.so /path/to/your/script/or/executable
Para detalhes, consulte a página de manual pam_exec (8) . A vantagem é que você não precisa analisar os logs para fazer isso - ele usa um mecanismo padrão para sessões de plug-in. Dependendo de onde você o coloca, você pode usá-lo para enviar sempre que o usuário criar uma nova sessão ou apenas quando se conectar via SSH.
uma alternativa: você pode executar uma filtragem de log seguro em segundo plano para extrair eventos interessantes, como:
tail -n 0 -f /var/log/secure | grep --line-buffered "sshd:session): session opened" > /var/log/sec-filtered
e tem uma tarefa periódica que verifica o tamanho do arquivo de saída filtrado para enviá-lo por e-mail e reiniciar a filtragem no log seguro.