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:
- IDS (Intrusion Detection System): Monitora passivamente o tráfego da rede e gera alertas detalhados caso identifique pacotes maliciosos ou anomalias.
- 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.
- 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:.
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 é aenp0s8. 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 linhaIFACE=...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:
- Abra novamente o
/etc/suricata/suricata.yaml; - Localize
app-layer:e descomente a linha do protocolo (remova o caractere#antes derdp: yes); - 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
-sOexecuta 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
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









