Introdução

Embora os primeiros tipos de sistemas de detecção de intrusão de rede remontem ao início dos anos 80, o conceito do IDS decolou quando Martin Roesch criou seu sistema IDS livre e de código aberto SNORT. Devido ao seu design leve e suas opções flexíveis de implementação, a base de usuários do Snort cresceu rapidamente nos anos seguintes (até 400.000 atualmente).

Em 2001, Martin Roesch fundou a empresa Sourcefire (adquirida pela Cisco em 2013) para um produto comercial IDS baseado no SNORT. A versão original gratuita e de código aberto da SNORT permaneceu disponível, porém, e ainda é amplamente utilizada em redes em todo o mundo. Entretanto, alguns concorrentes ganharam terreno no domínio do IDS de código aberto, mais notadamente a Suricata IDS.

Quais são as principais diferenças entre eles, e o que podemos esperar no futuro do SNORT?

Regras

Uma solução IDS é apenas tão boa quanto as regras disponíveis que pode ser aplicada ao tráfego monitorado. Snort sempre teve muito apoio da comunidade, e isso levou a um conjunto de regras substancial, atualizado regularmente. A sintaxe das regras é bastante simples, e a estrutura do programa permite que qualquer um possa implementar regras personalizadas em seu IDS ou compartilhá-las com a comunidade.

Algumas partes comerciais também desenvolvem regras SNORT, que podem ser compradas por uma taxa mensal ou anual. Alguns exemplos são as regras SO/VRT do Talos (lançadas gratuitamente após um mês) e CrowdStrikes Threat Intelligence Services.

Suricata pode usar as mesmas regras do SNORT. Muitas, mas não todas, as regras VRT ainda funcionam. Suricata tem seu próprio conjunto de regras, inicialmente liberado para assinantes pagantes, mas disponível gratuitamente após 30 a 60 dias: Ameaças Emergentes. Estas regras Suricata fazem mais uso dos recursos adicionais que Suricata tem a oferecer, tais como detecção de protocolo port-agnostic e detecção automática de arquivos e extração de arquivos.

Detecção de aplicativos

Desde os primeiros dias de existência do Snort, tem sido dito que o Snort não é “sensível a aplicativos”. Ele simplesmente olha para o tráfego de acordo com suas regras e toma uma ação (alerta, drop e assim por diante) quando há uma correspondência. Os pré-processadores ajudam moldando o tráfego em um formato utilizável para que as regras sejam aplicadas a: por exemplo, executando descompressão e decodificação, mas não havia necessidade do Snort entender qual aplicativo gerou os dados.

Requisitos de negócios mudaram ao longo do tempo, entretanto, para se adaptar ao mercado, o Snort lançou o OpenAppID em sua versão 2.9.7 em 2014. O OpenAppID permite a detecção de aplicativos através dos chamados Detectores de Camada 7. Embora a existência de um aplicativo conhecido nem sempre seja um incidente de segurança direta (o uso do Dropbox, por exemplo), ele permite uma melhor compreensão do que existe dentro da rede. Não apenas aplicações previamente desconhecidas podem ser encontradas, mas seu tráfego também pode ser abandonado ou alertado ligando um AppID a uma regra tradicional SNORT IDS/IPS.

Suricata funciona de forma ligeiramente diferente neste espaço. Ele suporta regras de detecção de camada de aplicativos e pode, por exemplo, identificar tráfego HTTP ou SSH em portas não-padrão baseadas em protocolos. Ele também aplicará configurações de log específicas de protocolo a essas detecções.

Não há realmente um produto melhor ou pior neste espaço, depende realmente do que o negócio está procurando, e qual sistema melhor preenche as lacunas na detecção. Como ambos são totalmente de código aberto, configurar um ambiente de teste é relativamente rápido e barato.

Multithreading

Um dos principais benefícios do Suricata é que ele foi desenvolvido muito mais recentemente do que o Snort. Isto significa que ele tem muito mais características a bordo que são praticamente imperdíveis hoje em dia. Uma dessas características é o suporte para multithreading.

O aumento no tráfego de rede ao longo dos anos tem sido acompanhado de perto pelas demandas de processamento em dispositivos IDS (medido em pacotes por segundo). Felizmente, Suricata suporta multithreading out of the box. O Snort, no entanto, não suporta multithreading. Não importa quantos núcleos uma CPU contenha, apenas um único núcleo ou thread será usado pelo Snort.

Existe uma solução bastante complicada: correr várias instâncias de SNORT de uma única thread, todas alimentadas no mesmo log. As despesas gerais adicionadas para gerenciar este processo (AutoFP) e o alto custo de hardware, no entanto, significa que esta configuração raramente é encontrada em ambientes de produção. SNORT3 suporta multithreading, mas ainda está no estágio Alfa, rodando como Snort++. Naturalmente, não é aconselhável usar um produto Alpha-stage em um ambiente de produção. Multithreading é sem dúvida um forte argumento para considerar Suricata sobre Snort.

Exploração de arquivos

Suricata suporta extração de arquivos. Este é um recurso incrivelmente útil que permite a extração automática de arquivos selecionados uma vez que uma regra contendo a opção “filestore” é acionada. É possível, por exemplo, extrair todos os arquivos .pdf ou todos os arquivos .png de pixel único e armazená-los em uma pasta pré-configurada para posterior análise manual, buscas VirusTotal ou mesmo sandboxing automatizado.

Alternatives

Embora Snort e Suricata sejam certamente os sistemas de detecção de intrusão open-source mais populares, existem algumas alternativas. A versão anterior mencionada do SNORT3 atualizado parece muito promissora, com seu suporte para multithreading, identificação de serviços e uma linguagem de regras mais direta. Isto tem estado em desenvolvimento há muitos anos. Entretanto, o estágio Alpha remonta a 2014, e a data de lançamento de uma versão em produção ainda não foi definida.

Existem alternativas para as soluções tradicionais IDS/IPS também, mas estas às vezes podem funcionar de forma um pouco diferente. O Bro Network Security Monitor (agora conhecido como Zeek), por exemplo, é mais um sistema de detecção de anomalias. Onde Snort e Suricata funcionam com assinaturas IDS tradicionais, Bro/Zeek utiliza scripts para analisar o tráfego.

Uma vantagem significativa do Bro/Zeek é que esses scripts também permitem fluxos de trabalho altamente automatizados entre diferentes sistemas, uma abordagem que permite decisões muito mais granulares do que as antigas ações de passar ou largar. Sua configuração pode tornar-se bastante complicada, no entanto.

Conclusão

Existem várias boas opções de IDS de código aberto por aí. Devido às suas diferenças, porém, nem todas as soluções funcionarão para todos os ambientes. A seleção dos melhores produtos deve ser baseada em que outros produtos de segurança, potencialmente sobrepostos, já existem, que tipo de tráfego atravessa a rede, a quantidade de tráfego e o conjunto de habilidades do pessoal de TI disponível.

Deixe uma resposta

O seu endereço de email não será publicado.