Como Configurar Firewall UFW no Ubuntu e Debian

10 min de leitura Segurança
Como Configurar Firewall UFW no Ubuntu e Debian

O firewall é uma das primeiras e mais críticas camadas de defesa para qualquer servidor exposto à internet. Em ambientes de Virtual Private Server (VPS) rodando sistemas baseados em Debian, como o Ubuntu, a ferramenta padrão e recomendada pela comunidade é o UFW (Uncomplicated Firewall). Embora seja uma interface de linha de comando simplificada, ela gerencia regras complexas no nível do kernel Linux via iptables ou nftables.

O objetivo deste tutorial é guiar sysadmins e desenvolvedores na configuração segura do UFW, garantindo que apenas as portas necessárias estejam abertas. Vamos cobrir desde a instalação básica até a criação de regras avançadas para SSH, HTTP, HTTPS e bancos de dados, além de explicar como lidar com os perfis de aplicação no Linux.

Entendendo o UFW e o Estado Inicial

Antes de começar a criar regras, é fundamental entender como o UFW interpreta o tráfego. Por padrão, firewalls seguem a lógica de "permitir tudo até que seja negado" ou "negar tudo até que seja permitido". No mundo da segurança moderna e em VPS públicas, a abordagem padrão deve ser bloquear todas as entradas (deny incoming) e permitir apenas as saídas (allow outgoing).

O UFW vem pré-instalado na maioria das distribuições Ubuntu Desktop e Server. Se você estiver em um ambiente Debian minimal ou encontrou o serviço inativo, verifique o status inicial usando o comando abaixo:

sudo ufw status

Ao executar este comando, é provável que a saída seja Status: inactive. Isso significa que não há regras ativas e o firewall está desligado. Em uma VPS recém-provisionada, deixar o firewall inativo enquanto configura serviços expostos é um risco de segurança significativo. Por isso, devemos habilitar o serviço com cuidado.

Configurando Regras Padrão (Default Policies)

O primeiro passo para uma configuração robusta é definir as políticas padrão. Essas regras definem o que acontece com todo tráfego que não corresponde a nenhuma regra específica criada pelo administrador.

No contexto de segurança para Ubuntu e Debian, a prática recomendada é:

  1. Negar todas as conexões de entrada: Isso impede que qualquer pessoa ou script malicioso se conecte à sua VPS, a menos que você tenha explicitamente permitido.
  2. Permitir todas as conexões de saída: Isso permite que seu servidor baixe atualizações, consulte APIs externas ou resolva nomes de domínio (DNS), o que é essencial para o funcionamento da maioria dos serviços.

Execute os seguintes comandos para aplicar essas políticas:

sudo ufw default deny incoming
sudo ufw default allow outgoing

Agora, o UFW está configurado para ser restritivo. No entanto, ele ainda não está ativo. Se você habilitá-lo agora, perderá a conexão com o servidor se estiver usando SSH e não tiver criado uma regra permitindo essa porta primeiro.

Habilitando o Firewall com Segurança

Antes de ativar o UFW, é obrigatório garantir que você possa manter o acesso remoto. Para a maioria dos administradores, isso significa permitir a porta SSH (padrão na porta 22).

Crie uma regra para permitir o tráfego SSH:

sudo ufw allow ssh

O UFW é inteligente o suficiente para reconhecer o serviço "ssh" e abrir a porta padrão 22. Se você mudou a porta do SSH para algo não padrão (ex: 2222), deve usar o número da porta explicitamente:

sudo ufw allow 2222/tcp

Agora que o canal de administração está liberado, você pode habilitar o firewall. O sistema pedirá confirmação, pois a ativação pode interromper conexões existentes se as regras não estiverem corretas:

sudo ufw enable

O comando retornará uma advertência: Command may disrupt existing ssh connections. Proceed with operation (y|n)?. Digite y e pressione Enter. O status deve mudar para Status: active.

Gerenciando Regras de Acesso a Serviços Web

Um dos usos mais comuns de uma VPS é hospedar aplicações web, sites ou APIs. Para que esses serviços sejam acessíveis pelo público, você precisa abrir as portas 80 (HTTP) e 443 (HTTPS).

O UFW oferece uma maneira simplificada de gerenciar isso através dos perfis de aplicação. O perfil é um arquivo definido no diretório /etc/ufw/applications.d/ que descreve quais portas um serviço específico utiliza.

Permitindo HTTP e HTTPS

Se você estiver usando Nginx, Apache ou qualquer outro servidor web, verifique primeiro os perfis disponíveis:

sudo ufw app list

A saída geralmente inclui opções como Nginx Full, Nginx HTTP, Nginx HTTPS, Apache Full, etc. A recomendação de segurança é ser o mais específico possível.

  • Nginx HTTP / Apache 80: Apenas tráfego não criptografado.
  • Nginx HTTPS / Apache 443: Apenas tráfego criptografado (TLS/SSL).
  • Nginx Full / Apache Full: Ambas as portas 80 e 443.

Para a maioria dos sites modernos que exigem certificados SSL, é seguro abrir o perfil completo. Execute:

sudo ufw allow 'Nginx Full'

Isso adicionará duas regras simultaneamente: uma para a porta 80 e outra para a 443. Se você estiver apenas desenvolvendo localmente ou usando um proxy reverso que lida com o SSL em outro lugar, pode escolher apenas 'Nginx HTTP'.

Restringindo Acesso a Bancos de Dados

Bancos de dados como MySQL, PostgreSQL ou MongoDB não devem estar expostos à internet pública. Se você tem um servidor de aplicação separado do banco de dados, deve restringir o acesso ao endereço IP interno da VPS que hospeda a aplicação.

Suponha que seu servidor de aplicação tenha o IP 192.168.1.50 e o banco de dados rode na porta padrão 3306 (MySQL). A regra correta seria:

sudo ufw allow from 192.168.1.50 to any port 3306

Este comando diz ao firewall: "Permita que apenas o IP 192.168.1.50 se conecte a qualquer interface na porta 3306". Isso protege seu banco de dados contra varreduras externas e ataques de força bruta vindos da internet.

Se você estiver em uma rede local ou VPS com IP privado dinâmico, certifique-se de que o endereço IP não mude frequentemente. Em ambientes cloud modernos (AWS, DigitalOcean, Linode), utilize grupos de segurança na nuvem para filtragem L3 e o UFW para filtragem L4 adicional, se necessário.

Permitindo Faixas de IP e Sub-redes

Às vezes, você precisa permitir acesso não apenas de um único IP, mas de uma rede inteira. Por exemplo, se sua empresa tem um escritório com um IP fixo público ou se você está configurando uma VPN.

Para permitir uma sub-rede CIDR (ex: 192.168.0.0/24) acessar a porta SSH:

sudo ufw allow from 192.168.0.0/24 to any port 22

Isso é útil para ambientes de desenvolvimento ou acesso administrativo em rede local, mas evite usar 0.0.0.0/0 (qualquer IP) para portas sensíveis como SSH.

Acessando com Intervalos de Porta

Alguns protocolos, especialmente FTP e jogos multiplayer, utilizam faixas de portas dinâmicas. Para permitir uma faixa de portas no protocolo TCP (de 3000 a 3010):

sudo ufw allow 3000:3010/tcp

Para UDP:

sudo ufw allow 3000:3010/udp

Remoção e Gerenciamento de Regras

A gestão contínua do firewall exige a capacidade de remover ou modificar regras existentes. O UFW atribui um número sequencial às regras adicionadas, o que facilita a remoção.

Listando Reguras com Números

O comando status numbered mostra as regras ativas acompanhadas de seus índices:

sudo ufw status numbered

A saída será semelhante a:

[ 1] 22/tcp                  ALLOW IN    Anywhere
[ 2] Nginx Full              ALLOW IN    Anywhere
[ 3] 3306                    ALLOW IN    192.168.1.50

Removendo Regras

Para remover a regra de número 3 (acesso ao banco de dados), use:

sudo ufw delete 3

O sistema pedirá confirmação. Após a exclusão, reordene as regras ou simplesmente continue adicionando novas, pois o UFW gerencia a lista internamente de forma eficiente.

Removendo Regras por Sintaxe

Se você não lembrar do número, pode remover a regra usando os mesmos parâmetros da criação:

sudo ufw delete allow ssh

Cuidado ao usar esse método se houver múltiplas regras idênticas. O UFW geralmente remove a primeira ocorrência encontrada.

Mantenha o Registro: Logs do Firewall

O logging é essencial para auditoria e detecção de intrusões. O UFW pode registrar tentativas de conexão bloqueadas ou permitidas.

Ative o log para conexões rejeitadas:

sudo ufw logging medium

As opções de nível são: off, low, medium, high e full. Para produção, medium é geralmente suficiente para registrar bloqueios sem sobrecarregar o disco com logs de tráfego permitido. Os logs podem ser visualizados em:

sudo tail -f /var/log/ufw.log

Observe picos de tentativas na porta 22 ou 3306 vindas de IPs estrangeiros. Isso é normal em VPS públicas e indica que o firewall está fazendo seu trabalho bloqueando acesso indesejado.

Resetando e Desativando o UFW

Em casos de emergência, onde você perdeu acesso ao servidor ou precisa depurar uma configuração complexa, pode ser necessário desativar o firewall temporariamente.

sudo ufw disable

Lembre-se de reativá-lo assim que o problema for resolvido. Nunca deixe um servidor público sem firewall ativo por longos períodos.

Para resetar todas as regras para o padrão (como se tivesse acabado de instalar), use:

sudo ufw reset

O reset desativa o UFW, remove todas as regras e restaura as políticas padrão. Use com extrema cautela.

Melhores Práticas Finais para Segurança em VPS

  1. Princípio do Menor Privilégio: Abra apenas o estritamente necessário. Se não precisa de FTP, não abra a porta 21. Prefira SFTP (sobre SSH).
  2. Use Chaves SSH em vez de Senhas: Combine o UFW com a desativação de login por senha no arquivo /etc/ssh/sshd_config. Isso torna inútil ataques de força bruta na porta 22.
  3. Falha Segura (Fail2Ban): Instale e configure o fail2ban. Ele monitora os logs do SSH e bloqueia automaticamente IPs que fazem muitas tentativas de login falhas, complementando a defesa estática do UFW.
  4. Teste Sempre: Antes de fechar a sessão SSH, deixe outra janela aberta ou use um console de recuperação da nuvem para testar se as novas regras não bloquearam seu próprio acesso.
  5. Documentação: Mantenha um arquivo de documentação atualizado com as regras que você criou. Em equipes grandes, saber quem abriu a porta 8080 é crucial para troubleshooting.

A configuração correta do UFW transforma sua VPS Ubuntu ou Debian em uma infraestrutura muito mais resiliente. Ao seguir estes passos, você estabelece uma base sólida de segurança, permitindo que seus serviços rodem com confiança enquanto minimiza a superfície de ataque contra ameaças externas.

Compartilhar: Link copiado!
Esse tutorial foi útil?

Comentários (0)

Seja o primeiro a comentar.

Deixe seu comentário

Seu comentário será analisado antes de ser publicado.

0/2000