como configurar ufw no vps sem perder ssh
Aprenda a configurar o UFW no seu VPS com política default-deny. Evite o lockout de SSH liberando a porta 22 antes de ativar o firewall com ufw enable.
O que é o UFW e por que você precisa dele
UFW significa Uncomplicated Firewall, e o nome é honesto. Ele é uma interface amigável para o firewall que o kernel Linux já possui. Em vez de escrever regras puras, você digita comandos curtos como ufw allow 22/tcp. Em um VPS recém-instalado, todo serviço em modo listening é acessível pela internet por padrão. Um firewall inverte essa lógica: você nega tudo e permite apenas as poucas portas que realmente utiliza. Essa mudança remove a maior parte da sua exposição com cerca de quatro comandos.
Antes de configurá-lo, saiba o que está em listening, pois o firewall decidirá o destino desses serviços. Lendo o que está em listening com ss -tlnp é o primeiro passo correto.
A única regra para evitar o lockout
Este é o erro que assusta quem trabalha com firewalls. Você habilita o UFW com uma política de negação padrão (default-deny), mas não libera o SSH. Assim que o firewall é ativado, sua conexão é interrompida e você perde o acesso remoto. Para evitar isso, sempre libere o SSH antes de habilitar o UFW. Este é o procedimento correto, e os passos abaixo seguem a ordem segura.
Se isso acontecer, você não ficará travado: o console web do seu provedor, via VNC ou serial, não depende do SSH. Você pode fazer login por lá e executar ufw disable ou adicionar a regra que falta.
Passo 1: Definir as políticas padrão
Comece configurando o UFW para negar todas as conexões de entrada e permitir todas as conexões de saída:
sudo ufw default deny incoming
sudo ufw default allow outgoingdeny incoming é a parte importante. Isso significa que qualquer porta sem uma regra de permissão explícita estará fechada para o exterior, mesmo que um serviço esteja rodando nela. allow outgoing permite que seu servidor acesse a internet normalmente para atualizações e tarefas similares. Estes dois comandos alteram apenas a política; nada é aplicado até que você habilite o UFW no passo 3.
Passo 2: Liberar apenas as portas necessárias
Antes de ativar, libere o SSH para não perder a conexão:
sudo ufw allow 22/tcpO UFW também pode aplicar rate-limit no SSH: sudo ufw limit 22/tcp libera a porta, mas bloqueia qualquer endereço que realize seis ou mais conexões em trinta segundos. Isso mitiga ataques de brute-force sem necessidade de software adicional.
Se você utiliza um servidor web, libere HTTP e HTTPS também:
sudo ufw allow 80/tcp
sudo ufw allow 443/tcpLibere apenas o que for necessário para o público. Um banco de dados como o Postgres na porta 5432 quase nunca deve ter uma regra de liberação. Em vez disso, faça o bind para 127.0.0.1 para que ele seja acessível apenas localmente. Cada porta aberta é uma superfície de ataque; mantenha a lista reduzida.
Você também pode gerar a sequência completa de comandos ufw para o seu servidor aqui e executá-los em ordem:
Passo 3: Ativar e confirmar se está ativo
sudo ufw enableO comando avisa que pode interromper conexões SSH existentes. Como você permitiu 22/tcp no passo 2, sua sessão permanece ativa. Confirme o resultado:
sudo ufw status verboseStatus: 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 AnywhereObserve dois pontos aqui. Status: active indica que o firewall está em execução. Cada regra aparece duas vezes: uma de forma simples e outra com (v6), o que indica que o UFW está cobrindo IPv6 além de IPv4. Se as linhas (v6) estiverem ausentes, seu IPv6 não está sendo gerenciado, o que é um problema detalhado em post sobre firewall IPv6.
Gerenciando regras posteriormente
Para visualizar as regras com números para remover uma delas:
sudo ufw status numbered
sudo ufw delete 3Para permitir uma porta apenas de um endereço específico, o que é uma boa prática para 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 tcpO firewall é apenas uma camada. Ele controla o que pode alcançar uma porta, mas não impede ataques de força bruta em portas abertas, como o SSH. Para isso, adicione Fail2ban na frente do SSH para banir infratores recorrentes. Defesa em profundidade significa que cada camada cobre o que as outras não conseguem.
Um firewall só faz sentido quando você entende o que são portas e como serviços escutam, e configurá-lo é um passo nos primeiros 10 minutos em um novo VPS.
FAQ
Ativar o UFW vai desconectar minha sessão SSH?
Não, se você permitir o SSH primeiro. Execute sudo ufw allow 22/tcp antes de sudo ufw enable para manter a conexão, pois o firewall passará a permitir a porta 22. O risco ocorre ao ativar um firewall com política de negação padrão sem uma regra de permissão para o SSH, o que causará o bloqueio do acesso. Se isso ocorrer, faça login via VNC ou console serial do seu provedor e execute ufw disable.
Quais portas devo abrir em um VPS?
Apenas as que você disponibiliza ao público. SSH (22/tcp) para gerenciar o servidor, e HTTP e HTTPS (80/tcp, 443/tcp) se você hospedar um site. Mantenha todo o restante bloqueado. Serviços internos, como bancos de dados, devem ser configurados para bind em 127.0.0.1 e não devem ter regras de firewall, para que nunca sejam alcançáveis pela rede.
O UFW suporta IPv6?
No Ubuntu moderno, sim: IPV6=yes está definido em /etc/default/ufw, então cada regra se aplica a ambos os protocolos e ufw status exibe as regras IPv6 com o sufixo (v6). Os problemas que ainda podem ocorrer estão detalhados em a armadilha do firewall IPv6.
Como remover uma regra do UFW?
Execute sudo ufw status numbered para listar as regras com seus respectivos índices e depois sudo ufw delete N, onde N é o número da regra que deseja remover. Você também pode deletar por especificação, por exemplo, sudo ufw delete allow 80/tcp.
Como permitir uma porta apenas para um endereço IP específico?
Use uma regra de from em vez de uma regra allow comum. Para permitir que apenas o endereço do seu escritório acesse o PostgreSQL, execute sudo ufw allow from 10.0.0.10 to any port 5432 proto tcp. Com uma política de negação padrão, a porta permanece fechada para todos até que uma regra a abra; portanto, esta regra from é a única via de acesso: toda a internet permanece bloqueada e apenas o endereço especificado tem acesso. Não adicione também uma regra allow 5432/tcp simples, pois isso abriria a porta para todos. Este é o método mais seguro para expor um banco de dados ou um painel de administração. Confirme a configuração com sudo ufw status verbose, que exibe o endereço de origem ao lado da porta.