pam_script executará qualquer programa que você quiser quando um usuário fizer login.
Eu preciso ser notificado por e-mail quando meu servidor Ubuntu for acessado via SSH.
Se for possível, como posso fazer isso?
pam_script executará qualquer programa que você quiser quando um usuário fizer login.
Você deve conseguir fazer isso com uma regra em /etc/hosts.allow
. Tente algo como:
sshd: ALL: (/usr/bin/echo "SSH connection from %h (%H)" | /usr/bin/mailx -s "SSH Alert" [email protected])
Você pode obter mais detalhes em uma execução de script de /etc/profile.d
ou incluída em /etc/profile
. No entanto, isso só funcionará se o usuário fizer login em uma sessão interativa.
Se você não precisar de notificação imediata, o programa logcheck
poderá notificá-lo por hora sobre acessos na última hora. Você precisará adicionar regras apropriadas à configuração.
EDIT: O Ubuntu usa o formato hosts_options
incompatível para executar os comandos do shell. A regra a seguir é o que implementei:
SSHD: ALL: spawn (/bin/echo "SSH connection to %H from %h[%a]" | \
/usr/bin/mailx -s "SSH Alert" [email protected])
Notas: a notação de barra invertida pode ser usada para quebrar linhas como acima. Os caracteres de substituição estão documentados na página hosts.allow
man.
Sua melhor aposta é configurar um script para assistir ao arquivo de log.
Estou no meu telefone no momento, mas confira /var/log/access.log
O log está no auth.log, você pode fazer um
cat /var/log/auth.log | grep ssh
Para enviar o e-mail que você pode instalar, edite sua configuração da seguinte maneira:
/etc/ssmtp/ssmtp.conf
[email protected] mailhub=smtp.gmail.com:465 rewriteDomain=gmail.com AuthUser=yourusername AuthPass=yourpassword FromLineOverride=YES UseTLS=YES
Crie um arquivo de texto com o corpo da mensagem da seguinte forma:
To: [email protected] From: [email protected] Subject: SSH warning or whatever
MAIL CONTENT
Para adicionar o conteúdo que você pode fazer:
tail /var/log/auth.log | grep ssh >> /tmp/mailcontents.txt
e, em seguida, execute
ssmtp [email protected] < /tmp/mailcontents.txt
EDITAR:
Outro OP disse que você pode querer uma notificação cada vez que isso acontece, você pode fazer algo assim:
crie um script com
!/bin/sh
tail /var/log/auth.log | grep ssh >> /tmp/alert&
while true; do
change=$(inotifywait -e close_write,moved_to,create .)
change=${change#./ * }
if [ "$change" = "/tmp/alert" ]; then
tail -n 1 /tmp/alert >> /tmp/mailcontents.txt
ssmtp [email protected] < mailcontents.txt;
fi
done
Mailcontents deve incluir os endereços conforme declarado anteriormente, o código de script não foi verificado para ser válido, considere o pseudocódigo.