Introdução
Bem-vindo ao laboratório de Introdução ao Snort IDS.
O Snort é um sistema de prevenção de intrusão em rede (NIPS) e sistema de detecção de intrusão em rede (NIDS) de código aberto, capaz de realizar análise de tráfego em tempo real e registro de pacotes em redes IP. Ele pode realizar análise de protocolo, busca e correspondência de conteúdo, sendo comumente usado para bloquear ativamente ou detectar passivamente uma variedade de ataques e sondagens, como estouros de buffer (buffer overflows), varreduras de porta furtivas (stealth port scans), ataques a aplicações web e muito mais.
Em um nível elevado, um IDS responde a uma pergunta diferente de um sniffer de pacotes. Um sniffer ajuda você a observar o tráfego. Um IDS tenta decidir se parte desse tráfego merece atenção. O Snort faz isso combinando a inspeção de pacotes com uma linguagem de regras. Em outras palavras, ele transforma tráfego bruto em eventos relevantes para a segurança.
Neste laboratório, você aprenderá o básico do Snort. Você explorará seu arquivo de configuração, aprenderá como validar a sintaxe da configuração e executará o Snort em dois de seus principais modos operacionais: modo Sniffer e modo Registrador de Pacotes (Packet Logger).
Inspecionar o Arquivo de Configuração do Snort
Nesta etapa, você explorará o arquivo de configuração principal usado pelo Snort. Entender este arquivo é essencial porque ele dita como o Snort se comporta, qual rede ele protege e quais regras ele aplica.
A configuração é importante porque a qualidade da detecção depende muito do contexto. Um IDS que não sabe quais endereços pertencem ao seu ambiente não consegue raciocinar bem sobre o tráfego de entrada versus o tráfego interno. Variáveis como HOME_NET não são, portanto, configurações cosméticas. Elas fazem parte de como o Snort modela a rede que está defendendo.
O arquivo de configuração principal do Snort está localizado em /etc/snort/snort.conf. Este arquivo contém várias configurações, incluindo variáveis de rede, caminhos para arquivos de regras e configurações de pré-processadores.
Vamos começar navegando para o diretório do seu projeto, que é o seu espaço de trabalho padrão.
cd ~/project
Uma das variáveis mais importantes no arquivo de configuração do Snort é a HOME_NET. Esta variável define a rede interna que o Snort deve proteger. Por padrão, ela geralmente é definida como any, o que significa que o Snort monitorará todo o tráfego de rede.
Você pode usar o comando grep para pesquisar a variável HOME_NET dentro do arquivo de configuração. O comando grep é uma ferramenta poderosa no Linux usada para pesquisar padrões de texto específicos dentro de arquivos. Como o arquivo de configuração é protegido, precisamos usar sudo para executar o comando com privilégios administrativos.
sudo grep "ipvar HOME_NET" /etc/snort/snort.conf
Você deverá ver uma saída semelhante a esta:
ipvar HOME_NET any
Esta saída confirma que a variável HOME_NET está atualmente definida como any. Em um ambiente de produção real, você normalmente alteraria isso para corresponder à sua sub-rede IP interna específica (por exemplo, 192.168.1.0/24) para reduzir falsos positivos e melhorar o desempenho.
Você também pode visualizar todo o arquivo de configuração usando o comando less se quiser explorar mais, embora ele seja bastante longo. Por enquanto, saber onde o arquivo está e como encontrar variáveis-chave é suficiente.
Testar a Sintaxe da Configuração
Nesta etapa, você aprenderá como testar o arquivo de configuração do Snort em busca de erros de sintaxe.
A validação antes da implantação é uma prática operacional crítica. Uma regra de detecção ou arquivo de configuração só é útil se o motor puder realmente carregá-lo. O teste de sintaxe é o equivalente do IDS a compilar o código antes do lançamento: ele detecta alterações quebradas precocemente e evita pontos cegos na produção.
Sempre que você fizer alterações no arquivo snort.conf, é altamente recomendável testar a configuração antes de iniciar ou reiniciar o serviço Snort. Se houver um erro de digitação ou uma configuração incorreta, o Snort falhará ao iniciar, o que pode deixar sua rede sem monitoramento.
O Snort fornece um modo de teste integrado. Você pode usar a flag -T para dizer ao Snort para testar a configuração e a flag -c para especificar o caminho para o arquivo de configuração que você deseja testar.
Execute o seguinte comando para testar a configuração padrão:
sudo snort -T -c /etc/snort/snort.conf
Como o Snort precisa acessar interfaces de rede e arquivos de nível de sistema, você deve executá-lo com sudo para conceder privilégios administrativos.
À medida que o comando é executado, o Snort enviará muitas informações para o terminal. Ele está inicializando pré-processadores, carregando regras e validando a sintaxe.
Role até o final da saída. Você está procurando por uma mensagem de sucesso específica que se parece com isto:
--== Initialization Complete ==--
,,_ -*> Snort! <*-
o" )~ Version 2.9.15.1 GRE (Build 68)
'''' By Martin Roesch & The Snort Team: http://www.snort.org/contact#team
Copyright (C) 2014-2019 Cisco and/or its affiliates. All rights reserved.
Copyright (C) 1998-2013 Sourcefire, Inc., et al.
Using libpcap version 1.10.1 (with TPACKET_V3)
Using PCRE version: 8.39 2016-06-14
Using ZLIB version: 1.2.11
Rules Engine: SF_SNORT_DETECTION_ENGINE Version 3.0 <Build 1>
Preprocessor Object: SF_GTP Version 1.1 <Build 4>
Preprocessor Object: SF_CORVUS Version 1.1 <Build 4>
...
Snort successfully validated the configuration!
Snort exiting
A frase-chave aqui é Snort successfully validated the configuration!. Isso significa que seu arquivo snort.conf está sintaticamente correto e pronto para ser usado.
Executar o Snort no Modo Sniffer
Nesta etapa, você executará o Snort no modo Sniffer.
O modo Sniffer é a maneira mais básica de usar o Snort. Nesse modo, o Snort simplesmente lê os pacotes que fluem pela rede e os exibe no console em um fluxo contínuo. Ele funciona de forma muito semelhante ao popular utilitário tcpdump.
Isso é útil pedagogicamente porque mostra que a tecnologia IDS ainda começa com pacotes. Antes que o Snort possa alertar sobre o tráfego, ele precisa capturar e decodificar esse tráfego corretamente. Aprender o modo Sniffer primeiro mantém a base ao nível de pacote visível, em vez de tratar os alertas como algo mágico.
Para executar o Snort no modo sniffer, você usa a flag -v (verbose). Isso diz ao Snort para imprimir os cabeçalhos dos pacotes TCP/IP na tela.
Como o tráfego de rede pode ser avassalador e inundar seu terminal, também usaremos a flag -n seguida por um número. Isso diz ao Snort para capturar apenas um número específico de pacotes e, em seguida, sair automaticamente.
Execute o seguinte comando para capturar e exibir 5 pacotes:
sudo snort -v -n 5
Você verá uma saída semelhante à seguinte, mostrando os cabeçalhos dos pacotes:
Running in packet dump mode
--== Initializing Snort ==--
Initializing Output Plugins!
pcap DAQ configured to passive.
Acquiring network traffic from "eth0".
...
05/18-14:32:10.123456 192.168.1.10:54321 -> 8.8.8.8:53
UDP TTL:64 TOS:0x0 ID:12345 IpLen:20 DgmLen:63
Len: 35
...
===============================================================================
Snort exiting
Se você quiser ver ainda mais detalhes, pode combinar flags. Por exemplo, adicionar -d exibe os dados da aplicação (payload) do pacote, e -e exibe os cabeçalhos da camada de enlace (endereço MAC).
Vamos tentar capturar 2 pacotes com detalhes completos (cabeçalhos, dados e informações da camada de enlace):
sudo snort -vde -n 2
Este modo é incrivelmente útil para solucionar problemas de conectividade de rede ou inspecionar rapidamente que tipo de tráfego está atravessando sua interface de rede no momento.
Executar o Snort no Modo Registrador de Pacotes
Nesta etapa, você aprenderá como executar o Snort no modo Registrador de Pacotes (Packet Logger).
Embora o modo Sniffer seja ótimo para visualização em tempo real, ele não é prático para monitoramento de longo prazo ou análise detalhada. O modo Registrador de Pacotes resolve isso salvando os pacotes capturados no disco em um formato que pode ser analisado posteriormente usando ferramentas como o Wireshark ou o próprio Snort.
Evidências de pacotes salvos são importantes porque alertas e pacotes se complementam. Um alerta informa que uma regra foi disparada. O registro do pacote permite que você confirme o que realmente aconteceu e investigue detalhes que o resumo do alerta pode não incluir. Pilhas de monitoramento maduras geralmente preservam ambos.
Primeiro, você precisa criar um diretório para armazenar os arquivos de log. Vamos criar um diretório chamado snort_logs dentro da pasta do seu projeto.
mkdir -p ~/project/snort_logs
Para executar o Snort no modo Registrador de Pacotes, você usa a flag -l seguida pelo caminho para o seu diretório de log. Também usaremos -dev para capturar detalhes completos do pacote e -n 10 para capturar exatamente 10 pacotes antes de sair.
Execute o seguinte comando:
sudo snort -dev -l ~/project/snort_logs -n 10
O Snort capturará 10 pacotes e os gravará no diretório que você especificou. Você não verá os pacotes impressos na tela desta vez, mas verá os resumos de inicialização e saída.
Assim que o Snort terminar de ser executado, você pode verificar se o arquivo de log foi criado listando o conteúdo do diretório snort_logs:
ls -l ~/project/snort_logs
Você deverá ver um arquivo chamado snort.log. seguido por um carimbo de data/hora, semelhante a este:
total 4
-rw------- 1 root root 1234 May 18 14:45 snort.log.1684421100
Este arquivo é salvo em um formato binário (pcap). Você não pode lê-lo diretamente com um editor de texto como nano ou cat. Em vez disso, você normalmente usaria uma ferramenta como tcpdump ou o leria de volta no Snort usando a flag -r (read) para análise posterior.
Resumo
Parabéns! Você concluiu com sucesso o laboratório de Introdução ao Snort IDS.
Neste laboratório, você aprendeu os conceitos fundamentais do Snort. Você explorou o arquivo de configuração principal (snort.conf) e aprendeu como validar sua sintaxe usando a flag -T para evitar erros de inicialização. Você também praticou a execução do Snort no modo Sniffer para visualizar o tráfego de rede ao vivo em seu terminal, e no modo Registrador de Pacotes para salvar pacotes capturados em um diretório para análise futura. Essas habilidades fundamentais são essenciais para qualquer pessoa que pretenda utilizar o Snort para monitoramento de segurança de rede e detecção de intrusão.



