Esse tutorial irá te ajudar a transformar sua VPS em um "alvo móvel" difícil de acertar é o primeiro passo para qualquer sysadmin responsável.
Como você quer restringir o acesso apenas via VPN, o script abaixo foca em configurar o firewall (UFW) para bloquear o tráfego SSH vindo da internet pública, permitindo apenas a conexão através do túnel da VPN (geralmente usando o IP da interface da VPN ou o IP estático do seu servidor VPN).
O que este script faz:
Atualiza o sistema: Garante que os patches de segurança estejam em dia.
Endurece o SSH: Desabilita login por senha e login do root.
Configura o UFW: Bloqueia tudo, exceto o tráfego na porta da VPN e o SSH vindo da rede interna da VPN.
Fail2Ban: Instala proteção contra ataques de força bruta.
Shell Script de Segurança (Ubuntu)
#!/bin/bash
# --- CONFIGURAÇÕES ---
# Mude para a sub-rede da sua VPN (ex: 10.8.0.0/24 para OpenVPN ou 192.168.2.0/24 para Wireguard)
VPN_SUBNET="10.8.0.0/24"
SSH_PORT="22"
echo "Iniciando o endurecimento da segurança da VPS..."
# 1. Atualização do Sistema
apt update && apt upgrade -y
# 2. Instalação de Ferramentas Essenciais
apt install -y ufw fail2ban
# 3. Configuração do SSH
# ATENÇÃO: Certifique-se de que sua chave pública já está em ~/.ssh/authorized_keys
sed -i 's/#PasswordAuthentication yes/PasswordAuthentication no/' /etc/ssh/sshd_config
sed -i 's/PasswordAuthentication yes/PasswordAuthentication no/' /etc/ssh/sshd_config
sed -i 's/#PermitRootLogin prohibit-password/PermitRootLogin no/' /etc/ssh/sshd_config
sed -i 's/PermitRootLogin yes/PermitRootLogin no/' /etc/ssh/sshd_config
sed -i 's/#PubkeyAuthentication yes/PubkeyAuthentication yes/' /etc/ssh/sshd_config
systemctl restart ssh
# 4. Configuração do Firewall (UFW)
# Reseta as regras
ufw --force reset
ufw default deny incoming
ufw default allow outgoing
# PERMITIR SSH APENAS VIA VPN
ufw allow from $VPN_SUBNET to any port $SSH_PORT proto tcp
# Se você estiver usando Wireguard, precisa abrir a porta do túnel (ex: 51820 UDP)
# ufw allow 51820/udp
echo "y" | ufw enable
# 5. Configuração Básica do Fail2Ban
systemctl enable fail2ban
systemctl start fail2ban
echo "Configuração concluída!"
echo "IMPORTANTE: Só tente deslogar após testar a conexão em uma nova aba."
Avisos Críticos (Não pule!)
A Chave Pública: Antes de rodar o script, você precisa ter copiado sua chave SSH para o servidor (
ssh-copy-id usuario@ip-da-vps). Se você rodar o script e desabilitar a senha sem ter a chave lá, você ficará trancado para fora.O Dilema da VPN: Para que a regra
ufw allow from $VPN_SUBNETfuncione, o seu servidor VPS precisa ser o cliente ou o servidor da VPN. Se você ainda não instalou a VPN, o acesso SSH será bloqueado assim que o firewall subir.Porta SSH: Se você mudou a porta padrão do SSH, altere a variável
SSH_PORTno script.
Estrutura de Acesso Seguro
Nesta arquitetura, o firewall atua como um porteiro que ignora qualquer batida na porta 22, a menos que o visitante venha de dentro do "túnel" seguro da VPN.
Com certeza. Vamos elevar o nível de segurança da sua VPS. Mudar a porta padrão do SSH ajuda a evitar 99% dos ataques automatizados (bots) que ficam varrendo a porta 22, e o WireGuard é atualmente a VPN mais rápida e segura para Linux.
Aqui está o passo a passo para configurar ambos:
1. Mudando a porta do SSH para 22222
Antes de ativar o firewall, precisamos garantir que o serviço SSH saiba onde ouvir.
Abra o arquivo de configuração:
sudo nano /etc/ssh/sshd_configProcure pela linha
#Port 22. Remova o#e mude paraPort 22222.Salve (Ctrl+O, Enter) e saia (Ctrl+X).
Não reinicie o serviço ainda! Primeiro, precisamos avisar o firewall (UFW), ou você perderá o acesso.
sudo ufw allow 22222/tcp
sudo systemctl restart ssh
2. Instalando e Configurando o WireGuard (VPN)
Usaremos um script de instalação automatizada que é o padrão da comunidade para evitar erros manuais de criptografia.
Passo A: Instalação
Execute o comando abaixo para baixar e rodar o instalador seguro:
wget https://git.io/wireguard -O wireguard-install.sh && bash wireguard-install.sh
O script fará algumas perguntas:
IPv4/IPv6: Pode manter o padrão detectado.
Porta UDP: O padrão é 51820. Lembre-se dela.
Client name: Escolha um nome (ex:
meu-pcoucelular).DNS: Recomendo Google (8.8.8.8) ou Cloudflare (1.1.1.1).
Passo B: Liberar a VPN no Firewall
O WireGuard usa o protocolo UDP. Você precisa liberar a porta dele no UFW:
sudo ufw allow 51820/udp
3. Ajustando o Script de Segurança (O "Grand Finale")
Agora que você tem a VPN rodando e o SSH na porta nova, vamos atualizar as regras do firewall para que o SSH só aceite conexões vindas de dentro da VPN.
O WireGuard geralmente usa a sub-rede 10.7.0.0/24. Vamos restringir o SSH:
# 1. Bloqueia o acesso SSH vindo de qualquer lugar da internet (porta 22222)
sudo ufw deny 22222/tcp
# 2. Permite o SSH apenas para quem estiver conectado na VPN
# (Substitua 10.7.0.0/24 se o seu WireGuard usar outra faixa)
sudo ufw allow from 10.7.0.0/24 to any port 22222 proto tcp
# 3. Garante que a porta da VPN continue aberta para o mundo
sudo ufw allow 51820/udp
# 4. Aplica as mudanças
sudo ufw reload
Como você se conecta agora?
No seu PC local: Instale o cliente WireGuard.
Importe o arquivo: O script de instalação criou um arquivo
.confna sua pasta/rootou/home. Baixe esse arquivo para o seu PC (via SCP ou apenas copiando o texto).Ligue a VPN: No cliente WireGuard, clique em "Ativar".
Acesse a VPS: Agora você usará o IP interno da VPN da VPS (geralmente
10.7.0.1):ssh usuario@10.7.0.1 -p 22222
Nota de Segurança: Se você tentar conectar pelo IP público da VPS sem a VPN ligada, a conexão será sumariamente descartada pelo firewall. É exatamente isso que queremos.
Com certeza. Vamos elevar o nível de segurança da sua VPS. Mudar a porta padrão do SSH ajuda a evitar 99% dos ataques automatizados (bots) que ficam varrendo a porta 22, e o WireGuard é atualmente a VPN mais rápida e segura para Linux.
Aqui está o passo a passo para configurar ambos:
1. Mudando a porta do SSH para 22222
Antes de ativar o firewall, precisamos garantir que o serviço SSH saiba onde ouvir.
Abra o arquivo de configuração:
sudo nano /etc/ssh/sshd_configProcure pela linha
#Port 22. Remova o#e mude paraPort 22222.Salve (Ctrl+O, Enter) e saia (Ctrl+X).
Não reinicie o serviço ainda! Primeiro, precisamos avisar o firewall (UFW), ou você perderá o acesso.
2. Instalando e Configurando o WireGuard (VPN)
Usaremos um script de instalação automatizada que é o padrão da comunidade para evitar erros manuais de criptografia.
Passo A: Instalação
Execute o comando abaixo para baixar e rodar o instalador seguro:
O script fará algumas perguntas:
IPv4/IPv6: Pode manter o padrão detectado.
Porta UDP: O padrão é 51820. Lembre-se dela.
Client name: Escolha um nome (ex:
meu-pcoucelular).DNS: Recomendo Google (8.8.8.8) ou Cloudflare (1.1.1.1).
Passo B: Liberar a VPN no Firewall
O WireGuard usa o protocolo UDP. Você precisa liberar a porta dele no UFW:
3. Ajustando o Script de Segurança (O "Grand Finale")
Agora que você tem a VPN rodando e o SSH na porta nova, vamos atualizar as regras do firewall para que o SSH só aceite conexões vindas de dentro da VPN.
O WireGuard geralmente usa a sub-rede 10.7.0.0/24. Vamos restringir o SSH:
Como você se conecta agora?
No seu PC local: Instale o cliente WireGuard.
Importe o arquivo: O script de instalação criou um arquivo
.confna sua pasta/rootou/home. Baixe esse arquivo para o seu PC (via SCP ou apenas copiando o texto).Ligue a VPN: No cliente WireGuard, clique em "Ativar".
Acesse a VPS: Agora você usará o IP interno da VPN da VPS (geralmente
10.7.0.1):ssh usuario@10.7.0.1 -p 22222
Nota de Segurança: Se você tentar conectar pelo IP público da VPS sem a VPN ligada, a conexão será sumariamente descartada pelo firewall. É exatamente isso que queremos.
Comentários