O VyOS é uma distribuição Linux de código aberto baseada em Debian, projetada especificamente para roteamento e firewalling. Embora seja leve e extremamente rápida, o kernel padrão do VyOS foca no encaminhamento de pacotes (routing) e na filtragem básica via Netfilter/IPTables. Para ambientes que exigem segurança de rede avançada, inspeção profunda de payloads e detecção de ameaças em tempo real, a instalação de um sistema de detecção de intrusão (IDS) ou prevenção de intrusões (IPS) como o Suricata é essencial.
Neste tutorial, você aprenderá a integrar o Suricata ao VyOS para realizar monitoramento passivo (IDS) e ativo (IPS). A configuração passo a passo visa garantir que o tráfego de rede seja analisado em busca de assinaturas conhecidas de ataques, malware e explorações de vulnerabilidades.
1. Pré-requisitos e Preparação do Ambiente
Antes de iniciar a instalação, certifique-se de que seu VyOS está atualizado. O Suricata depende de bibliotecas específicas e requer recursos de CPU significativos para operar no modo IPS (Inline), pois ele se torna um ponto único de falha na latência da rede.
Verifique a versão do VyOS:
vypolicy show version
Atualize o sistema para garantir que os pacotes disponíveis no repositório Debian (base do VyOS) estejam atualizados:
sudo apt update && sudo apt upgrade -y
Nota importante: O VyOS é uma distribuição "live". Isso significa que alterações feitas diretamente na linha de comando via apt podem ser perdidas após uma reinicialização se não forem persistidas corretamente. Para fins deste tutorial, focaremos na instalação e configuração inicial. Em produção robusta, considere o uso de scripts de pós-instalação ou a integração nativa do VyOS (se disponível em versões futuras), mas a abordagem manual via pacote Debian é a mais comum para usuários avançados.
2. Instalação do Suricata
O processo de instalação no VyOS segue o padrão Debian. Instale o pacote principal e as dependências necessárias:
sudo apt install suricata suricata-update -y
Após a instalação, é crucial baixar as listas de regras (signatures) que o Suricata utilizará para identificar ameaças. Sem regras, o IDS funciona apenas como um analisador de protocolo vazio.
sudo suricata-update
Este comando baixa automaticamente as listas ET (Emerging Threats) e outras fontes confiáveis. Você pode adicionar repositórios pagos ou adicionais se desejar:
sudo suricata-update add-source et/open
sudo suricata-update update-all
3. Configuração do Modo de Operação: IDS vs IPS
O Suricata opera em dois modos principais, e a escolha afeta diretamente sua arquitetura de rede:
- Modo IDS (Intrusion Detection System): O Suricata espelha o tráfego de uma porta switch (SPAN/ERSPAN) ou utiliza um bridge passivo. Ele não interfere no fluxo de dados, apenas registra alertas. É seguro e não causa downtime se o serviço falhar.
- Modo IPS (Intrusion Prevention System): O Suricata fica inline entre dois interfaces de rede (ex: WAN e LAN). Ele inspeciona cada pacote antes de encaminhá-lo. Se o processo do Suricata travar, a conexão de rede cai.
Para este tutorial, configuraremos o Modo IPS, pois oferece proteção ativa contra ataques, sendo o cenário mais comum para firewalls de borda.
4. Configuração das Interfaces de Rede e Bridge
No modo IPS, o Suricata precisa interceptar o tráfego. No VyOS, isso é feito criando um bridge virtual que conecta as interfaces físicas (ex: eth0 para WAN e eth1 para LAN) através do processo Suricata.
Primeiro, edite a configuração do VyOS via CLI:
vconfig
Defina as interfaces físicas como sem IP (o IP de gerenciamento ficará na interface bridge):
set interfaces ethernet eth0 address 'none'
set interfaces ethernet eth1 address 'none'
Crie uma interface bridge e adicione as interfaces físicas a ela:
set interfaces bridge br-suricata members interface eth0
set interfaces bridge br-suricata members interface eth1
Atribua o endereço IP de gateway/LAN à bridge. Suponha que sua LAN seja 192.168.1.0/24 e o VyOS tenha o IP 192.168.1.1:
set interfaces bridge br-suricata address '192.168.1.1/24'
Aplique a configuração:
commit
save
Agora, o VyOS encaminha o tráfego entre eth0 e eth1 através do bridge. Precisamos dizer ao Suricata para monitorar essa bridge.
5. Configuração do Arquivo suricata.yaml
O arquivo de configuração principal do Suricata está localizado em /etc/suricata/suricata.yaml. Você deve editá-lo para especificar a interface de captura e os modos de operação.
sudo nano /etc/suricata/suricata.yaml
Localize a seção default-rule-path e certifique-se de que o caminho aponta para onde as regras foram baixadas (geralmente /var/lib/suricata/rules).
Em seguida, localize a seção outputs e ative o log de alertas em formato EVE JSON:
- eve-log:
enabled: yes
filetype: regular
filename: eve.json
types:
- alert:
payload: true
payload-printable: true
packet: true
- http:
extended: true
- dns
- tls:
Para ativar o modo IPS, localize a seção vars e altere o endereço de grupo para garantir que as regras de prevenção sejam carregadas. No entanto, a ativação do bloqueio real depende das políticas definidas nas regras.
6. Integração com o Sistema de Inicialização (Systemd)
O VyOS não usa systemd nativo da mesma forma que um Ubuntu Desktop, mas permite a criação de serviços personalizados. Para garantir que o Suricata inicie corretamente e capture o tráfego no bridge, criaremos um script de serviço.
Crie o arquivo /etc/init.d/suricata-ips:
sudo nano /etc/init.d/suricata-ips
Insira o seguinte conteúdo:
#!/bin/sh
### BEGIN INIT INFO
# Provides: suricata-ips
# Required-Start: $network $syslog
# Required-Stop: $network $syslog
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Suricata IPS Mode
### END INIT INFO
DAEMON=/usr/bin/suricata
CONFIG=/etc/suricata/suricata.yaml
INTERFACE=br-suricata
PIDFILE=/var/run/suricata-ips.pid
case "$1" in
start)
echo "Starting Suricata IPS..."
$DAEMON -c $CONFIG -i $INTERFACE --pidfile $PIDFILE -D
;;
stop)
echo "Stopping Suricata IPS..."
kill $(cat $PIDFILE)
rm -f $PIDFILE
;;
restart)
$0 stop
sleep 2
$0 start
;;
*)
echo "Usage: $0 {start|stop|restart}"
exit 1
;;
esac
exit 0
Torne o script executável e registre-o:
sudo chmod +x /etc/init.d/suricata-ips
sudo update-rc.d suricata-ips defaults
7. Configuração de Firewall (VyOS CLI)
Agora que o Suricata está rodando e capturando o tráfego, você precisa garantir que o firewall do VyOS permita a passagem de tráfego através da bridge e registre os alertas gerados pelo Suricata.
No VyOS, utilize a estrutura vconfig para definir políticas de firewall. Suponha que br-suricata seja sua interface interna:
set firewall name WAN_IN rule 10 action 'accept'
set firewall name WAN_IN rule 10 description 'Allow established connections'
Para registrar alertas de segurança no log do sistema, adicione uma regra que envie pacotes suspeitos para o logger:
set firewall name WAN_IN rule 20 action 'log'
set firewall name WAN_IN rule 20 description 'Log potential threats'
Lembre-se de aplicar o firewall à interface externa (geralmente eth0 se ela estivesse ativa, mas como agora usamos bridge, aplique a política na bridge ou nas interfaces subjacentes se a arquitetura permitir). No modo IPS puro com bridge, o tráfego passa pelo kernel Linux antes de chegar ao Suricata. Portanto, as regras de firewall do VyOS devem estar configuradas para permitir o encaminhamento (forward) entre as interfaces.
set firewall name FORWARD rule 10 action 'accept'
set firewall name FORWARD rule 10 description 'Allow all traffic for testing'
Aviso: Em produção, substitua "Allow all" por regras estritas baseadas em portas e protocolos necessários.
8. Monitoramento e Verificação
Inicie o serviço do Suricata manualmente para testar:
sudo /etc/init.d/suricata-ips start
Verifique se o processo está rodando:
ps aux | grep suricata
Monitore o arquivo de log eve.json em tempo real para ver alertas sendo gerados. Você pode usar tail ou ferramentas como jless para ler JSON:
sudo tail -f /var/log/suricata/eve.json
Para simular um alerta, você pode realizar um scan de portas contra o próprio VyOS usando uma máquina cliente (ex: nmap):
nmap -sV 192.168.1.1
Você deve ver entradas no log do Suricata indicando a tentativa de conexão, especialmente se houver regras habilitadas para detecção de scans.
9. Otimização e Boas Práticas
A inspeção profunda (Deep Packet Inspection) consome muitos recursos. Para manter a estabilidade do VyOS:
- Filtra Regras: Não carregue todas as regras disponíveis. Use o
suricata-updatepara habilitar apenas grupos relevantes (ex:malware,c2). Carregar milhares de regras desnecessárias aumenta a latência. - Ajuste de Memória: Edite o arquivo
suricata.yamlna seçãoflowpara ajustar o tamanho da tabela de fluxo (hash-size) conforme a quantidade de memória RAM disponível. Valores padrão podem ser baixos para servidores robustos. - Logs Rotativos: Configure
logrotatepara/var/log/suricata/eve.jsonpara evitar que o disco encha rapidamente, já que logs IPS podem crescer gigabytes por dia em redes movimentadas.
Conclusão
A integração do Suricata ao VyOS transforma um roteador básico em uma solução robusta de segurança perimetral. Ao configurar o modo IPS, você não apenas detecta ameaças, mas as bloqueia proativamente, protegendo sua infraestrutura contra explorações conhecidas.
Lembre-se de testar cuidadosamente qualquer configuração de firewall e IPS em um ambiente de laboratório antes de aplicá-lo à produção, pois erros de configuração podem resultar em perda total de conectividade de rede. A combinação de VyOS com Suricata oferece uma alternativa poderosa e open-source a soluções comerciais caras de firewall de nova geração (NGFW).