Otimizar UFW no Ubuntu 24.04: regras, prioridade e logs

12 min de leitura · · ufw, firewall, ubuntu-24-04, seguranca-linux, iptables, AviraHost · 0

Otimizar o UFW no Ubuntu 24.04 envolve definir políticas padrão restritivas, organizar regras por prioridade com ufw insert, aplicar rate-limiting em portas expostas e controlar o volume de logs no kernel. Para otimizar em produção, siga estes passos:

  1. Defina políticas padrão: negar entrada, permitir saída.
  2. Libere SSH com limit antes de habilitar o firewall.
  3. Ordene regras específicas acima de regras genéricas usando ufw insert.
  4. Ajuste o nível de logging para low e filtre ruído de broadcast.
  5. Valide as regras aplicadas com nft list ruleset.
  6. Teste conectividade antes de fechar a sessão SSH.

Pré-requisitos para otimizar o UFW no Ubuntu 24.04

  • Servidor com Ubuntu 24.04 LTS (Noble Numbat) atualizado via apt update && apt upgrade.
  • Acesso root ou usuário com privilégios sudo.
  • Conexão SSH estável — idealmente com sessão alternativa aberta em caso de bloqueio acidental.
  • Pacote ufw instalado (padrão no Ubuntu Server) e nftables como backend (default desde o Ubuntu 20.10).
  • Conhecimento básico das portas em uso: 22 (SSH), 80/443 (HTTP/HTTPS), 25/587 (SMTP) etc.
  • Backup prévio de /etc/ufw/ e /etc/default/ufw antes de alterações estruturais.

Entendendo a arquitetura do UFW no Ubuntu 24.04

O Uncomplicated Firewall é uma camada de abstração sobre o netfilter que, no Ubuntu 24.04, gera regras diretamente para o nftables. Isso significa que cada comando ufw allow ou ufw deny é traduzido em entradas dentro das chains ufw-before-input, ufw-user-input e ufw-after-input. Compreender essa hierarquia é essencial para otimizar sem conflitos.

Você pode inspecionar o que o UFW realmente aplicou no kernel executando:

sudo nft list ruleset | less
Output esperado (trecho):
table inet filter {
    chain ufw-user-input {
        tcp dport 22 ct state new limit rate 6/minute accept
        tcp dport 80 accept
        tcp dport 443 accept
    }
}

Essa transparência é útil quando você precisa auditar regras geradas automaticamente por aplicações como Docker, que frequentemente inserem diretivas no iptables legado e podem ignorar as políticas do UFW. Para ambientes com containers, recomendo revisar também o artigo Dicas de Otimização de Servidores Linux para ajustes complementares de kernel.

Configurar regras UFW com prioridade correta

A ordem de avaliação é um dos pontos mais negligenciados na otimização. O netfilter processa regras sequencialmente e, ao encontrar a primeira correspondência, aplica a ação e ignora as subsequentes. Se você adicionou ufw allow from any to any port 80 e depois tentou bloquear um IP específico com ufw deny from 203.0.113.50, o bloqueio nunca será efetivo para a porta 80.

A solução é usar ufw insert para posicionar regras de negação antes das regras genéricas:

sudo ufw insert 1 deny from 203.0.113.50 to any
sudo ufw status numbered
Output esperado:
Status: ativo
     Para                         Ação        De
     ---                          ------      --
[ 1] Anywhere                     DENY IN     203.0.113.50
[ 2] 22/tcp                       LIMIT IN    Anywhere
[ 3] 80/tcp                       ALLOW IN    Anywhere
[ 4] 443/tcp                      ALLOW IN    Anywhere

Para reorganizar regras já existentes, delete pelo número e reinsira na posição desejada:

sudo ufw delete 3
sudo ufw insert 2 allow 80/tcp

Atenção: sempre revise a ordem com ufw status numbered após cada alteração. Uma regra mal posicionada pode expor serviços que você acreditava protegidos.

Aplicar rate-limiting e proteção contra força bruta

O diferencial do UFW frente a scripts iptables manuais é a diretiva limit, que aplica automaticamente um controle de taxa de 6 conexões em 30 segundos por IP de origem. Essa proteção é ideal para SSH, painéis administrativos e endpoints de login.

sudo ufw limit 22/tcp comment 'SSH rate-limit'
sudo ufw limit proto tcp from any to any port 2083 comment 'cPanel'

Para cenários mais específicos, combine o UFW com listas de IPs confiáveis. Por exemplo, libere SSH sem limite apenas para sua rede corporativa e aplique limit para o restante:

sudo ufw allow from 198.51.100.0/24 to any port 22 proto tcp
sudo ufw limit 22/tcp

Esse padrão reduz drasticamente o volume de tentativas bem-sucedidas de brute-force sem a sobrecarga de um daemon como Fail2Ban. Ainda assim, para sistemas de alto valor, ambas as camadas são complementares — o rate-limit atua no kernel (rápido, barato), enquanto o Fail2Ban analisa logs da aplicação.

Otimizar logs do UFW e evitar enchimento de /var/log

O logging agressivo é uma fonte comum de problemas em VPS com disco limitado. Por padrão, o UFW grava em /var/log/ufw.log e também em /var/log/kern.log e /var/log/syslog, triplicando o volume de dados.

Os níveis disponíveis são:

  • off: logging desativado.
  • low: registra pacotes bloqueados não filtrados por regras específicas (recomendado para produção).
  • medium: inclui pacotes permitidos que não batem em regra explícita e inválidos.
  • high: registra todos os pacotes com rate-limiting.
  • full: sem limite de taxa — use apenas para troubleshooting pontual.
sudo ufw logging low

Para separar os logs do UFW dos demais e reduzir o tamanho do syslog, crie um filtro em /etc/rsyslog.d/20-ufw.conf:

:msg,contains,"[UFW " -/var/log/ufw.log
& stop

Depois reinicie o rsyslog:

sudo systemctl restart rsyslog

Complemente com rotação agressiva via logrotate. Edite /etc/logrotate.d/ufw:

/var/log/ufw.log {
    rotate 4
    weekly
    missingok
    notifempty
    compress
    delaycompress
    sharedscripts
    postrotate
        /usr/lib/rsyslog/rsyslog-rotate
    endscript
}

Silenciar tráfego ruidoso antes que seja logado

Broadcast, multicast e pacotes mDNS enchem os logs sem agregar valor de segurança. Descarte-os silenciosamente editando /etc/ufw/before.rules e adicionando, antes do COMMIT:

-A ufw-before-input -d 224.0.0.0/4 -j DROP
-A ufw-before-input -d 255.255.255.255 -j DROP
-A ufw-before-input -p udp --dport 137:138 -j DROP
-A ufw-before-input -p udp --dport 5353 -j DROP

Recarregue as regras:

sudo ufw reload
Output esperado:
Firewall recarregado

Esse ajuste costuma reduzir em 60-80% o volume diário de ufw.log em servidores expostos a redes com muitos dispositivos IoT ou tráfego de descoberta de serviços.

Problemas comuns e como resolver

Sintoma: perda de acesso SSH após habilitar o UFW

Causa: o firewall foi ativado sem uma regra allow prévia para a porta 22, ou a política padrão de entrada foi setada como deny antes da liberação.
Solução: se você mantém console de recuperação (KVM/VNC do painel AviraHost), execute sudo ufw allow 22/tcp && sudo ufw reload. Como prevenção, antes de habilitar remotamente, agende um cron de segurança:

echo "*/5 * * * * root /usr/sbin/ufw disable" | sudo tee /etc/cron.d/ufw-safety

Após confirmar que o SSH continua acessível, remova o cron.

Sintoma: regras do UFW ignoradas para containers Docker

Causa: o Docker insere suas próprias regras na chain DOCKER-USER do iptables legado, contornando as chains do UFW.
Solução: edite /etc/docker/daemon.json adicionando "iptables": false (requer configuração manual de NAT) ou insira regras específicas na chain DOCKER-USER via iptables -I DOCKER-USER. Para publicar containers respeitando o UFW, exponha portas apenas em 127.0.0.1 e use proxy reverso.

Sintoma: log cresce rapidamente mesmo com logging low

Causa: um scanner externo está gerando milhares de tentativas por minuto em portas fechadas, e cada pacote bloqueado é registrado.
Solução: bloqueie a faixa de origem antes de chegar à chain de log, adicione rate-limit ao rsyslog em /etc/rsyslog.conf com $SystemLogRateLimitInterval 2 e $SystemLogRateLimitBurst 50, e considere ativar fail2ban para banimentos temporários de scanners persistentes.

Sintoma: ufw status mostra inactive após reboot

Causa: o serviço ufw.service não está habilitado no systemd.
Solução: execute sudo systemctl enable ufw e verifique com systemctl is-enabled ufw. O retorno esperado é enabled.

Perguntas frequentes sobre otimização do UFW no Ubuntu 24.04

Qual a diferença entre UFW allow e limit no Ubuntu 24.04?

O allow libera conexões sem restrição, enquanto o limit aplica rate-limiting automático, bloqueando IPs que tentam mais de 6 conexões em 30 segundos. O limit é ideal para portas expostas como SSH, pois mitiga ataques de força bruta sem precisar instalar Fail2Ban. Para serviços públicos como HTTP/HTTPS, prefira allow para não penalizar usuários legítimos com múltiplas requisições.

A ordem das regras do UFW importa?

Sim, a ordem é crítica. O UFW processa regras de cima para baixo e aplica a primeira que casar com o pacote, ignorando as seguintes. Use ufw insert para posicionar regras de bloqueio antes de regras genéricas de allow. Sempre valide com ufw status numbered após cada alteração para garantir que a hierarquia está correta.

Como reduzir o tamanho dos logs do UFW que enchem o /var/log?

Ajuste o nível de log com ufw logging low em vez de medium ou high, configure rate-limit no rsyslog para o kernel.log e adicione regras específicas para descartar silenciosamente tráfego ruidoso como broadcast e multicast antes que sejam logados. Complemente com rotação semanal via logrotate para evitar que arquivos antigos consumam espaço desnecessário.

UFW substitui iptables ou nftables no Ubuntu 24.04?

Não, o UFW é apenas uma interface amigável. No Ubuntu 24.04 ele gera regras para o nftables por baixo dos panos. Você pode inspecionar o que o UFW realmente aplicou com nft list ruleset ou iptables-save. Isso é especialmente útil em ambientes com Docker ou Kubernetes, onde múltiplos componentes manipulam o netfilter simultaneamente.

Como testar regras UFW sem perder acesso SSH remoto?

Antes de habilitar o UFW remotamente, libere explicitamente a porta SSH com ufw allow 22/tcp e use um cron job de segurança que desabilite o firewall após 5 minutos. Se perder o acesso, o cron reverterá a política e você recupera o SSH. Após confirmar que tudo funciona, remova o cron de segurança com sudo rm /etc/cron.d/ufw-safety.

Conclusão

  • Organize regras por especificidade: use ufw insert para priorizar bloqueios antes de permissões genéricas e valide sempre com ufw status numbered.
  • Aplique limit em portas sensíveis como SSH e painéis administrativos para reduzir vetores de força bruta sem overhead de daemons adicionais.
  • Controle o volume de logs com nível low, filtros no rsyslog e descarte silencioso de tráfego broadcast/multicast diretamente em before.rules.

Leia também

Precisa de ajuda com firewall e segurança no seu VPS?

A AviraHost oferece VPS Linux com Ubuntu 24.04 pré-configurado e suporte técnico especializado em hardening de firewall, tuning de kernel e monitoramento de logs. Conte com nossa equipe para revisar suas políticas de UFW e proteger seus serviços em produção.

Conheça os planos de VPS da AviraHost


Esta resposta foi útil?