SSD Nodes Learn Hosting plans →
Guias Matt ConnorPor Matt Connor · Atualizado 2026-08-27

Como configurar o firewall UFW em uma VPS

Configure o UFW com política padrão de negação, libere só as portas necessárias e evite o erro mais comum: perder o acesso SSH ao ativar a firewall.

O que é o UFW e por que deve utilizá-lo

UFW significa Uncomplicated Firewall, e o nome é adequado. É uma interface simples para a firewall que o kernel Linux já inclui. Assim, em vez de escrever regras diretamente, introduz comandos curtos como ufw allow 22/tcp. Numa VPS nova, todos os serviços que estão a escutar ficam acessíveis a partir da Internet por predefinição. Uma firewall inverte esse comportamento: bloqueia tudo e permite apenas as poucas portas que realmente utiliza. Essa alteração isolada reduz a maior parte da exposição com cerca de quatro comandos. UFW é a ferramenta do Ubuntu e do Debian. Se a sua VPS executar Rocky ou AlmaLinux, utilize firewalld, que organiza as regras em zonas.

Antes de alterar a configuração, saiba o que está a escutar, porque esses são os serviços cujo acesso a firewall irá determinar. Ver o que está a escutar com ss -tlnp é o primeiro passo correto.

A regra que impede que perca o acesso ao servidor

Este é o erro que afasta muitas pessoas das firewalls. Ativa o UFW com uma política de negação por predefinição, mas nunca permite o SSH. Assim que a firewall é ativada, a sua própria ligação é interrompida e não consegue voltar a entrar. Evite este problema permitindo sempre o SSH antes de ativar o UFW. Esse é o procedimento completo, e os passos abaixo seguem a ordem segura.

Se isso acontecer, não fica sem saída: a consola web do seu provedor, através de VNC ou da consola série, não usa SSH. Pode iniciar sessão aí e executar ufw disable ou adicionar a regra em falta. Um bloqueio causado pela firewall também tem um sintoma característico: um pacote descartado deixa o cliente SSH pendurado até atingir o tempo limite, enquanto um daemon SSH parado recusa a ligação imediatamente. Essa é a diferença entre ligação recusada e ligação com tempo esgotado.

Passo 1: Defina as políticas padrão

Comece por configurar o UFW para negar todas as ligações recebidas e permitir todas as ligações de saída:

sudo ufw default deny incoming
sudo ufw default allow outgoing

deny incoming é a parte importante. Isto significa que qualquer porta sem uma regra explícita de permissão fica fechada para o exterior, mesmo que exista um serviço a escutar nela. allow outgoing permite que o servidor aceda normalmente à Internet para atualizações e outras operações semelhantes. Estes dois comandos alteram apenas a política. Nada é aplicado até ativar o UFW no passo 3.

Passo 2: Permita apenas as portas de que realmente precisa

Antes de ativar, abra o SSH para manter a ligação:

sudo ufw allow 22/tcp

O UFW também pode limitar a frequência de ligações SSH: sudo ufw limit 22/tcp permite a porta, mas bloqueia qualquer endereço que faça seis ou mais ligações em trinta segundos. Isto reduz a eficácia de scripts de brute force sem software adicional.

Se executar um servidor web, permita também HTTP e HTTPS:

sudo ufw allow 80/tcp
sudo ufw allow 443/tcp

Permita apenas os serviços que disponibiliza publicamente. Uma base de dados como o Postgres na porta 5432 quase nunca deve ter uma regra allow. Faça bind a 127.0.0.1 para que fique acessível apenas na máquina. Cada porta que abre aumenta o que tem de proteger, por isso mantenha a lista curta.

Também pode preparar aqui a sequência completa de comandos ufw para o seu servidor e executá-los pela ordem indicada:

ToolUFW rule generator

Etapa 3: Ative e confirme que está ativo

sudo ufw enable

O comando avisa que pode interromper ligações SSH existentes. Como permitiu 22/tcp na etapa 2, a sua sessão continua ativa. Confirme o resultado:

sudo ufw status verbose
Status: active
Default: deny (incoming), allow (outgoing)

To                         Action      From
--                         ------      ----
22/tcp                     ALLOW IN    Anywhere
22/tcp (v6)                ALLOW IN    Anywhere (v6)
80/tcp                     ALLOW IN    Anywhere

Verifique aqui dois pontos. Status: active significa que a firewall está em execução. Além disso, cada regra aparece duas vezes: uma vez de forma simples e outra com (v6). Isto indica que o UFW também está a abranger IPv6, além de IPv4. Se as linhas (v6) estiverem ausentes, o tráfego IPv6 não está a ser gerido pela firewall. Esse é um problema específico, abordado em o artigo sobre firewall IPv6.

Gerir regras posteriormente

Para ver as regras com números e poder remover uma:

sudo ufw status numbered
sudo ufw delete 3

Para permitir uma porta apenas a partir de um endereço, o que é uma boa forma de expor um serviço de administração apenas ao seu próprio IP:

sudo ufw allow from 10.0.0.24 to any port 5432 proto tcp

Essa abordagem deixa de funcionar quando o seu próprio endereço muda ou quando várias máquinas precisam de acesso. A correção habitual é deixar de abrir a porta publicamente e aceder ao serviço através de uma rede privada. É esse o objetivo de anunciar a sub-rede privada do servidor à sua tailnet.

Uma firewall é uma camada de segurança. Controla o que pode chegar a uma porta, mas não abranda alguém que esteja a fazer pedidos repetidos a uma porta que deixou aberta, como SSH. Para isso, adicione Fail2ban à frente do SSH para banir infratores reincidentes. A defesa em profundidade significa que cada camada cobre aquilo que as outras não conseguem cobrir.

Uma firewall só faz sentido depois de saber o que são portas e como os serviços escutam, e configurá-la é uma etapa dos primeiros 10 minutos num novo VPS.

FAQ

Ativar o UFW vai desligar a minha sessão SSH?

Não, se permitir SSH primeiro. Execute sudo ufw allow 22/tcp antes de sudo ufw enable. A ligação mantém-se porque a firewall passa a permitir a porta 22. O perigo é ativar uma firewall com política padrão de negar sem uma regra que permita SSH. Isso bloqueia o acesso. Se isso acontecer, inicie sessão através da consola VNC ou série do seu fornecedor e execute ufw disable.

Que portas devo abrir num VPS?

Apenas as portas dos serviços que disponibiliza publicamente. SSH (22/tcp), para administrar o servidor, e HTTP e HTTPS (80/tcp, 443/tcp), se alojar um site. Mantenha todas as outras portas negadas. Os serviços internos, como bases de dados, devem associar-se a 127.0.0.1 e não devem ter qualquer regra de firewall. Assim, nunca ficam acessíveis a partir da rede.

O UFW suporta IPv6?

Nas versões modernas do Ubuntu, sim. IPV6=yes está definido em /etc/default/ufw, pelo que cada regra se aplica às duas pilhas. ufw status apresenta as regras IPv6 com o sufixo (v6). Os casos em que isto ainda pode falhar são explicados em a armadilha da firewall IPv6.

Como removo uma regra do UFW?

Execute sudo ufw status numbered para listar as regras com números de índice. Em seguida, execute sudo ufw delete N, substituindo N pelo número da regra que pretende remover. Também pode apagar uma regra pela especificação, por exemplo sudo ufw delete allow 80/tcp.

Como permito uma porta apenas a partir de um endereço IP?

Use uma regra from em vez de uma regra allow simples. Para permitir que apenas o endereço do seu escritório aceda ao PostgreSQL, execute sudo ufw allow from 10.0.0.10 to any port 5432 proto tcp. Com uma política padrão de negar, a porta fica fechada para todos até que uma regra a abra. Por isso, esta regra from é a única forma de acesso: toda a Internet permanece bloqueada e apenas o endereço indicado pode passar. Não adicione também uma regra allow 5432/tcp simples, pois isso abriria a porta a todos. Esta é a forma mais segura de expor uma base de dados ou um painel de administração. Confirme com sudo ufw status verbose, que apresenta o endereço de origem junto à porta.