Como Instalar Suricata no Ubuntu para Proteger Sua Rede

Sistemas de Detecção de Intrusão (IDS) e de Prevenção de Intrusão (IPS) ajudam a impedir que cibercriminosos infiltrem-se em seu servidor. Ao identificar uma atividade maliciosa, essas ferramentas de segurança emitem alertas e eliminam o tráfego indesejado.

Em um servidor privado virtual (VPS) Ubuntu, o Suricata é uma solução IDS e IPS muito conhecida. Além de ser de código aberto, esse monitoramento de tráfego de rede está disponível para vários sistemas operacionais, incluindo Windows e Linux.

Neste artigo, explicaremos como instalar o Suricata em servidores VPS Ubuntu para ajudar a melhorar a segurança da sua rede. Você também aprenderá a configurar novas regras de detecção para se adequar às necessidades de segurança do seu VPS.

Pré-requisitos

Embora o Suricata não estabeleça seus requisitos mínimos de hardware, recomendamos no mínimo 2 núcleos de CPU e 4 GB de RAM para garantir um desempenho ideal.

Se você não tem um plano de hospedagem VPS, recomendamos começar com o plano KVM 2 da Hostinger e fazer upgrade conforme necessário.

Esse plano é ótimo, pois seus 2 núcleos vCPU e 8 GB de RAM fornecem espaço suficiente para a hospedagem de outras aplicações e também tem um preço acessível, custando R$ 36.99/mês.

Para o sistema operacional, certifique-se de que seu VPS é compatível com o Ubuntu 22.04 ou superior. Versões mais antigas podem ser incompatíveis com a última versão do Suricata.

Os usuários da Hostinger podem usar o instalador de um clique do hPanel para mudar para outros sistemas operacionais. Para fazer isso, navegue até a sua visão geral do VPS na barra lateral do menu → SO & PainelSistema OperacionalSO puro. Selecione a versão mais recente do Ubuntu e clique em Mudar SO.

A instalação do Suricata requer privilégios de root ou superusuário para executar comandos Linux. Para evitar problemas de permissão e garantir um processo de instalação via linha de comando sem problemas, escolha um provedor de hospedagem VPS com acesso completo ao servidor, como a Hostinger.

Além de ampla compatibilidade, os melhores provedores de hospedagem VPS devem oferecer um uptime confiável e vários recursos. Por exemplo, a Hostinger oferece o Kodee, um assistente com IA que possibilita que você simplifique tarefas ao inserir diferentes prompts de IA para gerenciamento de VPS.

Nós também fornecemos um terminal do navegador que permite que você se conecte ao seu sistema Ubuntu sem usar um cliente SSH como o PuTTY. Para acessar seu VPS remotamente, use as credenciais de login no menu visão geral na aba Acesso SSH.

Importante!

Por padrão, você fará login como o usuário root. Recomendamos a troca para outro usuário com privilégios de superusuário para evitar a execução acidental de comandos destrutivos.

Todos os nossos planos de hospedagem VPS oferecem garantia de uptime de 99,9% e garantia de devolução do dinheiro em 30 dias.

Como Instalar Suricata no Ubuntu

Nesta seção, explicaremos os passos para a instalação do Suricata em um VPS com o Ubuntu 22.04. Se você quiser instalá-lo em um roteador gateway para escanear o tráfego de rede de entrada e saída, pode ser necessário realizar etapas adicionais, como modificar as regras do firewall.

1. Atualize os Pacotes do Ubuntu

Antes de instalar o Suricata, atualize o APT para garantir que você receba a versão local mais recente. Esta etapa também aplica as mais recentes correções para outros pacotes do sistema para ajudar a melhorar a segurança e evitar problemas de incompatibilidade.

Para listar as atualizações de pacotes do sistema disponíveis em seu repositório APT, execute o seguinte comando:

sudo apt update

Instale atualizações para todos os pacotes do sistema usando este comando:

sudo apt upgrade

O processo pode levar minutos ou horas, dependendo do tamanho total da atualização e da sua velocidade de internet.

2. Instale o Suricata

Existem vários métodos para instalar o Suricata no Ubuntu. Nesta seção, explicaremos as três maneiras mais comuns, começando pela mais fácil.

Instale Suricata Usando APT

Use este comando para instalar o Suricata no Ubuntu usando o repositório local APT:

sudo apt install -y suricata

Para verificar se o Suricata está instalado corretamente, verifique o número da versão usando este comando:

suricata -V
Terminal mostrando a versão do Suricata

Importante!

Certifique-se de usar a capitalização correta ao digitar os comandos, pois eles diferenciam maiúsculas de minúsculas.

Alternativamente, liste os pacotes instalados no Ubuntu usando o comando apt list e filtre Suricata usando grep como a seguir:

sudo apt list --installed | grep suricata

Observe que este método pode instalar uma versão mais antiga, pois você está usando o repositório local do gerenciador de pacotes APT.

Instale Suricata Usando Pacotes Binários

Para instalar a versão estável mais recente, importe o repositório da Open Information Security Foundation (OISF) do servidor Suricata. Para fazer isso, execute estes comandos:

sudo apt install software-properties-common
sudo add-apt-repository ppa:oisf/suricata-stable

Pressione Enter se o Terminal pedir confirmação. Após importar o repositório, atualize o APT e descompacte o software com este comando:

sudo apt install suricata

Se você estiver usando outras distribuições derivadas do Debian, use o repositório backports para ter a versão estável mais recente. Consulte o guia de instalação dos pacotes binários do Suricata para aprender mais sobre isso.

Instale o Suricata Usando Arquivos de Distribuição do Código-Fonte

Configurar o Suricata a partir dos arquivos de distribuição do código-fonte permite que você ajustar as configurações de instalação. No entanto, você precisará instalar várias dependências e diversos cabeçalhos de desenvolvimento.

Após a instalação das dependências do Suricata, execute os seguintes comandos subsequentemente:

tar xzvf suricata-6.0.0.tar.gz
cd suricata-6.0.0
./configure
make
make install

3. Configure o Suricata

O pacote Suricata inclui um arquivo de configuração YAML para ajustar as configurações e o comportamento da ferramenta. Você pode editar isso usando um editor de texto como o nano:

sudo nano /etc/suricata/suricata.yaml

O arquivo suricata.yaml tem vários parâmetros que você pode ajustar. Aqui estão os mais comuns:

  • Configuração de interface. Determina o método e a interface de rede para capturar o pacote. Algumas das configurações são af;-packets, af-xdp e pcap.
  • Registro. Modifica onde o Suricata registra a detecção de rede, seu formato e nível de alerta. Você pode alterar as configurações através do parâmetro outputs.
  • Arquivo PID. Define o arquivo de identificação do processo (PID) para executar o Suricata como um daemon ou serviço. Determine o nome e o diretório no parâmetro pid-files.
  • Regras de detecção. Define os arquivos que contêm regras de filtragem de pacotes e suas localizações. Os parâmetros são default-rule-path e rule-files, respectivamente.
  • Tamanhos de pacotes. Altera o tamanho máximo do pacote a ser processado pelo Suricata e transmitido pela sua rede. Especifique o valor do byte nos parâmetros max-pending-packet e default-packet-size.
  • ID de Fluxo da Comunidade. Identifica o fluxo de rede Suricata para permitir a integração com outra ferramenta como o Zeek. O parâmetro community-id é definido como false por padrão.

Edite as configurações e pressione Ctrl + X, Y, e Enter para salvar as alterações. Para procurar rapidamente um parâmetro específico, use o atalho Ctrl + W para habilitar a função de pesquisa.

Além de ler as instruções fornecidas, verifique a documentação do arquivo de configuração do Suricata para aprender mais sobre as configurações. Para parâmetros comentados como community-id, remova o símbolo de hashtag (#) no início para ativá-los.

4. Ativar Interfaces de Rede

Para processar o tráfego da rede e bloquear pacotes maliciosos que possam danificar seu sistema, o Suricata deve monitorar uma interface.

Por padrão, o Suricata não rastreia nenhuma conectividade de e para o seu servidor. Os usuários devem especificar qual interface de rede monitorar e determinar o método de captura de pacotes através do arquivo YAML.

Por exemplo, queremos usar o método de captura af-packet e monitorar a interface de rede venet0. Veja só como é a configuração:

af-packet:
 - interface: venet0

Insira este comando para exibir a interface padrão e outras informações de roteamento:

ip -p -j route show

Defina o método de captura de pacotes com base em suas necessidades. Por exemplo, o af-packet é adequado para rastreamento de rede ao vivo, enquanto o pcap é ideal para análise offline.

Para monitorar várias interfaces de rede, adicione essas novas linhas na parte inferior da seção do método de captura. Certifique-se de que o cluster-ID seja único:

-  interface: interface name
cluster-id: 29

5. Inicie o Suricata

Ative o serviço Suricata usando o comando systemctl para executá-lo em segundo plano:

sudo systemctl start suricata

Para verificar se está funcionando corretamente, execute o seguinte:

sudo systemctl status suricata

Se o serviço Suricata estiver em execução, o Terminal deve mostrar os status de loaded e active.

Terminal mostrando o Suricata ativo e carregado.

Lembre-se, sempre reinicie o serviço Suricata após modificar o arquivo de configuração para garantir que as novas configurações sejam aplicadas corretamente. Aqui está o comando:

sudo systemctl restart suricata

Alternativamente, pare o Suricata e execute-o novamente usando o comando systemctl start . Para encerrar o daemon, insira o seguinte:

sudo systemctl stop suricata

6. Automatize a Inicialização do Suricata

Automatizar a inicialização do Suricata ajuda a manter a segurança ideal do VPS, já que você não precisa reativá-lo manualmente após reiniciar o sistema. Isso ajuda a melhorar a eficiência do gerenciamento do servidor.

Para fazer isso, crie um novo arquivo de unidade de serviço systemd para implantar automaticamente o Suricata quando o servidor iniciar usando o seguinte comando:

sudo nano /etc/systemd/system/suricata.service

Dentro do arquivo da unidade de serviço, insira as seguintes linhas:

# Define o Suricata systemd unit
[Unit]
Description=Suricata IDS/IPS
After=network.target

# Especifica o caminho binário do Suricata, a localização dos arquivos de configuração e a interface de rede
[Service]
ExecStart=/usr/bin/suricata -c /etc/suricata/suricata.yaml -i venet0
[Install]
WantedBy=default.target

Pressione Ctrl + X, Y e Enter para salvar as alterações. Execute o seguinte comando para permitir que o Suricata seja carregado automaticamente ao iniciar o sistema:

sudo systemctl enable suricata

Então, execute o comando systemctl start para iniciar o Suricata. Verifique o status para garantir que o serviço está funcionando.

Se o Terminal retornar o erro “No rule files match“, o Suricata não conseguiu carregar as regras de monitoramento de rede. Para consertar, execute suricata-update para atualizar o caminho do diretório.

Então, abra o arquivo suricata.yaml e modifique as regras de configuração, como a seguir:

default-rule-path: /var/lib/suricata/rules
rule-files:
  - suricata.rules

Salve o arquivo e reinicie o serviço para aplicar as alterações.

7. Teste a Funcionalidade do Suricata

Após iniciar o Suricata, valide seu arquivo de configuração para garantir que a ferramenta funcione. A maneira mais fácil de fazer isso é usando o comando de teste integrado:

sudo suricata -T -c /etc/suricata/suricata.yaml -v

A opção -T permite que você execute o modo de teste Suricata, e -c permite que você encontre o arquivo de configuração no caminho especificado. Adicionalmente, a opção  -v habilita o modo detalhado, fornecendo detalhes sobre a execução do comando, incluindo erros.

Se você tem várias regras e threads de CPU limitadas, o processo vai demorar mais, mas não deve exceder alguns minutos. O terminal vai mostrar os registros de teste como o seguinte.

Terminal com os resultados dos testes do Suricata

Durante esta etapa, procure a mensagem de aviso indicando má configuração em seu YAML arquivo. Para simplificar a solução de problema, recomendamos que você peça ajuda ao Kodee, nosso assistente de VPS com IA.

Então, verifique as regras do Suricata para garantir que elas detectem o tráfego malicioso corretamente. O guia rápido de início do Suricata recomenda o uso da regra ET Open número 2100498 e a conexão com um URL de teste usando o comando curl:

curl http://testmynids.org/uid/index.html

O comando enviará uma solicitação HTTP para acionar a regra de alerta. Então, o Suricata irá gerar eventos de log no arquivo eve.json e no arquivo fast.log sobre o tráfego detectado.

Verifique se o Suricata rotula a solicitação HTTP como tráfego potencialmente malicioso no arquivo fast.log. Para fazer isso, execute a utilidade grep para filtrar o número de identificação da regra:

grep 2100498 /var/log/suricata/fast.log

A saída deve mostrar um registro rotulando o pacote como “Potentially Bad Traffic.”

Desde que o everegistra suas entradas como JSON, para analisá-lo será necessário a utilidade jq . Pule essa etapa se você instalou a utilidade. Caso contrário, execute o seguinte:

sudo apt install jq

Então, insira o seguinte comando para filtrar as entradas do arquivo de log com base no ID da assinatura e no tipo de alerta:

jq 'select(.alert .signature_id==2100498)' /var/log/suricata/eve.json

Você deve ver o ID da regra e a mesma categoria “Potentially Bad Traffic“. Isso significa que o Suricata combinou seu tráfego de rede com a regra de detecção correta.

Esses registros são úteis para o gerenciamento de alertas e monitoramento de segurança de rede. Por exemplo, você pode bloquear fontes de tráfego suspeitas no Firewall Descomplicado do Ubuntu (UFW) ou no iptables.

8. Atualizar Regras do Suricata

O Suricata detecta pacotes suspeitos usando assinaturas ou regras definidas pelo usuário. Ele inclui alguns por padrão, mas eles podem ser insuficientes se o seu servidor receber tráfego de muitas fontes.

Para adicionar novas regras, junte conjuntos de regras adicionais de vários fornecedores de terceiros. Enquanto alguns deles são gratuitos, outros podem cobrar uma taxa de assinatura. Para listá-los, execute o seguinte comando:

sudo suricata-update list-sources

Você verá os fornecedores dos provedores, resumos, licenças e informações de assinatura. Para importar um conjunto de regras, execute o seguinte comando:

sudo suricata-update enable-source nome-do-fornecedor

Substitua o espaço reservado nome-do-fornecedor  com a fonte de regras desejada. Por exemplo, execute isto para recuperar sslbl/ja3-fingerprints:

sudo suricata-update enable-source sslbl/ja3-fingerprints

Então, execute novamente o comando  suricata-update para atualizar e validar os arquivos de regras no diretório  /etc/suricata/rules. Se você não adicionar uma fonte externa, a atualização do Suricata recuperará as regras padrão de ET OPEN.

Após atualizar a fonte padrão ET OPEN, você verá que o Suricata processou a inspeção da packet payload signature e da ip-only rule.

A mensagem de atualização deve terminar com a ferramenta limpando a estrutura de agrupamento de assinaturas. Se você estiver atualizado, o Terminal imprimirá “No changes detected, exiting.”

Recomendamos executar a ferramenta de atualização do Suricata regularmente para garantir que seu sistema receba a regra mais recente. A aplicação do método mais novo de detecção ajuda a manter a segurança ideal do servidor Ubuntu.

Opcionalmente, use ferramentas de gerenciamento de regras do Suricata como Pulledpork e Oinkmaster para ajustar o método de detecção. Use nano para modificar o arquivo:

sudo nano /etc/suricata/rules/rule_name.rules

A sintaxe da regra Suricata é a seguinte:

action protocol source-ip/port -> destination-ip/port (options; options; ... )

Estes são o que cada parâmetro significa e seus valores aceitos:

  • action . A ação a ser tomada quando a condição da regra é atendida. Valores possíveis incluem drop, alert e log.
  • protocol. O protocolo de rede monitorado, incluindo TCP, UDP, ICMP, ou IP.
  • source-ip/port. O IP e a porta de onde o tráfego se origina.
  • destination-ip/port. O IP e a porta aos quais a regra se aplica.
  • (options; options; …). Palavras-chave determinam configurações ou condições adicionais.

Para aprender mais sobre esses parâmetros e possíveis opções, confira a documentação de regras do Suricata

Conclusão

Suricata é um sistema IDS e IPS de código aberto que ajuda a prevenir a infiltração de tráfego malicioso no seu servidor para melhorar a segurança do seu sistema. Ele funciona detectando e descartando tráfego suspeito com base em uma regra.

Neste artigo, explicamos como instalar suricata no Ubuntu 22.04 ou versões superiores. Após instalar a distribuição e ter o acesso root ao seu servidor via SSH, siga estas etapas:

  • Atualize os pacotes do Ubuntu. Execute o comando apt update e apt upgrade para instalar a versão mais recente de todos os pacotes.
  • Instale o Suricata . Instale a ferramenta via APT ou o repositório OISF se você quiser a versão mais recente do Suricata.
  • Configure o Suricata. Use um editor de texto como o nano para editar o arquivo suricata.yaml e ajustar a configuração padrão.
  • Habilite as interfaces de rede. Altere o método de captura de pacotes e o parâmetro de interface de rede para habilitar o Suricata a monitorar o tráfego do seu servidor.
  • Inicie a Suricata . Execute o comando systemctl para iniciar o Suricata como um daemon.
  • Automatize a inicialização do Suricata. Crie um arquivo de unidade de serviço systemd Suricata e use systemctl para habilitar a ferramenta durante a inicialização do sistema.
  • Testar a funcionalidade do Suricata. Valide o arquivo de configuração do Suricata usando o recurso de teste integrado e verifique as regras enviando uma solicitação HTTP fictícia.
  • Atualizar regras do Suricata . Execute  suricata-update com a flag enable-source para recuperar um conjunto de regras de uma fonte externa. Atualize o Suricata para aplicar e validar as novas regras.

Esperamos que este artigo ajude você a instalar a ferramenta no seu servidor VPS Ubuntu. Se você tiver alguma dúvida ou problemas durante o processo de configuração, deixe um comentário abaixo.

Author
O autor

Ricardo Neto

Esse é Ricardo, o Tradutor e YouTuber da Hostinger Brasil, presente na empresa desde muito cedo tem conhecimento avançado sobre Hospedagem de Sites. Formado em Desenvolvimento de Jogos, teve uma oportunidade em 2015 de começar uma longa jornada de sucesso e parceria com a Hostinger Brasil.