A segurança de um servidor Linux é a primeira linha de defesa contra ataques cibernéticos, invasões não autorizadas e interrupções de serviço. Para administradores de sistemas, desenvolvedores e profissionais de TI que gerenciam VPSs, entender e implementar firewalls é uma competência essencial. O UFW (Uncomplicated Firewall) surge como a ferramenta padrão para gerenciar regras de firewall em distribuições baseadas em Debian, como Ubuntu, oferecendo uma interface simplificada sobre o complexo sistema Netfilter/iptables.
Este tutorial técnico guiará você pelo processo completo de configuração do UFW, desde a instalação até a implementação de estratégias avançadas de hardening linux. Abordaremos não apenas as regras básicas de entrada e saída, mas também como integrar outras ferramentas de segurança como Fail2ban e CrowdSec, além de discutir técnicas para mitigação de ataques e proteção de chaves SSH.
Instalação e Verificação do Status Inicial
Antes de começar a configurar regras, é fundamental garantir que o UFW esteja instalado e verificar seu estado atual. Em muitas distribuições modernas, o UFW vem pré-instalado, mas pode estar desativado por padrão para evitar bloquear sua conexão durante a configuração inicial.
Para instalar o UFW em sistemas Debian ou Ubuntu, utilize o gerenciador de pacotes apt:
sudo apt update
sudo apt install ufw -y
Após a instalação, verifique o status do firewall. O comando abaixo mostrará se o serviço está ativo, inativo ou carregando regras pendentes:
sudo ufw status verbose
Se o retorno for inactive, o firewall não está aplicando nenhuma regra de filtragem no momento. Isso significa que todas as portas estão abertas para tráfego externo, o que representa um risco significativo de segurança. Antes de ativar o UFW, é crucial definir uma regra de permissão para a sua conexão SSH atual, caso contrário, ao habilitar o firewall, você será desconectado do servidor e precisará acessar via console de recuperação.
Configuração das Regras Básicas de Acesso
O princípio mais importante ao configurar um firewall é a segurança por padrão. Devemos começar negando todo o tráfego de entrada e permitir apenas o necessário. Isso cria uma base segura onde apenas portas explícitas serão acessíveis.
1. Definir Políticas Padrão
Defina a política padrão para tráfego de entrada como deny (negar) e para saída como allow (permitir). Permitir o tráfego de saída é geralmente seguro, pois permite que seu servidor responda a solicitações legítimas e realize atualizações.
sudo ufw default deny incoming
sudo ufw default allow outgoing
2. Permitir Acesso SSH
O acesso SSH (porta 22) é vital para a administração remota. Você deve permitir conexões nesta porta antes de ativar o firewall. Se você estiver usando uma porta não padrão para SSH, substitua 22 pelo número da sua porta.
sudo ufw allow ssh
# Ou, especificando a porta:
sudo ufw allow 22/tcp
Dica de Segurança: Para aumentar a segurança do acesso remoto, considere usar ssh keys em vez de senhas. Além disso, para ambientes de alta sensibilidade, técnicas como port knocking podem ser utilizadas, onde a porta SSH permanece fechada até que uma sequência específica de pacotes seja enviada ao servidor, tornando-a invisível para scanners automáticos.
3. Permitir Tráfego Web (HTTP e HTTPS)
Se seu VPS hospeda sites ou aplicações web, você precisará abrir as portas 80 (HTTP) e 443 (HTTPS). O UFW permite o uso de nomes de serviço para facilitar a leitura.
sudo ufw allow http
sudo ufw allow https
Alternativamente, você pode especificar as portas diretamente:
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
Habilitando o Firewall e Testando a Conexão
Agora que as regras essenciais estão definidas, você pode ativar o UFW. Este é o momento crítico em que as regras começam a ser aplicadas.
sudo ufw enable
O sistema pedirá confirmação, alertando que isso pode interferir nas conexões SSH existentes. Digite y e pressione Enter para confirmar.
Imediatamente após habilitar o firewall, tente abrir uma nova conexão SSH em outra janela de terminal ou outro computador. Se a conexão for estabelecida com sucesso, suas regras estão funcionando corretamente. Se falhar, verifique as regras permitidas e considere desativar temporariamente o UFW para corrigir o erro:
sudo ufw disable
Se tudo estiver funcionando, reative o firewall e verifique o status final:
sudo ufw enable
sudo ufw status verbose
Você deve ver Status: active e uma lista de regras permitindo SSH, HTTP e HTTPS.
Gestão Avançada de Regras e Serviços Específicos
Além dos serviços básicos, muitas aplicações requerem portas específicas. O UFW suporta tanto o protocolo TCP quanto UDP. É importante especificar o protocolo correto para evitar bloqueios desnecessários ou brechas de segurança.
Permitindo Portas Específicas
Para permitir uma porta específica, use a sintaxe allow PORT/PROTO. Por exemplo, se você estiver rodando um servidor de banco de dados interno ou uma aplicação customizada na porta 8080:
sudo ufw allow 8080/tcp
Bloqueio Seletivo de IPs e Sub-redes
O UFW permite bloquear endereços IP específicos, o que é útil para evitar ataques persistentes ou tráfego malicioso conhecido. Para bloquear um único IP:
sudo ufw deny from 192.168.1.100
Para bloquear toda uma sub-rede (por exemplo, uma rede conhecida por ser fonte de ataques):
sudo ufw deny from 10.0.0.0/24
Para permitir o acesso apenas de um IP específico a uma porta restrita (como painel de administração), use:
sudo ufw allow from 203.0.113.5 to any port 8443
Integração com Fail2ban e CrowdSec para Mitigação DDoS
O UFW é excelente para filtrar pacotes, mas não possui inteligência nativa para detectar padrões de ataque em tempo real, como tentativas repetidas de login falho. Para isso, a integração com ferramentas de segurança vps como Fail2ban e CrowdSec é indispensável.
1. Fail2ban com UFW
O Fail2ban monitora logs do sistema (como /var/log/auth.log) e, ao detectar múltiplas falhas de autenticação, adiciona temporariamente o IP atacante às regras de bloqueio do firewall. O UFW vem com um arquivo de configuração padrão para o Fail2ban.
Instale o Fail2ban:
sudo apt install fail2ban
Copie o arquivo de configuração padrão para criar sua própria configuração, evitando sobrescritas durante atualizações:
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
No arquivo jail.local, certifique-se de que a seção [sshd] esteja habilitada e configurada para usar o UFW:
[sshd]
enabled = true
port = ssh
filter = sshd
logpath = /var/log/auth.log
backend = systemd
banaction = ufw
Reinicie o serviço para aplicar as mudanças:
sudo systemctl restart fail2ban
Agora, qualquer IP que tentar fazer login SSH repetidamente será bloqueado pelo UFW automaticamente.
2. CrowdSec como Alternativa Moderna
O CrowdSec é uma solução de segurança colaborativa e moderna que complementa ou substitui o Fail2ban. Ele usa uma lista global de IPs maliciosos (banco de dados compartilhado pela comunidade) em tempo real.
Após instalar o CrowdSec, instale o módulo crowdsec-firewall-bouncer, que permite ao CrowdSec interagir diretamente com o UFW:
sudo apt install crowdsec-firewall-bouncer-ufw
Isso cria um loop de segurança onde sua VPS não apenas bloqueia ameaças locais, mas também se beneficia da inteligência coletiva global, melhorando significativamente a mitigação ddos e ataques de força bruta.
Melhores Práticas de Manutenção e Hardening Contínuo
A configuração do firewall não é um evento único, mas um processo contínuo. Manter o sistema atualizado e revisar as regras periodicamente é essencial para a segurança vps.
1. Revisão Periódica de Regras
Use o comando sudo ufw status numbered para visualizar suas regras com números. Isso facilita a remoção ou inserção de regras em posições específicas se a ordem de processamento for importante.
sudo ufw status numbered
Para remover uma regra, use o número exibido:
sudo ufw delete 3
2. Limitação de Taxa (Rate Limiting)
Para proteger contra ataques de negação de serviço (DoS) simples ou escaneamentos agressivos, você pode usar a opção limit. Isso permite até 6 conexões em 30 segundos antes de bloquear o IP.
sudo ufw limit ssh
Isso é particularmente útil para portas acessíveis publicamente que podem ser alvo de scanners automatizados.
3. Logs e Monitoramento
O UFW registra atividades bloqueadas e permitidas (dependendo da configuração). Verifique os logs regularmente em /var/log/ufw.log. Ferramentas como o Fail2ban ou o próprio CrowdSec ajudam a automatizar essa análise, mas uma olhada manual mensal pode revelar padrões de ataque incomuns.
4. Backup de Configuração
Mantenha um backup das suas regras atuais antes de fazer grandes alterações. Isso permite uma recuperação rápida em caso de erro.
sudo ufw status verbose > ~/ufw-backup.txt
Conclusão e Próximos Passos
A configuração do UFW é um pilar fundamental no hardening linux. Ao seguir estes passos, você estabeleceu uma base sólida de segurança, bloqueando portas desnecessárias e permitindo apenas o tráfego legítimo. A integração com Fail2ban ou CrowdSec eleva essa proteção a um nível proativo, detectando e neutralizando ameaças em tempo real.
Lembre-se: a segurança é uma jornada, não um destino. Mantenha seu sistema operacional atualizado, utilize ssh keys para acesso administrativo, revise suas regras regularmente e considere implementar técnicas avançadas como port knocking para serviços críticos. Uma VPS bem configurada não apenas protege seus dados, mas também garante a disponibilidade e a confiança dos seus usuários finais.
Para dúvidas específicas sobre configurações de rede ou problemas de conectividade após aplicar o firewall, consulte a documentação oficial do UFW e os logs do sistema. Comece com as políticas restritivas e vá liberando acesso conforme a necessidade real da sua aplicação, sempre priorizando o princípio do menor privilégio.