Enviando alertas do Snort por SMS

Um dos maiores problemas na implementação de um IDS é a falta de responsáveis pelo monitoramento dos eventos. Desenvolvi esse script para coleta e envio de alertas do Snort por SMS. Além do envio de alertas por SMS, o script também gera páginas WML para visualização dos detalhes pelo browser do próprio celular caso seja necessário.

[ Hits: 16.014 ]

Por: Perfil removido em 23/05/2009


Introdução e funcionamento



O SMS Snort é um script Python que permite a coleta dos dados de alertas do Snort logados no banco de dados MySQL para envio de SMS utilizando um telefone celular. Os detalhes dos alertas podem ser acessados via browser do telefone celular.

Pela limitação do número de caracteres que podem ser enviados por SMS (160 em 7 bits e 140 em 8 bits), o script também gera arquivos WMLs com os logs detalhados dos alertas.

A vantagem de usar o WML é que mesmo telefones mais antigos compatíveis somente com WAP podem visualizá-los.

Abaixo é mostrado um diagrama básico de funcionamento do SMS Snort:
Linux: Enviando alertas do Snort por SMS
Sequência de funcionamento:
  1. Snort grava informações de alertas no MySQL;
  2. SMS Snort coleta as informações de alertas no MySQL;
  3. As informações coletadas são convertidas para WML para acesso remoto pelo telefone celular;
  4. O SMS Snort controla o celular para envio do SMS;
  5. Um SMS é enviado para notificação do alerta;
  6. O usuário é notificado e pode consultar os detalhes do alertas através do browser do telefone;
  7. O servidor WEB entrega a página WML com os detalhes para o celular.

Instalação e configuração

Vamos baixar e descompactar o SMS Snort:

wget http://smssnort.googlecode.com/files/smssnort-0.2.tar.gz
tar xvzf smssnort-0.2.tar.gz

Antes de executá-los precisamos instalar dois módulos do Python. O primeiro é o "pyserial", responsável pela interface serial (USB) com o telefone celular. O segundo é o "MySQLdb" para interface do Python com o banco de dados MySQL.

Em distribuições Linux baseadas no Debian pode-se instalá-los com:

sudo apt-get install python-serial
$ sudo apt-get install python-MySQLdb


O script grava o timestamp da última consulta do banco de dados. Por isso é necessário criação de uma tabela. O arquivo "smssnort.sql" contém os comandos SQL para criação dessa tabela no banco de dados "snort". Para importar esse arquivo no MySQL pode-se usar (a partir do diretório do arquivo):

mysql -u root -p < smssnort.sql snort
(a senha de root do MySQL será requisitada)

Todos os parâmetros de configuração estão no arquivo "config.py". Os caminhos do log e do wml devem ser criados.

# MySQL
HOST = 'localhost'
USER = 'snort'
PASSWORD = 'snort'
DB = 'snort'

# Ajuste a prioridade dos alertas que serão enviados
# Nesse caso somente alertas de prioridade "> = 3" serão enviados
# Pode-se usar 1 (alto), 2 (médio) ou 3 (baixo)
PRIORITY = 3

# Caminho do log (não esquecer da '/' no final)
# Se o caminho não existir, deve ser criado!
LOG = '/var/log/smssnort/'

# Caminho do WML (não esquecer da '/' no final)
# Se o caminho não existir, deve ser criado!
WML = '/var/www/smssnort/'

# URL para acesso (não esquecer da '/' no final)
URL = 'http://seusite.com.br/smssnort/'

# Porta serial
PORT = '/dev/ttyACM0'

# Telefone(s) para envio do SMS
NUMBER = '01199991234'

Teste

Conecte o telefone na porta USB. O Linux deve reconhecer o telefone através do módulo ACM, ex: /dev/ttyACM0

Testei com telefones Motorola e Sony Ericsson e funcionou normalmente. Como os comandos AT para envio de SMS são padrão, deve funcionar com outros modelos também.

Obs.: Coloque o telefone em modo de modem.

Para rodar o script, primeiro torne-o executável:

chmod +x smssnort.py

E depois:

python smssnort.py

Ou simplesmente:

./smssnort.py

Dependendo da quantidade de alertas armazenados no MySQL é aconselhável, para o teste inicial, deixar a prioridade dos alertas como 1 (PRIORITY = 1) no arquivo de configuração.

O telefone celular que foi programado para receber o SMS (configurado anteriormente: NUMBER = '01199991234'), deve receber algo como:

"Snort detectou 2 alerta(s). Mais detalhes podem ser encontrados em: http://seusite.com.br/smssnort/log-200902182000.wml"

Ao acessar o link dos alertas através do próprio celular ou browser com capacidade de apresentar WML (o Firefox tem um complemento que funciona), deve ser mostrado algo como:

"Sensor:192.168.244.129 detectou: (portscan) Open Port [Prior.= 3] de 192.168.244.1 para 192.168.244.129 - 6 vez(es) em 2009-02-18 19:49:39"

Pode-se colocar o script na CRON para rodar automaticamente que acordo com a necessidade.

O script está bem comentado. É interessante entender o funcionamento do mesmo, até para futuras adaptações em outras aplicações.

   

Páginas do artigo
   1. Introdução e funcionamento
Outros artigos deste autor

Slapt-get 0.10.2s - Conceitos Básicos

Como fazer seu programa Kylix chamar uma aplicação externa

Resumo LPI 102: Tópico 108 - Serviços Essenciais do Sistema

Zenwalk - Uma distro e tanto

Multiterminais e Userful Multiplier nas escolas públicas: Uma solução barata que sai caro

Leitura recomendada

Monitorando as conversas do MSN

Detectando possíveis trojans e lkms em seu servidor

O phishing e uma análise forense

Antivírus ClamAV com proteção em tempo real

Enjaulamento de usuário no sistema operacional

  
Comentários
[1] Comentário enviado por drakula em 23/05/2009 - 16:49h

Cara muito util valeu pela colaboração

[2] Comentário enviado por augustouser em 24/05/2009 - 00:25h

Legal.

[3] Comentário enviado por removido em 25/05/2009 - 17:33h

Muito útil mesmo

[4] Comentário enviado por ThE_BoOt em 26/05/2009 - 08:55h

Rapaz, seu script caiu do céu... eu estava justamente tentando fechar um plano com uma revenda de SMS's, mas os caras botam muita dificuldade, e isso tudo apenas para fazer o Nagios enviar mensagens de Alerta... vou já modificar um pouco teu script para tal tarefa.

[5] Comentário enviado por ghregory em 26/05/2009 - 14:48h

um dos artigos mais útil do VOL ;D

[6] Comentário enviado por luizvieira em 27/05/2009 - 08:03h

Muito bom, vou testar aqui.

[7] Comentário enviado por spantacy em 27/06/2009 - 11:24h

boa explicao, meu snort esta instalado no fedora e quando coloco ele para rodar "startar" ele ma uma mensagem de "falhou", e me diz que
=>snort morto mas o subsys esta bloqueado

nao sei como fazer para por rodar, tem como alguem me ajudar?


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts