Como você esclareceu que deseja receber um e-mail para cada autenticação bem-sucedida , pam_notify é um ótimo módulo candidato para isso.
Adicione-o como uma linha session required
ao final do arquivo /etc/pam.d/sshd
ou equivalente.
Eu gostaria de ser notificado sobre cada conexão SSH com o servidor Linux (Debian).
Já vi alguns métodos, que propunham adicionar o comando mail ao próprio .bashrc, mas essa abordagem parece não cobrir todos os casos possíveis.
Qual é a melhor prática para fazer essas notificações transversais sobre conexões SSH?
Como você esclareceu que deseja receber um e-mail para cada autenticação bem-sucedida , pam_notify é um ótimo módulo candidato para isso.
Adicione-o como uma linha session required
ao final do arquivo /etc/pam.d/sshd
ou equivalente.
A melhor prática é não a menos que você REALMENTE tenha que (a segurança desta máquina é TÃO crítica).
Se você REALMENTE precisa, você não quer se preocupar com arquivos .rc que as pessoas possam alterar - isso é uma solução incompleta.
O caminho certo é provavelmente usar os recursos de auditoria construídos no Linux (veja as man pages para auditd
, e seu arquivo de configuração auditd.conf
), mas eu tenho uma experiência muito limitada com as instalações de auditoria em Linux (em particular, não tenho certeza se o subsistema de auditoria facilita o envio de emails - eu sei que você pode no FreeBSD sem muita dificuldade).
A maneira menos certa, mas ainda decente, seria usar um módulo PAM que sempre tenha sucesso e envie um e-mail dizendo quem tentou fazer o login.
A maneira menos-certa-mas-pelo menos-sua-caixa de entrada-não-completa seria preparar o arquivo auth.log
ou equivalente e enviá-lo por e-mail a alguém toda noite. Se tudo que você precisa é de um registro básico, esta seria a minha escolha: o volume de e-mail gerado a partir de minhas outras sugestões seria hediondo em um sistema com muita atividade.
você pode monitorar seu /var/log/auth.log periodicamente ou, ainda melhor, torná-lo um registro remoto para que o invasor não consiga eliminar o rastreamento bem-sucedido.
Como esta questão foi levantada a partir dos cofres, minha inclinação seria executar amostra contra /var/log/auth.log
(ou sua distro / syslog config's arquivo apropriado), e configurá-lo para responder com um e-mail para cada ocorrência de sshd.*Accepted.*
, uma vez que isso deve pegar logins baseados em senha e baseados em chave:
Feb 21 10:06:44 lory sshd[24414]: Accepted publickey for username from ::1 port 39197 ssh2
Feb 21 10:08:16 bill sshd[20643]: Accepted password for username from ::1 port 46835 ssh2
que você poderia fazer com um arquivo de configuração dizendo, por exemplo,
watchfor /sshd.*Accepted.*/
mail [email protected],subject="SSH login on host foo"
e, e. swatch -c /the/above/file /var/log/auth
.
We do it by creating a file /etc/profile.d/notify.sh with the following content: #!/bin/sh sender="[email protected]" recepient="[email protected]" subject="Privileged Account logon used" message="'env'" echo "$message" | mail -s "$subject" -r "$sender" -S smtp=mail.example.com "$recepient"
Recentemente, desenvolvi minha própria solução para esse problema, que envolve o monitoramento de arquivos de log para diferentes serviços (inclusive o sshd) e a notificação de um único email quando determinados usuários obtêm acesso a determinados serviços.
Eu chamo de Monitor de Autenticação e você pode encontrar mais informações sobre isso aqui: link
Espero que isso seja o que você está procurando.
Eu publiquei um script bash no Github Gist que faz o que você está procurando. Ele enviará um e-mail ao administrador do sistema sempre que um usuário fizer login em um novo endereço IP. Eu uso o script examinar os logins em nossos sistemas de produção rigidamente controlados. Se um login for comprometido, seremos notificados sobre o local de login incomum e teremos a chance de bloqueá-lo fora do sistema antes que eles causem danos sérios.
Para instalar o script, basta atualizá-lo com seu e-mail sysadmin e copiá-lo para /etc/profile.d/
.