Como obter um aviso antecipado para alguém logando em um servidor

1

Eu gosto de ser notificado quando alguém está logado em um dos meus servidores Linux, e também ser capaz de descobrir qual é a localização da tentativa de login. Como posso fazer isso?

    
por getmizanur 12.02.2015 / 12:36

5 respostas

2

Ok, obrigado por responder a pergunta. No entanto, eu fiz isso de forma ligeiramente diferente, eu tenho um comando de uma linha no arquivo global bashrc.

Aqui está minha solução

echo "Login on" 'hostname' 'date' | mail -s "Login on 'hostname' 'who am i | awk '{print $5}' | sed 's/[()]//g' | cut -f1 -d "." | sed 's/-/./g''" [email protected]

Supondo que você tenha o pacote mailutils instalado em sua máquina Linux.

    
por 15.02.2015 / 23:40
2

O processo de login do Linux é regido principalmente pelo PAM (Módulos de autenticação plugáveis para Linux), que é um conjunto de bibliotecas compartilhadas que permitem ao administrador do sistema local escolher como os aplicativos autenticam os usuários.

Por padrão, algumas mensagens do PAM já estão registradas no syslog, portanto, ao monitorar, você pode acionar notificações.

Mais específico, você pode usar pam_exec ter um comando de notificação específico executado como parte de um evento de login bem-sucedido.

    
por 12.02.2015 / 12:46
1

Se você pensa em ssh quando fala em "logado", pode usar syslog e rsyslog.

Para o rsyslog, verifique se: link Com alguma configuração você pode enviar o log por correio ou com a pilha do sistema de log (pilha de alces, graylog2, splunk, etc).

    
por 12.02.2015 / 12:54
0

Para isso você pode usar tcp_wrapper, em /etc/hosts.allow você pode usar algo assim.

sshd : ALL : spawn (echo -e "Connected from IP %h with user %u" | mail -s "SSH Connection" [email protected]) : ALLOW

Para mais informações,

man 5 hosts_access

Mas com este método você precisa ter cuidado se seus servidores estiverem expostos à internet, porque toda vez que alguém tentar se conectar à porta ssh, você receberá um e-mail, então eu não tenho esse problema porque eu usei este em uma LAN privada,

Segundo methond, em /etc/ssh/sshrc use algo como segue.

echo $USER $SSH_CLIENT $(date "+%F %H-%M-%S") | mail -s "ssh connection" [email protected]

usando o último método, você receberá um e-mail apenas quando o usuário estiver logado em seu servidor.

    
por 16.02.2015 / 00:39
0

CentOS

Abra o arquivo ~ / .bash_profile em um editor de texto. Anexe as seguintes linhas

IP="$(echo $SSH_CONNECTION | cut -d " " -f 1)"
HOSTNAME=$(hostname)
NOW=$(date +"%e %b %Y, %a %r")

echo 'Someone from '$IP' logged into '$HOSTNAME' on '$NOW'.' | mail -s 'SSH Login Notification' YOUR_EMAIL_ADDRESS

Se você estiver usando o Ubuntu / Debian adicione o mesmo conteúdo a ~ / .bashrc

Existem 3 variáveis de ambiente do cliente ssh.

SSH_CLIENT='192.168.223.17 36673 22'

SSH_CONNECTION='192.168.223.17 36673 192.168.223.229 22'

SSH_TTY=/dev/pts/6

SSH_CLIENT mostra o endereço do sistema do cliente, o número da porta de saída no sistema do cliente e a porta de entrada no servidor. SSH_CONNECTION mostra o endereço do cliente, a porta de saída no cliente, o endereço do servidor e a porta de entrada no servidor. SSH_TTY nomeia o dispositivo pseudo-terminal, abreviado como Ppty, no servidor usado pela conexão

    
por 16.02.2015 / 07:21