Pesquisar este blog

sexta-feira, 18 de janeiro de 2008

Alerta de acesso SSH incrementado

Um script simples para avisar caso alguem acesse via ROOT usando SSH o seu servidor. Ele é um pouco mais incrementado que os scripts mais simples encontrados. Além de dar mais informações e envia-las ao seu email ele grava um arquivo no seu /root com todo o histórico dos acessos.

Eu uso ele em todos os servidores que gerencio. Primeiro acesse via SSH e execute:
cd root; pico -w /root/.bash_profile

Depois copie e cole o código abaixo, claro mudando o endereço de destino que receberá o aviso automático:
#
# GRAVA LOG E HISTORICO DE ACESSOS ROOT
#
echo `who` >> .access
#
# EMAIL DE AVISO ACESSO ROOT
#
rootalert() {
echo 'ALERTA - Acesso ROOT SHELL'
echo
echo 'Servidor: '`hostname`
echo 'Data: '`date`
echo 'Usuario: '`who | awk '{ print $1 }'`
echo 'TTY: '`who | awk '{ print $2 }'`
echo 'Origem: '`who | awk '{ print $6 }' | /bin/cut -d '(' -f 2 | /bin/cut -d ')' -f 1`
echo
echo 'Estes usuários estão ativos neste instante como root:'
echo `who | awk '{print $6}'`
echo
echo 'Últimos 10 acessos efetuados:'
echo `last -n 10`
echo
echo 'Informações: Horário deste acesso, Uptime e Load Averange atual'
echo `uptime`
echo
}
rootalert | mail -s "Alerta: Acesso ROOT [`hostname`]"SEUEMAIL@AQUI.COM.BR
Ele criará também o arquivo .access no seu /root gravando as infromações de acesso deixando um histórico dos acessos efetuados. Detalhe importante: este código deve ser colocado logo abaixo da última linha do arquivo /root/.bash_profile que deve ser algo assim:
# .bash_profile

# Get the aliases and functions
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi

# User specific environment and startup programs

PATH=$PATH:$HOME/bin

export PATH
unset USERNAME
Cole abaixo do unset USERNAME

3 comentários:

Fernando disse...

Viva, consigo visualizar o acessos via ssh, mas não recebo nenhum email.

Deu-me tambem um erro:

Last login: Thu Jan 24 14:44:28 2008 from 213.63.50.143
You must specify direct recipients with -s, -c, or -b.
-bash: echo: write error: Broken pipe

Alexandre Duran disse...

Ola Fernando provavelmente seu sistema esta sem o pacote Mailx instalado.

Teste acessando via SSH e execute o comando:

> mail

E veja o que acontece.

Juan Roldan disse...

Fernando, o que ocorreu foi o seguinte. Voce precisa colocar um espaco depois das ", ou seja o comando ficaria assim

rootalert | mail -s "Alerta: Acesso ROOT [`hostname`]" seuemail@comespaco.com.br