Como configurar o UFW no Ubuntu e Debian: entrada bloqueada, SSH só para o seu IP, IPv6 filtrado, ativação com rollback automático e o caso do Docker.
Para que serve
O UFW (Uncomplicated Firewall) é a forma mais simples de montar um firewall em uma VM Linux com Ubuntu ou Debian. Ele gera as regras do kernel por você a partir de comandos curtos como ufw allow 443/tcp. Este artigo monta uma configuração segura do UFW no Ubuntu e no Debian: tudo fechado na entrada, SSH só para o seu IP e apenas os serviços públicos que você realmente usa.
Use o UFW dentro das VMs. No host Proxmox, use o firewall do próprio Proxmox (veja também o artigo «Firewall do Proxmox VE: como ativar sem perder o acesso»).
ufw enable, tudo o que não estiver liberado é bloqueado, inclusive o SSH. Siga a ordem do artigo: libere o SSH antes de ativar. Se algo der errado, entre pelo console da VM no Proxmox (noVNC) ou, se o Linux estiver instalado direto no servidor, pelo console IPMI/iLO, e rode ufw disable.Pré-requisitos
- Ubuntu 22.04/24.04 ou Debian 12/13, com acesso
rootousudo. - O IP público fixo de onde você administra (
203.0.113.10nos exemplos). - Acesso ao console da VM (Proxmox → VM → Console) ou ao IPMI/iLO, testado antes.
- Nenhum outro firewall ativo na mesma máquina (firewalld, script próprio de nftables/iptables). Dois gerenciadores ao mesmo tempo causam conflito.
Como configurar o UFW no Ubuntu e Debian passo a passo
1. Instalar
No Ubuntu o UFW já vem instalado. No Debian:
sudo apt update
sudo apt install ufw
Confira se está inativo antes de começar: sudo ufw status deve mostrar Status: inactive.
2. Confirmar que o IPv6 será filtrado
Seu servidor tem IPv6. Abra /etc/default/ufw e confirme a linha:
IPV6=yes
Sem isso, as regras valem só para IPv4 e os serviços continuam expostos pelo IPv6.
3. Definir as políticas padrão
sudo ufw default deny incoming
sudo ufw default allow outgoing
Entrada bloqueada, saída liberada. Isso ainda não está valendo; o firewall só é ativado no passo 6.
4. Liberar o SSH só para você
sudo ufw allow from 203.0.113.10 to any port 22 proto tcp comment 'SSH admin'
sudo ufw allow from 198.51.100.0/24 to any port 22 proto tcp comment 'SSH escritorio'
Se você usa IPv6 para administrar, adicione também o seu endereço IPv6 da mesma forma. Se o SSH roda em outra porta, troque o 22.
Não há como restringir por IP porque o seu IP muda? Use pelo menos o limitador de tentativas, que bloqueia temporariamente quem abrir 6 ou mais conexões em 30 segundos:
sudo ufw limit 22/tcp comment 'SSH com limite'
Restringir por IP (ou por VPN) é sempre melhor do que apenas limitar.
5. Liberar os serviços públicos
Libere somente o que precisa ser acessado pela internet. Exemplo de servidor web:
sudo ufw allow 80,443/tcp comment 'Web'
Serviços internos, como banco de dados, devem ficar restritos ao IP de quem consome:
sudo ufw allow from 10.10.10.20 to any port 5432 proto tcp comment 'Postgres app'
Antes de ativar, revise o que foi cadastrado:
sudo ufw show added
6. Ativar com rede de segurança
Agende a desativação automática em 5 minutos. Se você perder o acesso, basta esperar:
sudo systemd-run --on-active=5m --unit=ufw-rollback /usr/sbin/ufw disable
sudo ufw --force enable
Agora, sem fechar a sessão atual, abra uma nova conexão SSH. Se ela funcionar, cancele a desativação agendada:
sudo systemctl stop ufw-rollback.timer
Se a nova conexão não abrir, aguarde os 5 minutos, reconecte e revise as regras.
7. Ligar o log (opcional)
sudo ufw logging low
Os bloqueios aparecem com o prefixo [UFW BLOCK] em journalctl -k ou /var/log/ufw.log.
Como saber se funcionou
sudo ufw status verbosemostraStatus: active, as políticas padrão e as regras.- De outra máquina, teste uma porta liberada e uma bloqueada:
nc -vz IP-DO-SERVIDOR 443deve conectar;nc -vz IP-DO-SERVIDOR 22a partir de um IP não autorizado deve dar timeout. - Reinicie a VM e confirme que o UFW sobe sozinho:
sudo ufw status.
Comandos do dia a dia
| Tarefa | Comando |
|---|---|
| Listar regras numeradas | sudo ufw status numbered |
| Apagar a regra nº 3 | sudo ufw delete 3 |
| Inserir regra no topo | sudo ufw insert 1 deny from 192.0.2.50 |
| Simular sem aplicar | sudo ufw --dry-run allow 8080/tcp |
| Recarregar após editar arquivos | sudo ufw reload |
| Perfis de aplicação | sudo ufw app list |
Atenção ao apagar por número: a numeração muda a cada exclusão. Rode status numbered de novo antes de apagar a próxima.
Problemas comuns
- Docker ignora o UFW. Portas publicadas com
-p 8080:80ficam acessíveis pela internet mesmo comdefault deny, porque o Docker cria regras próprias que são avaliadas antes das do UFW. Publique apenas no localhost (-p 127.0.0.1:8080:80) e use um proxy reverso, ou filtre na chainDOCKER-USER, ou use o firewall do Proxmox na VM. Veja também o artigo «Docker ignora o UFW: por que acontece e como corrigir o firewall». - Perdi o SSH após ativar. Entre pelo console da VM no Proxmox (ou pelo IPMI/iLO, se for instalação direta no servidor), rode
sudo ufw disable, corrija as regras e ative de novo. - Regra de "deny" não funciona. O UFW aplica a primeira regra que combina. Se existe um
allowantes, odenynunca é alcançado. Useufw insert 1para colocá-lo no topo. - Firewall do Proxmox também ativo na VM. Pode usar os dois, mas o pacote precisa passar pelos dois. Ao depurar, confira as duas camadas.
Perguntas frequentes
O UFW já vem instalado no Ubuntu?
Sim, no Ubuntu ele já vem instalado, mas inativo. No Debian, instale com apt install ufw.
Como liberar uma porta no UFW?
Use sudo ufw allow 443/tcp para uma porta pública ou sudo ufw allow from IP to any port 5432 proto tcp para liberar só para um IP.
Ativei o UFW e perdi o SSH. Como resolver?
Entre pelo console da VM no Proxmox (ou pelo IPMI/iLO, se o Linux está direto no servidor), rode sudo ufw disable, corrija as regras e ative de novo.
O UFW filtra IPv6?
Sim, desde que /etc/default/ufw tenha IPV6=yes. Sem isso, os serviços continuam expostos pelo IPv6.
Por que o Docker passa por cima do UFW?
O Docker cria regras próprias que são avaliadas antes das do UFW. Publique as portas só no localhost ou filtre na chain DOCKER-USER.
Precisa de ajuda?
Se ficou alguma dúvida, abra um ticket ou fale com o suporte pelo WhatsApp.
