Notícia

Sistemas de Proteção e Detecção de Intrusão

14/05/2020

Na Matéria do mês o Prof. Wagner da CD6 – Centro de Desenvolvimento de Pessoas e Negócios, está ensinando aos alunos das turmas de Segurança da Informação, tudo sobre sistemas de detecção de intrusão e também sobre proteção contra instrusões, são os chamados IDS e IPS.

 

No tutorial abaixo, você vai aprender passo a passo como instalar e configurar o Snort com suporte a MySQL e integrado com o Guardian. Mas antes de colocar a mão na massa, vamos entender o que é o Snort.


O Snort é um sistema de detecção de intrusão de rede, ou simplesmente NIDS, é uma ferramenta open source, que nos permite monitorar o tráfego da rede e descobrir quando a rede está sofrendo de acessos não autorizados que podem ser de um potencial atacante. 

O Snort funciona da seguinte maneira: Inicialmente os pacotes são capturados pelo Snort utilizando o DAQ, depois são remontados pelos pré-processadores para analisar seu conteúdo e comparar com as assinaturas existentes, para dar confiabilidade ao IDS e evitar falso-negativo. Depois, o Payload é comparado com as regras que possuímos, então, caso exista uma regra que bata com o Payload, é gerado o output, que pode ser um alerta, logs ou alguma medida de ação. 

O Snort pode vir a ter duas coisas que podem atrapalhar sua confiabilidade, que são:

  • Falso-negativo → É quando um pacote passa sem ser notificado pelo IDS , o IDS pensa que o pacote é fluxo normal. Em minha opinião, pior que os falsos-positivos.
  • Falso-positivo → É quando o pacote é notificado como intrusivo, mas na verdade, é somente um falso alerta, alarme falso. O grande problema de muito falso positivo é a ferramenta perder a credibilidade, é a velha história do alarme do carro que dispara muito, e quando realmente for um furto, você não vai acreditar que estão levando seu carro.


Segue abaixo o tutorial

MYSQL

Primeiramente, iremos instalar e configurar nosso banco de dados MySQL

# aptitude install mysql-server 

Depois de instalar, iremos criar o usuário "snort": 

# mysql -u root -p 

Entre com a senha de root que você forneceu durante a instalação. 

mysql> grant all privileges on snort.* to snort@localhost identified by "123456";
mysql> quit; 

Agora entre no MySQL usando o usuário que acabamos de criar: 

# mysql -u snort -p 

Informe a senha que utilizou para criar o usuário. Verifique as bases: 

mysql> show databases; 

Crie a base Snort no banco: 

mysql> create database snort; 

Saia: 

mysql> quit 

 

SNORT


 

Agora é hora de instalar o Snort: 

# aptitude install snort-mysql 

Durante a instalação, informe a faixa de rede e a máscara que sua rede usa. Depois você será questionado se deseja que seja criado uma base de dados para gravar os logs, selecione "Sim" e depois dê OK. 

Agora acesse o diretório da documentação do Snort que contém as tabelas: 

# cd /usr/share/doc/snort-mysql 

Use o arquivo "create_mysql" para criar as tabelas na base Snort do banco: 

# zcat create_mysql.gz | mysql -u snort -h localhost -p snort 

Informe a senha do usuário "snort". Depois acesse a base Snort do banco e verifique se as tabelas foram criadas com sucesso: 

# mysql -u snort -p 

(Entre com a senha do usuário snort) 

mysql> show databases;
mysql> use snort;
mysql> show tables;
mysql> status;
mysql> quit; 

Vá ate o diretório onde estão os arquivos de configuração do Snort: 

# cd /etc/snort 

Renomeie o arquivo "snort.conf": 

# mv snort.conf snort.conf.orig 

Crie uma cópia do arquivo que acabamos de renomear sem os comentários, para o arquivo ficar menor e mais legível: 

# cat snort.conf.orig | grep -v ^# | grep . > snort.conf 

Agora vamos editar o arquivo "snort.conf": 

# pico snort.conf 

Na primeira linha (var HOME_NET any) remova o "any" e digite a faixa de rede/máscara: 
 

var HOME_NET 192.168.0.0/24


Agora, quase no final do arquivo, abaixo da linha (output log_tcpdump: tcpdump.log), digite o seguinte: 
 

output database: log, mysql, user=snort password=123456 dbname=snort host=localhost
output alert_full: /var/log/snort/alert


Entendendo: Na primeira linha informamos o nome de usuário da banco, a senha, o nome da base e o host do banco. No exemplo estou usando localhost, mas é muito importante você colocar o banco de dados em outro servidor. Já na segunda linha, informamos o Snort para gerar os logs no arquivo alert. 

Agora vá até o arquivo "snort.debian.conf" e dê uma olhada na linha (DEBIAN_SNORT_INTERFACE="eth0"), mude-a caso deseje que o Snort escute em outra interface. 

Remova o arquivo de pendência de configuração do banco de dados: 

# rm db-pending-config 

Entre no arquivo /etc/snort/database.conf e comente a seguinte linha: 
 

### output database: log, mysql,


Depois disso, pode iniciar o Snort: 

# /etc/init.d/snort start 

Faça um teste, fique monitorando o arquivo de log do Snort: 

# tail -f /var/log/snort/alert 

E em outra máquina, use o Nmap para escanear o host do Snort: 

# nmap -sX 192.168.0.1 

Obs.: Esse é o IP do Snort no meu laboratório. 

Fique acompanhando o arquivo "alert" e veja o que acontece. 

Pronto. Até aqui já temos o Snort pronto para gerar os alertas e gravar no banco de dados, mas ele ainda não é capaz de bloquear nada, pois não está com o IPS Guardian. Vamos fazer isso agora. 

 

 

 

 

 

 

 

GUARDIAN


 

Primeiro baixaremos o Guardian: 

# cd /opt
# wget -cv http://www.chaotic.org/guardian/guardian-1.7.tar.gz 

Agora iremos descompactar: 

# tar -xvzf guardian-1.7.tar.gz
# cd guardian-1.7 

Editar o arquivo "guardian.conf": 

# pico guardian.conf 

Informar o IP do servidor na linha HostIpAddr: 
 

HostIpAddr        192.168.0.1


Informe a interface na linha Interface: 
 

Interface        eth0


Na linha "AlertFile", informe o caminho do arquivo "alert": 
 

AlertFile        /var/log/snort/alert


Salve o arquivo e copie para o /etc/

# cp guardian.conf /etc/ 

Crie o arquivo /etc/guardian.ignore e nele informe os IPs que serão ignorados pelo Guardian. No caso, pode colocar o IP do servidor: 

# pico /etc/guardian.ignore 
 

192.168.0.1


Copiaremos os scripts de bloqueio e desbloqueio: 

# cd scripts
# cp iptables_block.sh /sbin/guardian_block.sh
# cp iptables_unblock.sh /sbin/guardian_unblock.sh
 

Caso seu sistema esteja em português, edite o arquivo "guardian.pl": 

# cd /opt/guardian-1.7
# pico guardian.pl 

Procure pela linha que contém "inet addr" (linha 320) e mude para: 
 

inet end


Salve o arquivo e copie para o /sbin/

# cp guardian.pl /sbin 

Crie o arquivo de log do Guardian: 

# touch /var/log/guardian.log 

Criaremos o script para o Guardian ser executado automaticamente durante o boot: 

# pico /etc/init.d/guardian 
 

#!/bin/bash 

test -f /sbin/guardian.pl || exit 0
case "$1" in
    start)
          guardian.pl -c /etc/guardian.conf
          ;;
    stop)
          kill -9 $(pgrep guardian.pl)
          ;;
    *)
          echo "Opção invalida. Use start ou stop."
          exit 2
          ;;
esac
exit 0


Dê permissão de execução para o script: 

# chmod 755 /etc/init.d/guardian 

Agora pode iniciar o Guardian com o comando: 

# /etc/init.d/guardian start 

E parar com o: 

# /etc/init.d/guardian stop 

Habilite o Guardian para ser executado durante o boot com o assistente rcconf

# aptitude install rcconf
# rcconf 

Marque a opção do Guardian e dê OK. 

 

CONCLUSÃO

Agora é só fazer os testes e ver se está tudo OK. O Guardian está bloqueando ataques, você pode usar o mesmo teste antes de executar o Nmapcomo mostrado acima e ver se o Guardian vai bloquear o IP do atacante.

 

Voltar