Cadastro Newsletter

A revista do profissional de TI

Parceiros

Asterisk Brasil Br-Linux Clublinux Fuctura Invasão Ubuntu Games Ubuntu-SP Invasão
Yatego Shopping
Yatego - O maior site de comércio eletrônico da Alemanha.
Só o melhor7000 lojas, 2,5 milhões de excelentes artigos Melhores Mais relevantes

Meu carrinho Carrinho vazioIr para a loja
Home » Matérias » Rodando o Snort: Preliminares

Shopping

Certificação LPI-1 3ª Edição
3ª edição revista e ampliada do livro com curso completo para a nova Certificação LPIC-1.
Saiba mais
Technical Review 01 | Virtualização
Aprenda a projetar e implementar infraestruturas de virtualização com Xen, conheça outras soluções de Código Aberto, lendo as workshops profissionais, e maximize o desempenho em TI de sua empresa. Promoção especial de lançamento: de R$ 129,90 por R$ 99,00. Saiba mais
Pocket Shell Script II

Curso de Shell Script, parte II (100 páginas)

Saiba mais

Pocket Shell Script I

Curso de Shell Script, primeira parte (100 páginas)

Saiba mais

Pocket Desenvolvimento Web
100 páginas de informação
Crie aplicações multiplataforma com as ferramentas revolucionárias da Web 2.0.
Saiba mais

Pocket Asterisk e VoIP
100 páginas de informação.
Tutoriais e técnicas para implementar soluções VoIP profissionais, configurar hardware de telefonia da Digium e muito mais.
Saiba mais

Coleção Linux Pocket Pro | Virtualização
100 páginas de informação, tutoriais e técnicas para entrar no mundo da virtualização com Xen. Saiba mais

Coleção Linux Pocket Pro | Hardware
100 páginas de informação, tutoriais e técnicas para entrar no mundo do hardware para computadores. Saiba mais

Coleção Linux Pocket Pro | Administração de Redes
100 páginas de informação, tutoriais e técnicas para entrar no mundo da administração de redes Linux. Saiba mais

Coleção Linux Pocket Pro | Gerenciamento e desenho de Projetos
100 páginas de informação, tutoriais e técnicas para entrar no mundo de gerenciamento de projetos. Saiba mais

Coleção Linux Pro | Certificação LPI-1
Preparação completa para certificação LPI nível 1. Promoção especial de lançamento: de R$99,00 por R$79,90.
Saiba mais
Versão impressa esgotada
Coleção Linux Pro | Certificação LPI-2
Preparação completa para certificação LPI nível 2. Promoção especial de lançamento: de R$99,00 por R$79,90. Saiba mais
Versão impressa esgotada
Linux Pro LPI: dois livros pela metade de um
Comprando o livro LPI-1 com desconto de 37% por apenas R$50,00, você ainda ganha o livro LPI-2! Saiba mais
Versão impressa esgotada
Linux Pro Ubuntu
Guia de adoção do Ubuntu LTS no ambiente doméstico e corporativo. Promoção de lançamento: de R$ 99,00 por R$ 79,00. Saiba mais
Certificação LPI-2 2ª Edição
2ª edição revista e ampliada do livro com curso completo para a nova Certificação LPI-2. Promoção de lançamento: de R$ 110,00 por R$ 99,00
Saiba mais
Livro LPI-1 + LM #60 + LME PDF #1 #2 #3
Pacote promocional: Livro Certificação LPI-1, Revista Linux Magazine #60 e as três primeiras edições da Linux Magazine Especial em PDF. Saiba mais
Linux Pro Ubuntu + Easy Linux 16
Livro Linux Pro Ubuntu + Easy Linux #16. De R$ 89,90 por R$ 39,90 ( 55% de desconto). Saiba mais
Certificação LPI-1 3ª Edição + Chinelo Tux
Certificação LPI-1 3ª Edição + Chinelo Tux Saiba mais
Certificação LPI-2 2ª Edição + Chinelo Tux
Certificação LPI-2 2ª Edição + Chinelo Tux Saiba mais
Linux Pro Ubuntu + Chinelo Tux
Linux Pro Ubuntu + Chinelo Tux Saiba mais
Coleção Linux Pocket Pro | Kit com os livros 1 a 4
Gerenciamento de projetos, Redes, Hardware e Virtualização, tudo numa única caixa por um preço especial.
50% de desconto: de R$ 56,90 por R$ 29,90!
Saiba mais
Coleção Linux Pocket Pro | Kit com os livros 1 a 8
Todos os oito livros da coleção Linux Pocket Pro por apenas R$ 49,00. Saiba mais
LPI-1 3ª ed. + LPI-2 2ª ed.
LPI-1 + LPI-2 por apenas R$ 79,00. Saiba mais
Coleção Linux Pocket Pro | Kit com os livros 5 a 8
Linux Pocket Pro, livros 5 a 8, por apenas R$ 19,90. Saiba mais
LME 03 | VoIP com Asterisk

Essa edição aborda as tecnologias e soluções VoIP disponíveis para que você equipe sua empresa com o que há de mais moderno, eficiente e amigável, além de barato, é claro. Aprenda a instalar e configurar um servidor Asterisk com os principais recursos: Discagem Direta para Ramais – DDR –, Unidade de Resposta Automática – URA –, Distribuição Automática de Chamadas – DAC –, filas de atendimento, caixa postal de voz, planos de discagem e muito mais.

Também entrevistamos os executivos dos maiores fornecedores de equipamentos e das principais operadoras VoIP para você ficar a par de suas estratégias de mercado e descobrir qual se alinha melhor aos objetivos da sua empresa.


LME 02 | Thin Clients

Seja reaproveitando hardware comodity, seja utilizando dispositivos próprios para a implementação de sistemas de terminais leves, o Linux e o Código Aberto tem tudo a ver com esse mercado. Nesta edição especial da Linux Magazine mostramos diversas soluções para a implementação de redes de terminais leves, sempre pensando em excelentes padrões de desempenho e em ótima relação custo­-benefício.


LME 01 | Redes e Sistemas

A administração de sistemas é uma ciência ativa e multifacetada e é necessário mais do quer logs ou acompanhar os relatórios do Nagios para se considerar um iniciado nessa arte. É por isso que dedicamos ao sysadmin e a administração de sistemas nossa primeira edição da Linux Magazine Especial. Com cada uma das seções da revista iniciadas por um artigo de Augusto Campos, nosso colaborador assíduo em sua Coluna do Augusto, pretendemos abordar cada uma das facetas da administração de sistemas.


Matéria

Rodando o Snort: Preliminares

Publicado em 25/11/2008 às 17:01

Versão para impressão Enviar por email

Publicidade

A evolução do IPS

Os sistemas de prevenção/proteção contra intrusão (IPS) não são mais os mesmos
Faça o download do Whitepaper

Por Alexandre Teixeira

O principal objetivo deste artigo é apresentar de forma bem clara os requisitos mínimos para utilização do Snort em um ambiente simples, com apenas um sensor, utilizando as ferramentas auxiliares mais conhecidas. Não serão apresentados detalhamentos, mas direcionamentos, com intuito de eliminar a “nuvem” que aparece ao tentar o primeiro contato com esse NIDS – Network Intrusion Detection System.

A versão atualizada deste documento assim como outros artigos e dicas poderão ser encontrados no site da comunidade Snort no Brasil: http://snort.org.br.

O Caminho das Pedras

Serão listadas abaixo as etapas que envolvem as decisões mais importantes para implantação correta do Snort, mas sem muito detalhamento – isso poderá ser exposto em futuros artigos. A ordem da realização das etapas poderá mudar ligeiramente, dependendo do ambiente e da disponibilidade dos recursos. Essas etapas, quando bem executadas, tornam o aprendizado e o primeiro contato com o Snort mais fáceis.

Sistema operacional

Essa é uma etapa importante. O Snort pode rodar em plataformas específicas de hardware, como é o caso dos appliances da Sourcefire [1] – entretanto, usuários iniciantes utilizarão para aprendizado ou testes no ambiente de trabalho máquinas Intel, na maioria das vezes. Logo, deve-se escolher um sistema operacional com o qual o usuário tenha o mínimo de conhecimento. O autor sugere a utilização de Linux devido ao grande número de referências e documentação específica para este SO na Internet.

Neste ponto, também se define qual tipo de pacote de instalação será utilizado. No caso do Linux, recomenda-se a instalação do pacote padrão da distribuição, ou seja, caso o usuário utilize CentOS recomenda-se a instalação do pacote RPM referente ao software Snort dessa distribuição.

Armazenamento de Eventos

O Snort oferece várias maneiras de armazenar os logs dos dados de eventos gerados pelo IDS: em arquivo texto ou binário e nos banco de dados SQL listados abaixo:

  • PostgreSQL;
  • MySQL;
  • UnixODBC;
  • MS SQL Server;
  • Oracle.

A opção de arquivo binário é sugerida para cenários mais avançados, onde o Snort necessita de maior desempenho ao armazenar e processar os eventos. Para ler mais detalhes sobre essa solução, Alejandro Flores escreveu um ótimo artigo sobre o tema: “Implementando o Barnyard com Snort”. O artigo está disponível na seção de documentos do site [2].

Recomenda-se a escolha de qualquer base SQL, assim como no caso da escolha de SO, de acordo com o nível de conhecimento do usuário e a disponibilidade da utilização. Essa configuração é feita através do parâmetro output database do arquivo de configuração.

Implementação e Localização do Sensor

O sensor é tratado como uma interface ou ponto de entrada de dados capturados. Todo evento detectado pelo Snort é associado a um sensor, que basicamente é encarado pelo SO como uma interface em “modo promíscuo” conectada a um dispositivo de rede. Nesse modo, a placa de rede repassa ao SO todo o tráfego recebido, incluindo dados não direcionados ao endereço da placa de rede onde se localiza o sensor.

Dessa forma, a localização dos sensores é um dos principais pontos a serem definidos na arquitetura do sistema de detecção. A melhor localização é encontrada ao se responder a pergunta: O que se deseja monitorar? A resposta para essa questão pode ser bem ampla como a própria pergunta: tudo. No entanto, quanto maior o tráfego na rede e a quantidade de servidores, aplicações e usuários, maior será o consumo de recursos do IDS: processamento, espaço em disco e memória etc., sem contar o custo de administração e tuning.

Assim, quanto mais específico, melhor, ou seja, mais fácil será configurar o ambiente para obter os resultados esperados. O NIDS pode ter um fim específico, desde o monitoramento de invasões e atividades maliciosas ao auxílio na depuração de problemas de rede.

Dentre as aplicações e motivações para implementação do NIDS, podemos destacar:

  • Detecção de ataques com origem na Internet, incluindo probes ou portscans, worms e ataques direcionados (pentesting);
  • Utilização indevida da Internet (downloads, covert channels, vazamento de dados);
  • Geração de relatórios estatísticos (protocolos e serviços mais utilizados, incluindo tentativas de acesso ou verificação);
  • Capacity Planning;
  • Detecção de falhas de rede tais como interfaces com mau funcionamento, falha de arquitetura de rede (STP, roteamento etc.);
  • Detecção de utilizadores de software legado ou aplicações que serão desativadas;
  • Engenharia reversa de protocolos de comunicação;
  • Auxílio na aplicação e gerenciamento de regras de Firewall;
  • Identificação passiva de ativos de tecnologia.

Nos cenários acima, é comum se utilizar o sensor nos segmentos internos (redes específicas ou corporativas) ou nos ambientes externos (Internet, DMZ etc.). Não cabe aqui, no entanto, definir em qual segmento deverá ser implantado um sensor, mas apenas auxiliar na decisão, que dependerá de cada caso ou objetivo.

Vale lembrar que o sensor pode rodar em um único servidor ou máquina com fins específicos, sem necessidade de interface de rede em modo promíscuo. Um exemplo disso é um laboratório virtual para desenvolvimento de aplicações que se comunicam em rede.

Dependendo da aplicação, a localização do sensor pode inviabilizar a produção de eventos necessários ou ainda prejudicar o tuning ou a configuração para produzir tais eventos de maneira mais eficiente. Os cenários mais comuns utilizam port mirroring (espelhamento de portas) do switch ou hubs unindo os segmentos a serem monitorados. Além destes, existe ainda o mecanismo chamado network tap. Todos eles possuem características diferentes que influenciam diretamente no poder de vazão dos dados e, conseqüentemente, na performance da solução.

Recomenda-se a pesquisa e leitura sobre esse assunto, pois os métodos empregados fogem do propósito deste artigo. Na Internet existe muito material a respeito. Palavras-chave: network tap, port mirror, ids sensor.

Console para Visualização dos Eventos

Para o funcionamento do Snort é necessário basicamente uma biblioteca de captura de pacotes na rede, o driver da placa de rede e o próprio Snort, que é essencialmente um sniffer.

Entretanto, para armazenar os dados em uma base de dados SQL, é necessário uma API para que os eventos sejam armazenados em um banco de dados (que pode, inclusive, rodar na mesma máquina). Para visualizar os eventos, é necessário um software que apresente de forma simples os eventos persistidos na base de dados. Para configurar os parâmetros do arquivo snort.conf, pode-se utilizar outro software e assim por diante, cada software adicional com uma finalidade específica, como é o caso do Barnyard, já citado aqui.

Dos principais softwares para visualização dos eventos destacam-se o Acid, agora chamado de BASE. Ele necessita de um servidor web, pois disponibiliza as informações através de scripts escritos em PHP. Mais detalhes podem ser encontrados no site do projeto [3].

Existem outras consoles que podem ser baixadas do próprio site do Snort [4].

Mais pedras no caminho – erros durante a instalação

Após a verificação das etapas acima, o comando abaixo deve funcionar. Caso contrário, inicia-se a etapa de depuração de erros:

snort -i eth0 -T -N -u snort -g snort

Nesse caso, o Snort irá carregar o software necessário para capturar pacotes pela interface eth0 (parâmetro -i) apenas como teste (parâmetro –T) sem logar pacotes (-N) e utilizando as credenciais de usuário e grupo específicos do Snort para executar o processo snort.

Caso esteja tudo configurado corretamente, a saída abaixo será mostrada:

Running in packet logging mode 
Log directory = /var/log/snort 

        --== Initializing Snort ==--
Initializing Output Plugins! 
Verifying Preprocessor Configurations! 
Decoding LoopBack on interface eth0 

        --== Initialization Complete ==--

   ,,_     -*> Snort! <*-
  o"  )~   Version 2.8.3.1 (Build 17)
   ''''    By Martin Roesch & The Snort Team: http://www.snort.org/team.html
           (C) Copyright 1998-2008 Sourcefire Inc., et al.
           Using PCRE version: 6.6 06-Feb-2006


Snort sucessfully loaded all rules and checked all rule chains! 
Snort exiting

Se a saída apresentar algum erro ou não se parecer com o conteúdo mostrado acima, utilize o Google para encontrar a solução, colocando na caixa de busca o erro entre aspas. Exemplo:

Initializing Network Interface eth0 
ERROR: OpenPcap() FSM compilation failed: 
syntax error 
PCAP command: snort 
Fatal Error, Quitting...

Basta inserir no campo busca o texto “ERROR: OpenPcap() FSM compilation failed:” que serão apresentados vários links para fóruns e FAQs que discutem possíveis soluções. Outra opção é se cadastrar na lista de discussão do Snort-BR [5] para que outros usuários possam ajudá-lo.

Tuning – Arquivo de configuração Snort.conf

Enquanto essa etapa não funcionar, não há motivo para alterar ou editar o arquivo de configuração do Snort, snort.conf. Este só deve ser modificado após o Snort iniciar corretamente.

Essa etapa pode ser considerada como final no processo, apesar de ser constante, pois é aqui que são tratados os famosos eventos falsos positivos. Além disso, é nesse momento que o usuário irá fazer as seguintes etapas:

  • Configuração de banco de dados (decisão apresentada acima);
  • Configuração de pré-processadores;
  • Configuração das variáveis (HOME_NET principalmente);
  • Configuração de assinaturas;
  • Configuração de módulos e plugins.

Dos pontos apresentados acima, o mais importante sem dúvida é a configuração de variáveis de ambiente, motivo pelo qual será abordado neste artigo.

Variáveis do Arquivo Snort.conf

No arquivo de configuração do Snort – snort.conf – existem várias variáveis que serão utilizadas, principalmente, na montagem das assinaturas. Logo, conclui-se que seu valor irá influenciar diretamente o comportamento do sensor, seja ao gerar eventos incorretos demais (falsos positivos) ou ao deixar de gerar eventos desejáveis, intrusões, ataques e outros eventos que se deseje monitorar.

A principal variável é HOME_NET, que deve ter como valor uma ou mais redes ou hosts a serem monitorados. Assim, caso essa variável seja mantida com o valor padrão (any - qualquer), qualquer IP será tratado como monitorado pelo Snort, o que irá gerar mais eventos e, conseqüentemente, mais falsos positivos e outros eventos indesejáveis.

Um evento é qualquer log gerado pelo Snort. Ele pode ser uma simples informação (uma consulta DNS) ou um ataque (pacote ICMP suspeito), ou ainda um indício de intrusão ou invasão (saída de um comando de listagem em um pacote HTTP).

Nesse contexto, faz algum sentido um ataque HTTP em direção a um servidor DNS? Pode ser que sim, caso seu sensor tenha como finalidade gravar todos os eventos para fins estatísticos; ou não, dada a quantidade de eventos e o conhecimento do analista de segurança acerca da arquitetura de firewall e servidores, só se faz necessário gerar alertas que envolvam conexões que realmente podem existir, com começo e fim.

Na prática, isso é configurado através das variáveis ou através da edição ou criação de regras de exclusão específicas (tópico um pouco mais avançado). No exemplo acima, trata-se da variável HTTP_SERVERS, que é utilizada nas assinaturas que geram alertas ou eventos de conexões ou ataques envolvendo o protocolo HTTP, geralmente implementado nas portas 80 e 443.

O ideal é testar pelo menos os valores das variáveis HOME_NET e EXTERNAL_NET, pois elas são utilizadas pela maioria das assinaturas. Com isso, verifica-se o comportamento no cenário utilizado. Uma boa prática, aplicável na maioria dos cenários, é definir um valor específico para HOME_NET e configurar o valor da variável EXTERNAL_NET para “tudo menos as redes definidas na variável HOME_NET”, ou seja, o valor ! $HOME_NET. Novamente, isso dependerá do seu cenário e deverá ser avaliado, de acordo com a necessidade.

Essas explicações servem apenas de incentivo ao leitor para utilizar de maneira eficiente as funcionalidades disponíveis no Snort. Qualquer modificação, seja em regras, pré-processadores ou variáveis, poderá influenciar no número de eventos gerados pelos sensores.

Manutenção e Atualização de Assinaturas ou Regras

Este é um dos tópicos mais polêmicos em relação ao Snort. Mesmo sendo um dos poucos NIDS que disponibilizam e permitem a total customização de regras, alguns usuários ainda não concordam com a metodologia utilizada pela empresa que mantém o Snort.

As assinaturas desenvolvidas pela equipe da empresa somente são disponibilizadas à comunidade (usuários registrados no portal do Snort) após 30 dias, pois são distribuídas sob a licença da equipe de desenvolvedores da Sourcefire – VRT (Vulnerability Research Team). Os detalhes da licença e da distribuição são apresentados em [6]. Esse é outro tópico que merece um artigo específico. Mais informações poderão ser encontradas nos links [7], [8] e [9]. O processo de atualização de assinaturas pode ser automatizado, e existem ferramentas específicas para esse fim, como o Oinkmaster [10].

Sobre o Autor

Alexandre Teixeira (alexandre.abreuΘgmail.com) é analista de segurança e especialista em soluções Open Source. Atualmente, trabalha em uma grande empresa do setor de telecomunicações. Possui as certificações SSCP, GCUX, RHCE, LPIC-2, SnortCP e outras. Dúvidas ou sugestões podem ser enviadas para seu email.

Links deste artigo

[1] Sourcefire: http://sourcefire.com

[2] Documentação no site do Snort: http://www.triforsec.com.br

[3] BASE: http://base.secureideas.net/

[4] Interfaces para o Snort: http://snort.org/dl/contrib/front_ends/

[5] Lista de discussão do Snort-BR: http://snort.org.br/index.php?option=com_content&task=blogcategory&id=19&Itemid=27

[6] Licença e distribuição de assinaturas: http://www.snort.org/about_snort/licenses/vrt_license.html

[7] Regras Oficiais: http://www.snort.org/vrt/

[8] White Hats: http://www.whitehats.com/ids/

[9] Emerging Threats: http://www.emergingthreats.net/

[10] Oinkmaster: http://oinkmaster.sourceforge.net/

Compartilhe


Comentários

Entre seus dados para comentar a matéria:


Esqueceu a senha?
Cadastro

Outras matérias

Linux 2.6.33Publicado em 04/03/2010 às 14:25Confira o que a versão mais recente do kernel Linux 2.6.33 traz de novo.Leia mais...
Particionamento ideal no UbuntuPublicado em 03/03/2010 às 17:14Quer atualizar o sistema sem perder nenhuma das suas configurações pessoais (papel de parede, ícones da área de trabalho)? Então leia este artigo e aprenda a "criar um /home separado no Ubuntu".Leia mais...
Controle de usuários com GNU Accounting UtilitiesPublicado em 29/01/2010 às 9:16Para gerenciar servidores Linux com mais qualidade e segurança, é necessário saber tudo que acontece e como acontece. Para nos ajudar nessa tarefa, podemos usar as GNU Accounting Utilities, mais conhecidas por acct.Leia mais...
“Liberdade não é liberdade de escolha” – assim falou Richard StallmanPublicado em 18/06/2009 às 20:23Em sua atual passagem pelo Brasil, Richard Stallman concedeu à Linux Magazine uma agradável entrevista. Ele falou sobre SCO, Sun, Oracle, a liberdade de software e o conflito com aqueles que desejam subverter o significado de “Free Software” (Software Livre), usando em seu lugar o termo “Open Source” (Código Aberto) – além de críticas à Microsoft e ao software proprietário como um todo, é claro.Leia mais...
Análise do novo Ubuntu 9.04Publicado em 27/04/2009 às 4:43

Pontualmente na data de lançamento programada — que acontece em um ciclo de seis meses — foi lançada a nova versão do Ubuntu, a 9.04, codinome Jaunty Jackalope. Devagar — mas sempre —, a distribuição patrocinada pela Canonical avança em usabilidade, desempenho e beleza. Este artigo traz uma análise do novo Ubuntu, apresentando as maiores novidades da versão 9.04.

Leia mais...
Xen: Entrevista com CTO de virtualização da Citrix e com gerente da comunidade XenPublicado em 20/04/2009 às 15:05

Entrevista com Simon Crosby, CTO da divisão de virtualização e gerenciamento da Citrix, e Stephen Spector, gerente de comunidade Xen.org

Leia mais...
Kernel 2.6.29: O Linux está com o diabo (da Tasmânia)!Publicado em 24/03/2009 às 20:04Novo kernel, novo recorde. Com mais de 1 milhão de novos trechos de código, o Linux 2.6.29 chega repleto de novidades para todos os usuários.Leia mais...
Análise do Debian 5.0 “Lenny” [ATUALIZADA]Publicado em 16/02/2009 às 2:53

Quase dois anos após o lançamento da versão 4.0 (codinome “Etch”) — e pouco depois do lançamento de sua sétima revisão —, a equipe de desenvolvimento do projeto Debian lançou finalmente a versão 5.0 (codinome “Lenny”) de uma das distribuições GNU/Linux mais conceituadas entre os profissionais habituados a trabalhar com o sistema do pinguim. Com nossa análise você ficará sabendo o que mudou, o que melhorou, se algo piorou e como está a nova versão do Debian.

Leia mais...
Mobilidade Programada II — Programando um rastreador GPS para o AndroidPublicado em 12/02/2009 às 1:04

Há alguns dias publicamos um artigo inicial, que mostrava como preparar adequadamente um ambiente de desenvolvimento de aplicativos para o Android. No segundo artigo da série, vamos mostrar como desenvolver um programa de apenas poucas linhas de código, mas que é capaz de ler e exibir coordenadas GPS.

Leia mais...
Mais matérias