Instalar Suricata Linux

Neste tutorial, você vai aprender como instalar e configurar o Suricata como um Sistema de Detecção de Intrusão (IDS) em uma máquina com Linux Ubuntu, utilizando o repositório oficial da comunidade (PPA).

O Suricata é um motor de segurança de rede de código aberto, de alto desempenho, capaz de atuar em três frentes principais:

  1. IDS (Intrusion Detection System): Monitora passivamente o tráfego da rede e gera alertas detalhados caso identifique pacotes maliciosos ou anomalias.
  2. IPS (Intrusion Prevention System): Atua em linha (inline) com o fluxo de rede, podendo ativamente descartar pacotes (drop) ou bloquear endereços IP invasores em tempo real.
  3. NSM (Network Security Monitoring): Registra eventos e metadados de rede (DNS, HTTP, TLS, fluxos de tráfego) em arquivos estruturados (JSON).

Instalação do Suricata no Ubuntu

Embora o repositório padrão do Ubuntu possua o pacote do Suricata, ele costuma ser mais antigo. Para garantir acesso aos recursos e correções mais recentes, vamos adicionar o repositório oficial mantido pela OISF (Open Information Security Foundation).

Abra o terminal e execute:

sudo add-apt-repository ppa:oisf/suricata-stable

Em seguida, vamos atualizar os nossos repositórios, já que acabamos de adicionar um novo repositório.

sudo apt update

Agora, vamos instalar o suricata. Para isso vamos usar o comando abaixo.

sudo apt install suricata -y

Para garantir que o serviço seja iniciado e configurado para subir automaticamente sempre que o computador for reiniciado, use o comando:

sudo systemctl enable --now suricata

Instalação Alternativa do Suricata

O Suricata é multiplataforma e pode ser instalado em distribuições baseadas em RHEL/CentOS/Fedora, Debian, FreeBSD, macOS e até Windows. Se você não estiver utilizando o Ubuntu, consulte os pacotes binários e fontes no site oficial do projeto:.

https://suricata.io/download/

Configurando o Suricata (Interface e HOME_NET)

O diretório principal de configuração fica em /etc/suricata/. Vamos até ele para inspecionar os arquivos:

cd /etc/suricata
ls

Podemos observar na figura abaixo que existem vários arquivos e uma pasta com o nome rules.

O arquivo central onde quase tudo é ajustado chama-se suricata.yaml. Antes de editá-lo, precisamos descobrir qual interface de rede iremos inspecionar.

Identificando a Interface de Rede

Em nosso laboratório no VirtualBox, a máquina possui duas interfaces:

  • Uma interface em modo NAT (usada para acesso à Internet);
  • Uma interface em modo Rede Interna (Internal Network), por onde passará o tráfego dos clientes que queremos proteger.

Descubra o nome das interfaces com o comando:

ip a

Atenção: Desconsidere a interface lo (loopback). Em nosso caso, a interface conectada à rede interna que desejamos monitorar é a enp0s8. Identifique qual é a sua antes de avançar.

Editando o arquivo suricata.yaml

Abra o arquivo de configuração com o editor de sua preferência (ex: nano):

sudo nano /etc/suricata/suricata.yaml

A) Ajustar a interface em af-packet

Localize a seção af-packet: (geralmente por volta da linha 580) e altere a interface padrão (eth0) para a interface da sua rede:

Dentro da linha “– interface: eth0” vamos remover o “eth0” e incluir o nome da nossa interface que é enp0s8.

Abaixo temos a interface já alterada.

Definir a variável HOME_NET

Suba até o início do arquivo, na seção de variáveis (vars:). Por padrão, a HOME_NET vem com faixas privadas genéricas, mas é uma boa prática definir a sub-rede exata que você está protegendo (por exemplo, 192.168.11.0/24):

Suricata em Modo Host IDS/IPS

Quando o Suricata é configurado como Host IDS/IPS (ou seja, quando seu papel é proteger exclusivamente a própria máquina onde está instalado, e não atuar como gateway de uma rede inteira), a variável HOME_NET no arquivo suricata.yaml deve ser restrita ao endereço IP do próprio host utilizando a máscara /32 (ex.: HOME_NET: "[192.168.24.20/32]").

Essa definição é fundamental: ao isolar o host protegido como o único membro da HOME_NET, qualquer outro computador da rede local, inclusive uma máquina virtual atacante situada na mesma sub-rede.

Dessa forma todo IP que não for da máquina protegida passará a ser tratado pelo motor como $EXTERNAL_NET. Isso garante que as assinaturas padrão de varredura e ataque direcionadas a servidores locais disparem alertas e regras de bloqueio (drop) perfeitamente durante os testes de laboratório.

Alternativamente, para simplificar os testes práticos, você também pode descomentar e definir EXTERNAL_NET: "any".

Dica técnica para Ubuntu/Debian: Em algumas instalações via APT, o Suricata lê uma interface padrão no arquivo /etc/default/suricata. Se o serviço apresentar problemas para iniciar, abra esse arquivo (sudo nano /etc/default/suricata) e confirme se a linha IFACE=... corresponde à sua interface (IFACE=enp0s8).

Salve as alterações (no nano: Ctrl + O e depois Enter) e feche o editor (Ctrl + X).

Atualizando as Regras com o Suricata-Update

O Suricata depende de assinaturas (regras) para reconhecer ataques, malwares e varreduras de rede. Para manter o sistema seguro, devemos baixar o conjunto de regras atualizado da comunidade (ET Open – Emerging Threats).

Execute a ferramenta oficial de atualização:

sudo suricata-update

Onde as regras são salvas?

O utilitário suricata-update compila todas as regras ativas em um único arquivo de alta performance localizado em /var/lib/suricata/rules/suricata.rules (e não em /etc/suricata/rules/, pasta reservada para regras locais criadas por você).

Validando a Configuração (suricata -T)

Antes de reiniciar o serviço, é uma excelente prática testar a sintaxe do arquivo de configuração e das regras carregadas com o modo de teste (-T):

sudo suricata -T

Se você notar mensagens de aviso (Warning) para protocolos como o RDP ou DNP3, significa apenas que esses parsers de protocolo estão comentados no arquivo YAML.

Se você utiliza RDP (Remote Desktop) no seu ambiente e deseja inspecioná-lo:

  1. Abra novamente o /etc/suricata/suricata.yaml;
  2. Localize app-layer: e descomente a linha do protocolo (remova o caractere # antes de rdp: yes);
  3. Salve e teste novamente com sudo suricata -T.

Linha de configuração descomentada.

Estando a configuração válida, reinicie o serviço para aplicar as novas regras e parâmetros:

sudo systemctl restart suricata

Entendendo os Logs: fast.log vs eve.json

Todos os relatórios e detecções do Suricata ficam salvos no diretório /var/log/suricata/:

cd /var/log/suricata/

ls

Os três arquivos mais importantes são:

  • suricata.log: Armazena logs de funcionamento interno do próprio motor (erros de inicialização, estatísticas e status de módulos).
  • fast.log: Arquivo de texto simples e legível por humanos. Cada linha representa um alerta resumido contendo timestamp, ID da regra (SID), mensagem de alerta e IPs de origem/destino.
  • eve.json: O padrão moderno da indústria. Gera todos os eventos (alertas, fluxos, requisições DNS/HTTP) em formato JSON estruturado, perfeito para integração com SIEMs como Wazuh, Splunk, Graylog ou Elastic Stack (ELK).

sudo tail  /var/log/suricata/suricata.log

O outro arquivo, o “fast.log”, apresenta os alertas gerados pelo suricata. Dessa forma, você pode verificar os alertas ao inspecionar o arquivo “fast.log”. Para isso, podemos usar o comando abaixo.

sudo tail  /var/log/suricata/fast.log

No início, o arquivo “fast.log” pode não conter nenhum alerta. Portanto, na próxima sessão vamos apresentar um teste para gerar alertas no suricata.

Testando o Suricata como IDS

Para colocar o motor à prova, utilizaremos o seguinte cenário de teste:

  • Máquina 1 (IDS): Nosso servidor Suricata escutando na interface de rede interna (192.168.11.24).
  • Máquina 2 (Atacante/Cliente): Outra máquina virtual Ubuntu conectada à mesma rede interna.

A segunda máquina virtual será conectada na rede interna do VirtualBox e estará ligada na interface “enp0s8” da máquina do Suricata.

Abaixo temos a topologia utilizada.

Passo 1: Deixar o monitoramento aberto no Suricata

Na máquina do Suricata, vamos abrir o arquivo de alertas em tempo real usando o parâmetro -f (follow):

sudo tail -f /var/log/suricata/fast.log

Passo 2: Disparar a varredura na máquina cliente

Vá até a máquina cliente (com o Nmap instalado) e execute um teste direcionado ao IP do Suricata:

sudo nmap -sO 192.168.11.24

Por que usamos -sO?

A opção -sO executa um IP Protocol Scan (varredura de números de protocolos da camada de rede, como GRE, ICMP, IGMP e OSPF), e não uma checagem comum de portas TCP. Esse tipo de sonda envia pacotes fora do padrão que geram alertas imediatos nas regras do Emerging Threats.

Caso deseje entender como o NMAP funciona pode ver os posts a seguir:

NMAP: Mapeamento de portas TCP e UDP

NMAP : Identificar a versão de um serviço

NMAP: Scan avançado

Passo 3: Conferir os alertas gerados

Ao olhar de volta para o terminal da máquina com Suricata, você verá os alertas surgindo na hora.

Se desejar verificar o arquivo de alertas “/var/log/suricata/fast.log”, pode usar o comando abaixo.

sudo tail /var/log/suricata/fast.log

Repare nos detalhes fornecidos:

  • Data e hora da tentativa de invasão;
  • O identificador da assinatura (SID: 2100498);
  • A classificação do evento (Detection of a Network Scan);
  • Nível de prioridade e os IPs de origem e destino envolvidos.

Conclusão e Próximos Passos

Parabéns! Você tem agora um IDS de alto desempenho rodando no Linux Ubuntu, inspecionando tráfego em tempo real com regras atualizadas e gerando alertas de varreduras de rede.

No próximo tutorial da nossa série, vamos avançar um passo: transformaremos o Suricata de um monitor passivo (IDS) em um IPS Ativo, ensinando como configurar o modo inline com iptables/nftables para bloquear ameaças automaticamente.

Na descrição do alerta podemos ter um ID do alerta e o nível de prioridade do alerta. Futuramente vamos apresentar mais informações relacionadas ao Suricata em futuros tutoriais. Se você gostou comente em nosso canal do YouTube no vídeo a seguir.

Esse tutorial é parte do Curso de Suricata em Linux.

Artigo 1: Instalar Suricata Linux

Artigo 2: Suricata em Host IPS

Artigo 3: Suricata em Network IPS

Veja mais:

Snort PfSense : Detectar ataque DoS

NMAP: Mapeamento de portas TCP e UDP

NMAP : Identificar a versão de um serviço

NMAP: Scan avançado

Addrwatch : Instalar e Configurar