0Pricing
Cyber Security Academy · Aula

Regras de assinatura com Snort e Suricata

Escreva e interprete regras de rede.

Regras de assinatura com Snort e Suricata é uma aula grátis de Cyber Security Academy no CoddyKit. Esta é a aula 2 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de Cyber Security Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de Cyber Security Academy inclui 4 aulas no total.

Snort e Suricata

Snort e Suricata são os dois principais mecanismos de IDS/IPS de código aberto. Eles compartilham uma linguagem de regras amplamente compatível, portanto uma regra escrita para um geralmente funciona no outro.

O Suricata acrescenta processamento paralelo, analisadores nativos de protocolos, extração de arquivos e registros detalhados (EVE JSON); o Snort 3 também modernizou seu próprio mecanismo. Aprender a sintaxe das regras uma única vez permite trabalhar com os dois.

Anatomia de uma regra

Toda regra tem duas partes: um cabeçalho e um corpo de opções entre parênteses. O cabeçalho define a ação, o protocolo e a direção do tráfego; o corpo define o que deve ser correspondido e como relatar o resultado.

alert tcp $EXTERNAL_NET any -> $HOME_NET 80 ( \
  msg:"WEB suspicious request"; \
  content:"/admin.php"; http_uri; \
  sid:1000001; rev:1; )

Os campos do cabeçalho

O cabeçalho é lido da esquerda para a direita:

  • ação — alertar, descartar, rejeitar, permitir
  • protocolo — tcp, udp, icmp, ip (ou protocolos de aplicação no Suricata: http, dns, tls)
  • IP/porta de origem e IP/porta de destino
  • direção — -> unidirecional ou <> bidirecional

Variáveis como $HOME_NET e $EXTERNAL_NET vêm da sua configuração para que as regras permaneçam portáveis entre diferentes ambientes.

drop tcp any any -> $HOME_NET 22 ( msg:"SSH blocked"; sid:1000002; rev:1; )

Ações: alertar versus descartar

A ação determina o comportamento de IDS ou IPS para essa regra:

  • alert — registrar e notificar, sem interromper o tráfego (IDS)
  • drop — descartar o pacote silenciosamente (IPS, somente em linha)
  • reject — descartar e enviar uma reinicialização TCP ou uma mensagem ICMP de destino inalcançável
  • pass — permitir explicitamente, ignorando as regras posteriores

O mesmo mecanismo se torna IDS ou IPS dependendo de ser implantado em linha e das ações utilizadas.

Correspondência de conteúdo

A palavra-chave content corresponde a um padrão de bytes na carga útil. O texto fica entre aspas; os dados binários ficam entre barras verticais, em hexadecimal.

As palavras-chave de ancoragem tornam as correspondências mais precisas: offset, depth, distance e within restringem onde o padrão pode aparecer, melhorando tanto a precisão quanto o desempenho.

alert tcp any any -> $HOME_NET any ( \
  msg:"Malware magic bytes"; \
  content:"|4D 5A|"; offset:0; depth:2; \
  sid:1000003; rev:1; )

Buffers persistentes

As regras modernas fazem correspondências em buffers específicos do protocolo, em vez de usarem o fluxo bruto. Depois de uma palavra-chave de buffer, as correspondências subsequentes de content se aplicam àquela parte do protocolo analisado.

  • http_uri — o URI da requisição
  • http_header — cabeçalhos de requisição e resposta
  • http_user_agent — o agente do usuário
  • tls_sni / dns_query — nome do servidor TLS / consulta DNS

Isso é muito mais confiável do que pesquisar uma sequência parcial no pacote inteiro.

alert http any any -> any any ( \
  msg:"Suspicious user agent"; \
  http.user_agent; content:"sqlmap"; nocase; \
  sid:1000004; rev:1; )

PCRE e distinção entre maiúsculas e minúsculas

Quando strings fixas não são suficientes, pcre fornece expressões regulares compatíveis com Perl. Combine um pré-filtro barato de content com um pcre para que a expressão regular seja executada apenas em pacotes candidatos, preservando o desempenho.

O modificador nocase torna uma correspondência de conteúdo insensível a maiúsculas e minúsculas, algo importante para cabeçalhos e campos controlados pelo usuário que os invasores podem variar.

alert http any any -> $HOME_NET any ( \
  msg:"SQLi attempt in URI"; \
  http.uri; content:"select"; nocase; \
  pcre:"/union\s+select/i"; \
  sid:1000005; rev:1; )

Palavras-chave de fluxo e estado

A opção flow restringe uma regra ao estado e à direção da conexão, reduzindo falsos positivos e o custo de processamento.

  • established — somente em sessões TCP concluídas
  • to_server / to_client — direção da requisição versus da resposta

Fazer correspondências apenas com respostas do servidor quando a conexão está estabelecida e na direção do cliente evita disparos causados por pacotes avulsos ou falsificados.

alert tcp $HOME_NET any -> $EXTERNAL_NET any ( \
  msg:"Beacon response"; \
  flow:established,to_client; \
  content:"|00 01 02 03|"; \
  sid:1000006; rev:1; )

Metadados: identificador, revisão, mensagem e referência

Opções de controle mantêm um conjunto de regras fácil de manter:

  • sid — ID exclusivo da assinatura (use 1000000+ para regras locais)
  • rev — número de revisão; incremente-o a cada edição
  • msg — o texto do alerta visto pelos analistas
  • classtype — categoria que define a prioridade
  • reference — link para CVE ou um comunicado

Identificadores de assinatura estáveis e números de revisão incrementados permitem acompanhar e atualizar as regras sem quebrar painéis nem supressões.

alert tcp any any -> $HOME_NET 445 ( \
  msg:"EternalBlue exploit attempt"; \
  flow:to_server,established; content:"|FF|SMB"; \
  classtype:attempted-admin; \
  reference:cve,2017-0144; sid:1000007; rev:2; )

Diferenças entre Snort e Suricata

Embora sejam compatíveis no nível das regras, os mecanismos diferem em recursos:

  • Suricata usa vários threads, analisa nativamente protocolos de aplicação, extrai arquivos, calcula JA3 e emite JSON EVE
  • Snort 3 reescreveu seu mecanismo para melhorar o desempenho e oferecer um sistema modular de plug-ins

Algumas palavras-chave são específicas de cada mecanismo. O Suricata adiciona palavras-chave da camada de aplicação (tls.sni, dns.query, http.method) e recursos de conjuntos de dados e bits de fluxo. Ao compartilhar regras, direcione-as ao menor denominador comum ou mantenha conjuntos de regras específicos para cada mecanismo.

Filtragem por taxa e limiares

Para impedir que uma regra inunde o console, aplique limiares. detection_filter dispara somente após N eventos em uma janela; threshold com limit limita o volume de alertas.

Isso é essencial para detecções de força bruta e de varredura, nas quais um único evento não significa nada, mas uma rajada é o sinal relevante.

alert tcp any any -> $HOME_NET 22 ( \
  msg:"SSH brute force"; flow:to_server; \
  detection_filter:track by_src, count 5, seconds 60; \
  sid:1000008; rev:1; )

Verificação rápida

Leia uma regra e preveja seu comportamento.

Recapitulação

Agora você pode ler e escrever assinaturas do Snort/Suricata:

  • Uma regra = cabeçalho (ação, protocolo, origem/destino, direção) + opções do corpo
  • A ação define IDS ou IPS: alert, drop, reject, pass
  • content com deslocamento/profundidade e correspondência hexadecimal encontra bytes da carga útil
  • Buffers persistentes (http.uri, tls.sni, dns.query) fazem correspondências em campos analisados do protocolo
  • pcre e nocase lidam com padrões variáveis
  • flow restringe a correspondência ao estado e à direção
  • sid/rev/msg/reference mantêm as regras fáceis de administrar
  • Os limiares controlam o ruído de força bruta e de varredura

A seguir: detecção de ameaças sem nenhuma assinatura.

Perguntas Frequentes

A aula “Regras de assinatura com Snort e Suricata” é grátis?

Sim — o texto completo de “Regras de assinatura com Snort e Suricata” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de Cyber Security Academy, atualize para CoddyKit PRO. O curso de Cyber Security Academy inclui 4 aulas no total.

O que vou aprender em “Regras de assinatura com Snort e Suricata”?

Escreva e interprete regras de rede. Você pratica Cyber Security Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.

Preciso ter experiência prévia para começar Cyber Security Academy?

Nenhuma experiência prévia é necessária. Cyber Security Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 2 de 4.

Quanto tempo leva a aula “Regras de assinatura com Snort e Suricata”?

A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.

Posso escrever e executar código nesta aula de Cyber Security Academy?

Sim. Cada aula de Cyber Security Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.

Todas as aulas deste curso

  1. Conceitos de IDS e IPS
  2. Regras de assinatura com Snort e Suricata
  3. Detecção de anomalias e comportamento
  4. Ajuste e implantação
← Voltar para Cyber Security Academy