REDE ONLINE · 7 fabricantes · 84 artigos · 1.2k comandos
v2.1.0 PT_BR
CircuitoCarioca
Home
↳ Visão geral Datacom Nokia Huawei Mikrotik Cisco Intelbras Parks
↳ Visão geral VLAN QinQ MPLS BGP OSPF
Ferramentas
↳ Visão geral Linux Windows Zabbix Grafana LibreNMS Firewall VPN Hardening
Wiki Comunidade Sobre
entrar cadastrar
IDS/IPS · multi-threaded · NSM

Suricata

Motor de detecção/prevenção de intrusão multi-thread nativo, com logging estruturado EVE JSON — da arquitetura à integração com SIEM, com foco em ISP.

Nesta página

1. Contexto histórico e normativo 2. Arquitetura interna 3. Instalação 4. IDS vs. IPS — modos de operação 5. Regras — suricata-update 6. Escrever regra própria — exemplo ISP 7. EVE JSON — o diferencial de logging 8. Integração com SIEM/dashboard 9. Monitoramento e métricas 10. Backup e recuperação 11. Dimensionamento e performance 12. Comparação com Snort 13. Troubleshooting 14. Glossário 15. Referências

1. Contexto histórico e normativo

O Suricata foi lançado em 2009 pela OISF (Open Information Security Foundation), uma organização sem fins lucrativos criada com o apoio de governos e da indústria para desenvolver um motor IDS/IPS de código aberto e alto desempenho. A principal motivação foi superar a limitação do Snort de processamento single-thread, introduzindo uma arquitetura multi-thread nativa capaz de aproveitar múltiplos núcleos de CPU.

O Suricata é amplamente adotado como o motor de IDS/IPS em firewalls de borda conhecidos, como pfSense e OPNsense, o que valida sua robustez e integração com infraestruturas de segurança. Ele segue as diretrizes do NIST SP 800-94 (Guide to Intrusion Detection and Prevention Systems) e é compatível com regras no formato Snort (VRT/Talos) e Emerging Threats.

2. Arquitetura interna

A arquitetura do Suricata é dividida em módulos que operam em paralelo, cada um com sua própria thread:

  • Capture threads — recebem pacotes das interfaces (via AF_PACKET, PF_RING, Netmap).
  • Decoder — interpreta protocolos de rede e normaliza o tráfego.
  • Stream engine — remonta fluxos TCP para inspeção de conteúdo.
  • Detection engine — aplica regras de assinatura.
  • Output modules — geram logs em EVE JSON, syslog, pcap, etc.

Essa separação permite que o Suricata escale horizontalmente com o número de núcleos de CPU, tornando-o adequado para inspeção em redes de alto throughput, como as de ISPs.

3. Instalação

# Debian/Ubuntu — repositório oficial da OISF (mais atualizado que o da distro)
add-apt-repository ppa:oisf/suricata-stable
apt update
apt install suricata

suricata --build-info | head -20   # confirma suporte multi-thread ativo

4. IDS vs. IPS — modos de operação

Recomendação amplamente seguida na indústria: sempre começar em modo IDS (só detecção, via espelhamento de porta/SPAN, sem interferir no tráfego real) até o conjunto de regras estar afinado (poucos falsos positivos) — só então migrar para IPS (inline, bloqueando ativamente), quando o risco de bloquear tráfego legítimo por engano já foi reduzido pela fase de tuning.

ModoPosição na redeRisco
IDSFora do caminho (espelho/SPAN) — só observaZero impacto no tráfego, mas não bloqueia nada sozinho
IPSInline — todo pacote passa por ele antes de seguirFalso positivo vira indisponibilidade real — exige tuning prévio, e hardware que aguente a latência de inspeção sem virar gargalo

5. Regras — suricata-update

# Baixa e atualiza conjuntos de regras (Emerging Threats Open é gratuito
# e amplamente usado; Suricata é compatível com regras no formato Snort/VRT)
suricata-update

# Listar fontes de regra disponíveis
suricata-update list-sources

# Habilitar uma fonte adicional
suricata-update enable-source et/open
suricata-update

Suricata é compatível com o mesmo formato de regra usado historicamente pelo Snort (regras VRT/Talos e Emerging Threats) — migrar conjunto de regras entre as duas ferramentas exige pouco ou nenhum ajuste na maioria dos casos.

6. Escrever regra própria — exemplo ISP

Regra detectando padrão de varredura de porta contra a rede de gerência (15+ SYN de origem externa em 60 segundos):

# /etc/suricata/rules/local.rules
alert tcp !$HOME_NET any -> $HOME_NET any (msg:"Possível varredura de porta na rede de gerencia"; \
    flags:S; threshold:type threshold, track by_src, count 15, seconds 60; \
    classtype:attempted-recon; sid:1000001; rev:1;)

$HOME_NET é uma variável definida em suricata.yaml, apontando pra sua própria faixa de rede — ajustar corretamente é pré-requisito antes de qualquer regra fazer sentido.

7. EVE JSON — o diferencial de logging

Diferente do formato de texto plano tradicional, Suricata registra eventos em EVE JSON — estruturado, fácil de consultar e ingerir direto em ferramenta de análise:

tail -f /var/log/suricata/eve.json | jq 'select(.event_type=="alert")'

# Também gera eventos estruturados de protocolo (não só alerta) —
# DNS, TLS, HTTP, SMB, NFS — útil pra investigação além de "malicioso ou não"
tail -f /var/log/suricata/eve.json | jq 'select(.event_type=="dns")'

8. Integração com SIEM/dashboard

O formato EVE JSON foi desenhado justamente pra alimentar pipeline moderno de log — encaminhar direto pra Elasticsearch/Loki (via Filebeat/Promtail) e visualizar em Kibana/Grafana é o padrão de mercado mais citado. Pra ISP já usando PRTG/Zabbix como base, alerta de severidade alta do Suricata também pode disparar notificação direta via webhook/syslog, tratado com a mesma prioridade de incidente de infraestrutura.

9. Monitoramento e métricas

Script de health check para Zabbix/PRTG:

#!/bin/bash
# check_suricata.sh
if pgrep -x suricata > /dev/null; then
  echo "OK: Suricata rodando"
  exit 0
else
  echo "CRITICAL: Suricata parado"
  exit 2
fi

Métricas úteis: número de alertas por minuto, taxa de pacotes processados, taxa de packet drop (a mais crítica), uso de CPU por thread e volume de logs gerados.

10. Backup e recuperação

  • Configuração/etc/suricata/ (incluindo suricata.yaml e regras customizadas).
  • Regras própriaslocal.rules e qualquer arquivo de regra customizado.
  • Restauração — recriar os arquivos e reiniciar o serviço.

Use restic ou Borg com a regra 3‑2‑1‑1‑0.

11. Dimensionamento e performance

O Suricata escala bem com múltiplos núcleos de CPU. Para ISPs, as considerações de dimensionamento incluem:

  • CPU — dedique núcleos exclusivos para as worker threads (CPU affinity).
  • Regras ativas — mais regras = mais processamento por pacote.
  • Modo IPS — exige hardware mais robusto que IDS (latência adicional).
  • Logs EVE JSON — podem crescer rápido; configure rotação e retenção adequadas.
# suricata.yaml
threading:
  set-cpu-affinity: yes
  cpu-affinity:
    - management-cpu-set:
        cpu: [ 0 ]
    - worker-cpu-set:
        cpu: [ "1-7" ]   # dedica núcleos específicos à inspeção

Monitorar taxa de packet drop (não taxa de alerta) é o indicador mais importante de saúde operacional — Suricata descartando pacote sob carga alta significa tráfego passando sem inspeção nenhuma, silenciosamente.

12. Comparação com Snort

CaracterísticaSuricataSnort
ThreadingMulti-thread nativoSingle (2.x) / Multi (3.x)
LoggingEVE JSON nativoTexto/syslog/banco
Detecção de aplicaçãoNão equivalente nativoOpenAppID
PerformanceMelhor aproveitamento multi-coreLimitada por CPU única no 2.x

Para redes novas, o Suricata tende a ser a recomendação mais citada — arquitetura multi-thread madura, logging EVE JSON nativo, e compatibilidade quase total com o mesmo formato de regra do Snort.

13. Troubleshooting

Volume alto de falso positivo

Rodar em modo IDS (não IPS) até afinar — desabilitar regras específicas ruidosas por SID em vez de descartar a categoria inteira de regra.

Taxa de packet drop alta

Verificar ajuste de CPU affinity (seção 11) e considerar reduzir conjunto de regras ativas — mais regras significa mais inspeção por pacote, exigindo mais CPU.

$HOME_NET mal configurado gerando alerta em tudo

Confirmar em suricata.yaml que a variável reflete a faixa de rede real — erro comum é deixar o valor padrão de exemplo sem ajustar.

14. Glossário

IDS Intrusion Detection System — detecta, mas não bloqueia (passivo).
IPS Intrusion Prevention System — detecta e bloqueia (inline).
EVE JSON Formato estruturado de log do Suricata, fácil de ingerir em SIEM.
HOME_NET Variável que define a rede interna protegida.
EXTERNAL_NET Variável que define a rede externa (geralmente tudo fora da HOME_NET).
Emerging Threats Conjunto de regras open source amplamente usado com Suricata.
Packet drop Pacotes descartados sem inspeção — métrica crítica de saúde.
CPU affinity Atribuição de núcleos específicos de CPU para threads do Suricata.
NSM Network Security Monitoring — monitoramento de segurança de rede.

15. Referências

Conteúdo técnico independente. Nenhum trecho é cópia literal de fonte de terceiro.