Como posso configurar meu servidor para me notificar sempre que ele for acessado remotamente via ssh?

5

Eu preciso ser notificado por e-mail quando meu servidor Ubuntu for acessado via SSH.

Se for possível, como posso fazer isso?

    
por Nam G VU 20.06.2012 / 18:07

4 respostas

6

pam_script executará qualquer programa que você quiser quando um usuário fizer login.

    
por 20.06.2012 / 18:27
6

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.

    
por 21.06.2012 / 00:36
2

Sua melhor aposta é configurar um script para assistir ao arquivo de log.

Estou no meu telefone no momento, mas confira /var/log/access.log

    
por 20.06.2012 / 18:14
1

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.

    
por 20.06.2012 / 18:30