# Como liberar portas com o firewall UFW na VPS via SSH

> No terminal da VPS, libere primeiro a porta do SSH com ufw allow 22/tcp, depois as portas que precisar (como 80 e 443) e só então ative com ufw enable. O UFW é uma camada a mais, separada do firewall do painel.

O UFW (Uncomplicated Firewall) é o firewall mais simples do Ubuntu e do Debian. Antes de ativar, libere a porta do SSH com `ufw allow 22/tcp`; depois, libere as portas que o seu serviço usa e ative com `ufw enable`. Ele funciona dentro da VPS e é uma camada separada do firewall do painel.

## Antes de começar
- Acesse a VPS por SSH. Se ainda não sabe como, veja "Como acessar sua VPS por SSH pelo terminal (Linux, Windows e Mac)".
- Os comandos funcionam no Ubuntu e no Debian, os sistemas das VPS da StayCloud.
- Os exemplos supõem que você entrou como `root`. Com outro usuário, coloque `sudo` na frente de cada comando.
- Saiba quais portas o seu serviço usa. As mais comuns: `22` (SSH), `80` (HTTP, site sem cadeado) e `443` (HTTPS, site com cadeado).
- Deixe o Console SSH do painel à mão: se você se trancar para fora, é por ele que se entra. Veja "Como acessar sua VPS pelo Console SSH do painel".

## O UFW e o firewall do painel
São duas camadas diferentes, uma na frente da outra:

- O **firewall do painel** filtra o tráfego antes de ele chegar na VPS. Veja "Como criar uma regra de firewall na sua VPS".
- O **UFW** filtra dentro da VPS, no próprio sistema.

Para uma porta funcionar, ela precisa estar liberada nas duas camadas que estiverem ativas. Se você liberou no UFW e a porta continua fechada, confira o firewall do painel, e vice-versa. Você pode usar só uma das duas; usar as duas dá uma proteção extra.

## Instalar o UFW, se precisar
No Ubuntu, o UFW já vem instalado, mas desativado. No Debian, instale antes.

1. Instale:
   ```
   apt update && apt install -y ufw
   ```
   Resultado: o UFW é instalado, ou aparece que ele já está na versão mais nova.
2. Veja o estado:
   ```
   ufw status
   ```
   Resultado: aparece `Status: inactive` se ele ainda não foi ativado.

## Liberar as portas e ativar
Siga esta ordem. Ativar o UFW sem liberar o SSH antes derruba a sua conexão.

1. Libere a porta do SSH:
   ```
   ufw allow 22/tcp
   ```
   Resultado: aparece `Rules updated` (e `Rules updated (v6)`). Se o seu SSH usa outra porta, troque o `22` por ela.
2. Libere as portas do site, se a VPS tiver um:
   ```
   ufw allow 80/tcp
   ufw allow 443/tcp
   ```
   Resultado: aparece `Rules updated` para cada uma.
3. Ative o UFW:
   ```
   ufw enable
   ```
   Resultado: o UFW avisa `Command may disrupt existing ssh connections. Proceed with operation (y|n)?`.
4. Confira que a porta `22` está liberada no passo 1, digite `y` e aperte `Enter`.
   Resultado: aparece `Firewall is active and enabled on system startup`. A partir daqui, tudo o que não foi liberado fica bloqueado para quem vem de fora.

Para liberar uma porta só para um endereço, como o IP do seu escritório, use:

```
ufw allow from <SEU_IP> to any port 3306 proto tcp
```

Assim, só o `<SEU_IP>` acessa a porta `3306` (do MySQL), e o resto da internet não.

## Ver e remover regras
1. Veja as regras com número:
   ```
   ufw status numbered
   ```
   Resultado: aparece a lista das regras, cada uma com um número entre colchetes, como `[ 2]`.
2. Remova a regra pelo número:
   ```
   ufw delete 2
   ```
   Resultado: o UFW mostra a regra e pede confirmação. Digite `y` e aperte `Enter`.

Os números mudam depois de cada remoção. Rode `ufw status numbered` de novo antes de remover outra. Nunca remova a regra da porta do SSH.

Para desligar o UFW de vez, use `ufw disable`. As regras ficam guardadas para quando você ativar de novo.

## Como saber se deu certo
1. Rode:
   ```
   ufw status verbose
   ```
   Resultado: aparece `Status: active` e a lista das portas liberadas, com `ALLOW IN`.
2. Sem fechar a sessão atual, abra outro terminal no seu computador e conecte de novo na VPS por SSH.
   Resultado: a conexão nova funciona. Se não funcionar, a sessão antiga continua aberta para você corrigir as regras.

## Se algo der errado
### Perdi o acesso SSH depois de ativar o UFW
Causa: a porta do SSH não foi liberada antes do `ufw enable`. Solução: entre pelo Console SSH do painel e rode `ufw allow 22/tcp` (ou `ufw disable` para desligar o UFW).

### Liberei a porta no UFW e ela continua fechada
Causa: o firewall do painel está bloqueando, ou o serviço não está rodando nessa porta. Solução: confira as regras do firewall do painel e veja se o serviço está ativo com `systemctl status`.

### A porta de um contêiner Docker ficou aberta mesmo bloqueada no UFW
Causa: o Docker cria as próprias regras de firewall e as portas publicadas pelos contêineres passam por fora do UFW. Solução: publique a porta só no endereço local quando ela não precisar ser pública (por exemplo, `-p 127.0.0.1:8080:80`) e use o firewall do painel para bloquear o acesso de fora.

### "ufw: command not found"
Causa: o UFW não está instalado (comum no Debian). Solução: instale com `apt install ufw`.

## Relacionados
- Como criar uma regra de firewall na sua VPS
- Como acessar sua VPS pelo Console SSH do painel
- Como acessar sua VPS por SSH pelo terminal (Linux, Windows e Mac)
- Como instalar o Docker na VPS via SSH
- Como ver e gerenciar serviços na VPS via SSH

---
Fonte: https://help.staycloud.com/artigos/como-liberar-portas-com-o-firewall-ufw-na-vps-via-ssh
