Para mim, a questão ainda não está clara, por isso tento responder à pergunta contida no primeiro parágrafo. Como logar logins SSH?
Também vou limitar minha resposta a todos os sistemas * nix com suporte a PAM. Este é um ponto relevante, porque você não limita o escopo da sua pergunta dando um sistema operacional em particular.
Ok, aqui está o que eu usei no passado: sshrc
. Se você adicionar um arquivo com o nome em /etc/ssh
(a localização pode variar!), Ele será executado por conexões SSH interativas (por exemplo, com shell).
A desvantagem é que você não será informado sobre as coisas que também são relevantes, como conexões SFTP ( sftp-internal
subsystem).
No entanto, temos uma rota aqui.
Podemos usar o PAM com pam_exec.so
para nossa vantagem e limitar seu efeito ao SSH adicionando isso a /etc/pam.d/sshd
(para mim, é a última linha sem comentário):
session optional pam_exec.so stdout /etc/your_email_script.sh
Isso garantirá que o script seja executado como um usuário privilegiado (relevante se você preferir chamar o binário sendmail para enviar o e-mail) e que não há praticamente nada que o usuário possa fazer para evitar que esse script seja executado. Você pode limitar efetivamente o acesso a esse script apenas para root
.
A parte com optional
você deve ajustar se necessário. Leitura relevante: man pam_exec
, man pam.conf
, man pam.d
.
Você também pode querer brincar com o quão cedo você deseja executar seu script.
O que você vê a perder é. Você tem muitas outras maneiras de bloquear o servidor. Para começar: não permita senhas. Mantenha a autenticação somente de chave. Certifique-se de que as pessoas com acesso somente ao SFTP não tenham acesso adicional:
Match group sftponly
ChrootDirectory /home
X11Forwarding no
AllowTcpForwarding no
ForceCommand internal-sftp
PasswordAuthentication no
permitirá que os membros do grupo sftponly
usem apenas SFTP e nenhum encaminhamento de porta, etc., e limitará o escopo a /home
(as permissões de arquivo / pasta fazem o resto).
AllowGroups ssh-users
somente permitirá que os membros de um grupo ssh-users
até façam logon via SSH. Ou seja, você pode limitar o logon SSH a um subconjunto de sua base de usuários.
PermitRootLogin no
deve ser definido e os usuários relevantes devem ser sudoers.
PasswordAuthentication no
PubkeyAuthentication yes
deve garantir que a senha sobre a qual você tem controle limitado não possa ser usada para fazer logon.
AuthorizedKeysFile /some/protected/folder/.ssh/authorized_keys
pode garantir que os usuários não tenham permissão para gerenciar seu arquivo authorized_keys
, mas exige que você faça isso em seu nome.