---
title: "UFW na VPS Ubuntu: regras de firewall sem perder o SSH"
description: "Configure o UFW na VPS Ubuntu: SSH liberado antes do enable, ufw limit, portas de site e jogos, IPv6, Docker e console do painel para não se trancar fora."
url: "https://streethosting.com.br/guias/vps/firewall-ufw-vps-ubuntu"
category: "vps"
slug: "firewall-ufw-vps-ubuntu"
datePublished: "2026-05-19"
dateModified: "2026-09-28"
author: "Equipe StreetHosting"
difficulty: "iniciante"
language: "pt-BR"
keywords:
  - "ufw firewall ubuntu vps"
  - "ubuntu ufw ssh"
  - "liberar porta ufw"
  - "vps firewall brasil"
  - "ufw limit ssh"
  - "ufw docker portas expostas"
---

# Firewall UFW na VPS Ubuntu, do primeiro enable ao Docker

O UFW simplifica o firewall do Ubuntu, mas uma regra na ordem errada tranca você fora da VPS. Veja como ativar sem perder o SSH, liberar só o necessário, lidar com o Docker e voltar pelo console se algo der errado.

> **Resposta rápida**
>
> Na VPS Ubuntu, defina o UFW com **deny incoming**, libere o **SSH na porta real** antes de ativar, confira com `sudo ufw show added` e só então rode `sudo ufw enable`. Troque o allow do SSH por limit, abra só as portas com serviço ativo, publique containers em 127.0.0.1 e tenha uma senha local para usar o console do painel se algo der errado.

## Mentalidade default deny

O UFW é uma interface simplificada para o firewall do kernel Linux e vem instalado no Ubuntu Server, porém desligado. A política que você quer é default deny: toda conexão de entrada é negada, e cada porta aberta é uma exceção com motivo. Isso evita a exposição acidental de serviços internos como banco de dados, painel ou endpoint de teste que ficou no ar depois de um deploy.

O caso clássico é liberar a 5432 para testar o PostgreSQL de casa e esquecer de fechar. Em poucas horas o banco aparece nas varreduras automáticas e começa a receber tentativas de login. Com default deny e revisão periódica das regras, esse tipo de vazamento cai bastante.

Duas ideias guiam o resto do guia. A primeira: o UFW avalia as regras em ordem e a primeira que casa decide, então um deny para um IP precisa vir antes do allow geral da porta. A segunda: o firewall é só uma camada do acesso remoto. Ele funciona melhor junto com o [SSH seguro na VPS Linux](https://streethosting.com.br/guias/vps/ssh-seguro-vps-linux), com login por chave e senha remota desativada.

## Fluxo seguro antes do primeiro enable

A sequência abaixo define as políticas, libera o SSH, mostra as regras que vão entrar e só no fim ativa o firewall:

```
sudo ufw status verbose
sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw allow OpenSSH
sudo ufw show added
sudo ufw enable
sudo ufw status numbered
```

1. O perfil OpenSSH libera a porta 22/tcp. Se o seu SSH usa outra porta, libere ela no lugar, por exemplo `sudo ufw allow 2222/tcp`. Confira a porta real com `sudo ss -tlnp | grep ssh`.
2. O show added lista as regras pendentes sem ativar nada. Se o SSH não aparece ali, pare.
3. O enable avisa que pode derrubar conexões SSH e pede confirmação. Responda y. Em scripts, use `sudo ufw --force enable`.
4. Sem fechar a sessão atual, abra um segundo terminal e faça um login novo. Só depois de entrar por ele considere o firewall pronto.

> **Dica**
>
> Para ter uma rede de segurança, agende o desligamento do firewall antes do enable: `sudo systemd-run --on-active=5min /usr/sbin/ufw disable`. Se você perder o acesso, em cinco minutos o UFW desliga sozinho. Se deu tudo certo, cancele com `sudo systemctl stop` seguido do nome do timer que o comando mostrou.

> **Atenção**
>
> Para trocar a porta do SSH, a ordem é: liberar a porta nova no UFW, alterar a configuração do SSH, testar a porta nova em outra sessão e só então apagar a regra antiga. No Ubuntu 24.04 o SSH é ativado por socket, então a porta nova só vale depois de `sudo systemctl daemon-reload` e `sudo systemctl restart ssh.socket`.

## Limitar tentativas e restringir origem

Com o firewall no ar, o próximo passo é tornar a regra do SSH mais esperta. O limit substitui o allow e nega temporariamente um IP que abrir 6 ou mais conexões em 30 segundos:

```
sudo ufw limit OpenSSH
sudo ufw status numbered
```

Ele corta robôs que reconectam em sequência, mas tem limites. Conta conexões, não senhas erradas, então um robô que testa várias senhas na mesma conexão passa. E ferramentas que abrem muitas conexões seguidas, como scripts de deploy, rsync em laço ou extensões de editor remoto, podem ser barradas por engano. Para bloquear por tentativa de login, use o [Fail2Ban na VPS](https://streethosting.com.br/guias/vps/configurar-fail2ban-ssh-vps).

A proteção mais forte é nem aceitar conexão de quem não é você. Se tiver IP fixo, ou uma VPN, restrinja a origem:

```
# só um IP pode acessar o SSH
sudo ufw allow from 203.0.113.10 to any port 22 proto tcp comment 'SSH escritorio'

# SSH só por dentro da VPN WireGuard
sudo ufw allow in on wg0 to any port 22 proto tcp comment 'SSH pela VPN'

# depois de testar, remova a regra aberta
sudo ufw delete limit OpenSSH
```

Muitas conexões residenciais no Brasil têm IP dinâmico ou CGNAT, e o endereço muda sem aviso. Nesse caso, a VPN é mais confiável que a lista de IPs. A montagem está no guia de [VPN WireGuard na VPS](https://streethosting.com.br/guias/vps/proteger-vps-wireguard-vpn), e a estratégia completa de acesso está em [proteger o SSH contra força bruta](https://streethosting.com.br/guias/infraestrutura/proteger-servidor-linux-ssh-brute-force).

## Regras comuns: site, jogos e banco

Abra só as portas que têm serviço ativo, e na versão mais estreita possível. Quando o protocolo não é informado, o UFW libera TCP e UDP ao mesmo tempo, o que é útil para jogos que usam os dois.

| Serviço | Regra no UFW | Observação |
| --- | --- | --- |
| SSH | sudo ufw limit OpenSSH | Ou a porta customizada com /tcp; de preferência com origem restrita |
| Site HTTP e HTTPS | sudo ufw allow 'Nginx Full' | Equivale a 80/tcp e 443/tcp; a 80 é usada na validação do Let's Encrypt |
| Minecraft Java | sudo ufw allow 25565/tcp | Se ativar o query, libere também 25565/udp |
| Minecraft Bedrock | sudo ufw allow 19132/udp | O Bedrock usa só UDP; 19133/udp para IPv6 |
| FiveM | sudo ufw allow 30120 | Sem protocolo, abre TCP e UDP, que o FiveM usa |
| CS2 | sudo ufw allow 27015 | UDP para o jogo e TCP para RCON |
| PostgreSQL ou MySQL | sudo ufw allow from IP_DA_APP to any port 5432 proto tcp | Nunca aberto para qualquer origem |

O comando `sudo ufw app list` mostra os perfis prontos que os pacotes instalam, como OpenSSH e os perfis do Nginx. Para sites, o normal é deixar só 80 e 443 públicos e manter a aplicação escutando em localhost atrás do proxy reverso. Banco de dados, Redis e painéis internos também ficam em localhost; se outra máquina precisa acessar, libere só o IP dela.

## Revisar, apagar e registrar regras

Regras se acumulam com o tempo. Os comandos do dia a dia:

```
# listar com número
sudo ufw status numbered

# apagar pelo número (a numeração muda depois, liste de novo)
sudo ufw delete 4

# apagar pela própria regra
sudo ufw delete allow 8080/tcp

# bloquear um IP antes das regras de allow
sudo ufw insert 1 deny from 198.51.100.23 comment 'varredura'

# registrar bloqueios em /var/log/ufw.log
sudo ufw logging low
```

- **Comentários:** toda regra aceita `comment 'motivo'` no fim. Daqui a seis meses, você vai querer saber por que a 8443 está aberta.
- **IPv6:** no arquivo `/etc/default/ufw`, a opção IPV6 vem como yes, e cada regra por porta ganha uma cópia marcada como v6. Se o domínio tem registro AAAA, confira que as regras de IPv6 seguem a mesma política; senão, um serviço bloqueado em IPv4 pode seguir acessível em IPv6.
- **Logs:** no nível low, os pacotes bloqueados aparecem com a marca UFW BLOCK, com IP de origem e porta. Níveis acima de medium geram volume demais para uso contínuo.
- **Recomeçar do zero:** `sudo ufw reset` desliga o firewall e apaga todas as regras, guardando uma cópia. Antes do próximo enable, libere o SSH de novo.

## UFW com Docker e outras armadilhas

Esta é a armadilha que mais expõe bancos de dados em VPS. Quando você publica uma porta com `-p 5432:5432`, o Docker cria regras próprias que redirecionam o tráfego direto para o container. Esse tráfego passa pela cadeia de encaminhamento, e não pela de entrada, onde ficam as regras do UFW. Resultado: o `ufw status` não mostra a porta, e ela está aberta para a internet.

As saídas, da mais simples para a mais trabalhosa:

- **Publicar só em localhost:** no compose, use `"127.0.0.1:5432:5432"` em ports. O container fica acessível para a própria VPS e para o proxy reverso, mas não para fora.
- **Mudar o padrão do Docker:** com `{ "ip": "127.0.0.1" }` em `/etc/docker/daemon.json` e um restart do Docker, toda porta publicada sem IP explícito passa a ouvir só localmente.
- **Filtrar na cadeia do usuário:** para containers que precisam ser públicos com restrição de origem, crie regras na cadeia `DOCKER-USER`, que o Docker reserva para isso. O projeto `ufw-docker` automatiza essa integração.

A instalação do Docker em si está no guia de [instalar Docker no Ubuntu](https://streethosting.com.br/guias/vps/instalar-docker-ubuntu-vps). Outras duas confusões comuns: uma porta liberada no UFW em que nada responde normalmente é um serviço escutando só em 127.0.0.1, não um problema de firewall; e os bans do Fail2Ban no Ubuntu 24.04 ficam em uma tabela própria do nftables, então não aparecem no ufw status.

- [ ] Salvar a saída de sudo ufw status numbered antes de mudanças grandes
- [ ] Conferir sudo ss -tlnp e as portas dos containers depois de cada deploy
- [ ] Testar de outra máquina se a porta do banco responde
- [ ] Anotar a data de remoção de cada exceção temporária
- [ ] Revisar as regras numeradas uma vez por mês

## Se você se trancar fora: console do painel

Mesmo com cuidado, acontece: uma regra na ordem errada, uma porta digitada errado, um reset esquecido. A saída é o console da VPS, que fica na página do serviço na área do cliente. Ele funciona pelo hipervisor, como um monitor e um teclado ligados na máquina, e não passa pela rede nem pelo firewall.

O detalhe que pega muita gente: no console não existe chave SSH. O login é com usuário e senha local. Se você só entra por chave e nunca definiu senha, defina agora, antes de precisar:

```
sudo passwd seu-usuario
```

Isso não reabre o login por senha no SSH, se ele estiver desativado; a senha vale só para o console e para o sudo. Dentro do console, a correção costuma ser uma linha: `sudo ufw allow OpenSSH`, ou `sudo ufw disable` para respirar e refazer as regras com calma. Se a senha tiver símbolos e o login falhar, desconfie do layout do teclado do console, que pode ser diferente do seu.

## Firewall, AntiDDoS e onde rodar

O UFW decide o que entra na VPS, mas só age depois que o pacote chegou. Um ataque volumétrico satura o link antes de qualquer regra ser avaliada, e isso só se resolve na rede do provedor. Do outro lado, a porta 443 aberta deixa passar tudo o que vem por HTTP, e ataques à aplicação pedem outra camada. As diferenças estão em [firewall de rede e de aplicação](https://streethosting.com.br/guias/infraestrutura/firewall-rede-vs-aplicacao-diferenca).

As [VPS da StreetHosting](https://streethosting.com.br/vps) são KVM com acesso root, então o UFW, o nftables e o Docker funcionam sem restrição de virtualização. Ficam em São Paulo, com AntiDDoS incluso na rede e console no painel para quando o firewall trancar a porta. Para aprender e subir um site pequeno, a VPS Xeon de 2 vCPU e 2 GB sai por R$ 23,00 por mês, e a Ryzen 9 9950X de entrada por R$ 39,00. Com Docker, banco e proxy reverso na mesma máquina, a Ryzen de 2 vCPU e 4 GB DDR5, por R$ 64,00, dá mais folga.

## Perguntas frequentes

### Ativei o UFW sem liberar o SSH. Como recupero o acesso?

Abra o console da VPS pela página do serviço na área do cliente, entre com o usuário e a senha local e rode sudo ufw allow OpenSSH, ou a porta que você usa. O console funciona pelo hipervisor e não passa pelo firewall. Sem senha local definida, o console não ajuda, por isso crie uma antes de mexer em regras.

### Por que o UFW não bloqueia a porta do meu container Docker?

Porque o Docker encaminha o tráfego das portas publicadas por um caminho do firewall que as regras de entrada do UFW não avaliam. Publique a porta só em 127.0.0.1 e coloque um proxy reverso na frente, ou crie regras na cadeia que o Docker reserva para o usuário.

### Qual a diferença entre ufw allow e ufw limit?

O allow aceita toda conexão na porta. O limit aceita, mas nega um IP que abrir 6 ou mais conexões em 30 segundos. É bom para SSH, porque corta robôs que reconectam em sequência, mas não serve para portas de site ou de jogo, onde muitas conexões seguidas são normais.

### Preciso bloquear o tráfego de saída também?

Na maioria das VPS, não. O padrão allow outgoing mantém atualizações, DNS e chamadas de API funcionando. Restringir a saída faz sentido em ambientes muito sensíveis, mas exige liberar cada destino necessário e quebra coisas com facilidade se feito sem inventário.

### O UFW protege a VPS contra DDoS?

Não contra ataques volumétricos. O UFW descarta pacotes quando eles já chegaram à VPS, e um ataque grande satura o link antes disso. Essa camada é resolvida na rede do provedor, pelo AntiDDoS. O UFW cuida de portas e origens, e o limit ajuda só contra excesso de conexões em uma porta.

## Guias relacionados

- [SSH seguro em VPS Linux: chaves, senhas, fail2ban e hábitos que evitam invasão](https://streethosting.com.br/guias/vps/ssh-seguro-vps-linux.md)
- [Configurar Fail2Ban na VPS: SSH, Nginx e reincidentes](https://streethosting.com.br/guias/vps/configurar-fail2ban-ssh-vps.md)
- [Proteger SSH contra brute force: estratégia em camadas](https://streethosting.com.br/guias/infraestrutura/proteger-servidor-linux-ssh-brute-force.md)
- [Como instalar Docker no Ubuntu 22.04 ou 24.04 em VPS (guia direto ao ponto)](https://streethosting.com.br/guias/vps/instalar-docker-ubuntu-vps.md)
- [Firewall de rede e firewall de aplicação: qual a diferença](https://streethosting.com.br/guias/infraestrutura/firewall-rede-vs-aplicacao-diferenca.md)

## Produtos citados

- https://streethosting.com.br/vps
- https://streethosting.com.br/vps/ryzen
- https://streethosting.com.br/vps/xeon

## Dados estruturados

```json
[
  {
    "@context": "https://schema.org",
    "@type": [
      "Article",
      "TechArticle"
    ],
    "headline": "Firewall UFW na VPS Ubuntu, do primeiro enable ao Docker",
    "name": "UFW na VPS Ubuntu: regras de firewall sem perder o SSH",
    "abstract": "O UFW simplifica o firewall do Ubuntu, mas uma regra na ordem errada tranca você fora da VPS. Veja como ativar sem perder o SSH, liberar só o necessário, lidar com o Docker e voltar pelo console se algo der errado.",
    "description": "Configure o UFW na VPS Ubuntu: SSH liberado antes do enable, ufw limit, portas de site e jogos, IPv6, Docker e console do painel para não se trancar fora.",
    "datePublished": "2026-05-19",
    "dateModified": "2026-09-28",
    "author": {
      "@type": "Organization",
      "name": "Equipe StreetHosting"
    },
    "publisher": {
      "@type": "Organization",
      "name": "StreetHosting",
      "url": "https://streethosting.com.br"
    },
    "inLanguage": "pt-BR",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://streethosting.com.br/guias/vps/firewall-ufw-vps-ubuntu"
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "FAQPage",
    "mainEntity": [
      {
        "@type": "Question",
        "name": "Ativei o UFW sem liberar o SSH. Como recupero o acesso?",
        "acceptedAnswer": {
          "@type": "Answer",
          "text": "Abra o console da VPS pela página do serviço na área do cliente, entre com o usuário e a senha local e rode sudo ufw allow OpenSSH, ou a porta que você usa. O console funciona pelo hipervisor e não passa pelo firewall. Sem senha local definida, o console não ajuda, por isso crie uma antes de mexer em regras."
        }
      },
      {
        "@type": "Question",
        "name": "Por que o UFW não bloqueia a porta do meu container Docker?",
        "acceptedAnswer": {
          "@type": "Answer",
          "text": "Porque o Docker encaminha o tráfego das portas publicadas por um caminho do firewall que as regras de entrada do UFW não avaliam. Publique a porta só em 127.0.0.1 e coloque um proxy reverso na frente, ou crie regras na cadeia que o Docker reserva para o usuário."
        }
      },
      {
        "@type": "Question",
        "name": "Qual a diferença entre ufw allow e ufw limit?",
        "acceptedAnswer": {
          "@type": "Answer",
          "text": "O allow aceita toda conexão na porta. O limit aceita, mas nega um IP que abrir 6 ou mais conexões em 30 segundos. É bom para SSH, porque corta robôs que reconectam em sequência, mas não serve para portas de site ou de jogo, onde muitas conexões seguidas são normais."
        }
      },
      {
        "@type": "Question",
        "name": "Preciso bloquear o tráfego de saída também?",
        "acceptedAnswer": {
          "@type": "Answer",
          "text": "Na maioria das VPS, não. O padrão allow outgoing mantém atualizações, DNS e chamadas de API funcionando. Restringir a saída faz sentido em ambientes muito sensíveis, mas exige liberar cada destino necessário e quebra coisas com facilidade se feito sem inventário."
        }
      },
      {
        "@type": "Question",
        "name": "O UFW protege a VPS contra DDoS?",
        "acceptedAnswer": {
          "@type": "Answer",
          "text": "Não contra ataques volumétricos. O UFW descarta pacotes quando eles já chegaram à VPS, e um ataque grande satura o link antes disso. Essa camada é resolvida na rede do provedor, pelo AntiDDoS. O UFW cuida de portas e origens, e o limit ajuda só contra excesso de conexões em uma porta."
        }
      }
    ]
  }
]
```
