SNORT (Sitema de Detecção de Intrusos) baseado em IPTABLES

Iniciado por DeamoN Cheat®, 21 de Maio de 2006, 12:51

tópico anterior - próximo tópico

DeamoN Cheat®

Sistema de detecção de intrusos são poderosas ferramentas na implementação da segurança em redes de computadores, e o Snort é o mais conhecido e utilizado IDS no mundo Linux.
Seu funcionamento é bastante simples, ele realiza a análise de pacotes que passam pelo sistema a procura de sinais que possam indicar comportamento anormal, quando ele detecta algum tipo de anormalidade nos pacotes, compara com um banco de dados de assinaturas digitais e, se indicar ataque, é gerado um alerta nos arquivos de logs. Isto é um problema, pois somente os logs não impedem que o ataque continue e o Snort não é compilado com a capacidade de bloquear os hosts de onde surgem os ataques.
Portanto, é necessário instalar o Snort com a capacidade de "resetar" as conexões que indiquem possíveis ameaças.
È bom lembrar que, para o funcionamento correto do Snort, é preciso instalar o Libpcap, que é utilizado para habilitar a captura de pacotes.
Após fazer o download, é necessário descompactá-lo antes de efetuar a instalação.
Para descompactar, execute o seguinte comando:
#  tar -zxvf libpcap-0.8.1.tar.gz
Acesse o diretório que foi criado após o Libpcap ser descompactado:
# cd libpcap-0.8.1[/u]
Para continuar com a instalação, execute o arquivo de configuração.
# ./configure
# make
# make install

Após instalar o Libpcap, comece a instalação do (download) Snort, caso não o tenha em CD.
Após o download, descompacte o arquivo e use:
# tar -zxvf snort-2.1.0.tar.gz
Acesse o diretório criado:
# cd snort-2.1.0
Esse é o ponto crucial da instalação do Snort, porque a maioria das pessoas realiza a instalação, utiliza a configuração padrão, pois desconhecem ou ignoram os parâmetros adicionais. A configuração padrão apenas gera logs com avisos das tentativas de ataques, porém, com o parâmetro -enable-flexrep, podemos habilitar respostas a incidentes.
Inicie a instalação
# ./configure -enable-flexresp
# make
# make install

Depois de instalado, crie os diretórios Snort em /etc/, e rule, em /etc/snort/, para as configurações e regras, respectivamente, execute:
# mkdir /etc/snort
# mkdir /etc/snort/rules

Acesse o diretório /etc e, depois, copie todos os arquivos para o diretótio de configuraçã do Snort.
# cd etc
# cp * /etc/snort

Agora, crie um grupo para o Snort, que também poderá ser denominado snort, e depois, um usuário.
#groupadd snort
#useradd snort -g snort

Crie, também, um diretório para o logs que forem gerados.
# mkdir /var/log/snort
Faça com que o usuário e o grupo snort/snort sejam os proprietários dos diretórios /etc/snort e /var/log/snort, dessa forma, eles terão acesso de leitura e gravação.
# chown -R snort.snort /etc/snort
# chown -R snort.snort /var/log/snort

Para que o Snort seja confiável, é necessário que hajamregras atualizadas
# tar -zxvf snortrules-stable.tar.gz
# cd rules
# cp * /etc/snort/rules

Agora, editaremos o arquivo /etc/snort/snort/conf, localiza a linha que contém var RULE_PATH ../rules e faça a alteração de forma que fique var RULE_PATH /etc/snort/rules, isto apontará as regras para a localização real do arquivo de regras. Feito isto, encontre var HOME_NET any e altere para o número IP de rede local. Após essas modificações, você terá:
var HOME_NET 10.0.0.0/255.255.255.0
Você pode testar e verificar se o Snort está funcionando corretamente:
#snort -1 /var/log/snort -c /etc/snort/snort.conf -u snort -g snort
Para entender o que aconteceu na linha anterior, uma breve explicação:
-/ é usado para indicar onde serão gravados os logs gerados no caso /var/log/snort.
-c indica onde está o arquivo configuração, /etc/snort/snort.conf.
-u qual usuário.
-g o grupo.

Edite o /etc/snort/snort.conf e acrescente var REINICIAR resp:rst_all, icmp_all; essa variável deve ser incluída no início do arquivo.

Abra qualquer arquivo de regras, pode ser o dos.rules e adicione no final de cada regra a variável $REINICIAR, pois ela será responsável pela finalização da conexão do atacante.

Este é o arquivo DoS Rules sem as alterações:  somente exemplo:
Citar
# DoS Rules
# ________
alert udp $EXTERNAL_NET any - > $HOME_NET 161 (msg: "DOS Cisco null snmp" ; dsize: 0; reference: arachnids, 536; )
alert tcp $EXTERNAL_NET any - > $HOME_NET 1347 (msg: "DOS Symantec Ghost config server" ; dsize: >1600; flags: A+; reference: arachnids, 494; )
Agora, com a variável $REINICIAR, deverá ficar assim:
Citar
# DoS Rules
# ________ $REINICIAR
alert udp $EXTERNAL_NET any - > $HOME_NET 161 (msg: "DOS Cisco null snmp" ; dsize: 0; reference: arachnids, 536;  $REINICIAR;)
alert tcp $EXTERNAL_NET any - > $HOME_NET 1347 (msg: "DOS Symantec Ghost config server" ; dsize: >1600; flags: A+; reference: arachnids, 494; $REINICIAR;)
É possível utilizar o Snort para conter o acesso a determinados sites, auxiliando o Squid no controle, basta criar suas próprias regras para isto.

Para criar regras, é possivel usar o modelo a seguir e fazer as modificaçõs necessárias.

Alert tcp $HOME_NET any -> $EXTERNAL_NET $HTTP_PORTS (msg: "Tentativa de acesso a site de conteúdo ADULTO" ; content:"sexo"; nocase; $REINICIAR;)

Essa regras possui três pontos importantes: a mensagem após msn: "Tentativa de acesso a site de conteúdo ADULTO", o conteúdo que deve ser filtrado é atribuído em content: "sexo" e a variável $REINICIAR. Para criar mais regras desse tipo, basta alterar a mensagem na variável msg e conteúdo em content.

Reinicie o Snort e, agora, seu Sistema de Detecção de Intrusos está pronto.
#snort -d -h 200.145.3.0/24 -c snort.conf -1 /var/log/snort

É muito importante verificar os logs gerados para conferir como anda a saúde de sua rede.

Fonte: Redes Locais com Linux
Autor: Douglas Viliazzi

100+[/b]

denisbr

Alguns comentários
É interessante configurar e "ensinar" o Snort a trabalhar junto com o iptables, assim como no SQUID, como foi escrito no texto, o snort só comunica de um possível ataque, mas não o impede, trabalhando com o Iptables é possível tentar bloquear esse ataque, principalmente se o ataque vier de fora da rede.

Existe maneira de fazer configurações, para que o Snort envie mensagens "Window Alert" para o administrador da rede em determinados tipos de ataques.

Em tempo, existe a comunidade Snor-br para troca de idéias.