Primeira hora com seu VPS: guia completo de bare metal a seguro e pronto pra usar (deixando seu OpenClaw mais seguro)
Um VPS recém-comprado é como uma porta destrancada, com script kiddies do mundo inteiro batendo nela. Este artigo te ajuda a colocar uma boa fechadura. Pra deixar seu openclaw (lagostim) quieto no canto, sem correr pra lá e pra cá.
0. Antes de começar
Você acabou de comprar um VPS, pegou o IP e a senha de root todo animado, e aí?
O que muita gente faz é: sair instalando software e subindo o projeto na hora.
Esse é um hábito perigoso.
Seu VPS tem um IP público, o que significa que qualquer pessoa no mundo pode tentar se conectar a ele. E, na configuração padrão:
- A porta exposta é a 22
- O usuário é o onipresente root
- Só te resta uma senha te protegendo
Todo dia rodam milhares de scripts automatizados escaneando faixas de IP, tentando força bruta com senhas comuns. Desde o segundo em que seu servidor fica no ar, ele já está sob ataque.
Por isso, a primeira coisa a fazer ao pegar seu VPS não é instalar software, e sim fazer a configuração de segurança inicial.
1. O objetivo
O objetivo deste artigo é:
- ✅ Garanta acesso remoto seguro: login por chave SSH + porta não padrão
- ✅ Crie um usuário comum: evite usar o root diretamente
- ✅ Configure o firewall: abra apenas as portas necessárias
- ✅ Ative a aceleração de rede: o BBR vai dar um gás na sua conexão
- ✅ Evite força bruta: o fail2ban bloqueia IPs maliciosos automaticamente
Com tudo isso no lugar, seu VPS vai ter uma base sólida pra você deployar qualquer serviço com tranquilidade.
2. Planejando
Por que fazer essas configurações?
Um VPS recém-comprado é como um apartamento recém-entregue, ainda na obra grossa:
| Situação padrão | Risco | Nossa solução |
|---|---|---|
| Login direto com root | Privilégios altos, erro de operação tem consequências graves | Criar usuário comum + sudo |
| Login por senha | Pode ser alvo de força bruta | Login por chave SSH |
| Porta 22 padrão | Escaneado por bots | Mudar para porta não padrão |
| Firewall desativado | Todas as portas expostas | UFW libera só o necessário |
| Rede nativa | Perda de pacotes alta, latência alta | Algoritmo de controle BBR |
Fluxo geral

Vamos seguir essa ordem, e eu explico o porquê de cada passo.
3. Passos de operação
3.1 Primeiro login e atualização do sistema
Pegar o IP do servidor
Depois de comprar o VPS, o provedor vai te dar:
- Endereço IP: algo como
192.168.1.100 - Porta: geralmente é
22(alguns provedores mudam para outra porta) - Nome de usuário: normalmente
root - Senha: uma string de caracteres gerada aleatoriamente

Conexão via SSH
Usuários de Mac / Linux: abram o terminal e digitem direto:
1 | ssh root@你的服务器IP |
Usuários de Windows:
- O Windows 10/11 já vem com OpenSSH nativo, então dá pra usar o comando acima direto no PowerShell ou no CMD
- Ou então usem ferramentas como Termius, MobaXterm e afins
Na primeira conexão, vai aparecer um aviso de confirmação de fingerprint:
1 | The authenticity of host '192.168.1.100 (192.168.1.100)' can't be established. |
É basicamente o sistema perguntando: “Não conheço essa máquina, tem certeza que quer conectar?”
Digitem yes e apertem Enter. Depois, digitem a senha (atenção: nada vai aparecer na tela enquanto você digita, isso é normal e é uma medida de segurança), e apertem Enter de novo.

Se apareceu um aviso parecido com esse, é porque o login deu certo:
1 | Welcome to Ubuntu 24.04 LTS (GNU/Linux 6.x.x-x-generic x86_64) |
💡 Por que confirmar a fingerprint?
Isso serve para evitar o temido “ataque man-in-the-middle”. Na primeira conexão, você anota a fingerprint do servidor. Se ela mudar nas próximas vezes que você conectar, é um sinal de que alguém pode estar se passando pelo seu servidor.

Conhecendo seu servidor
Depois de logar, vamos dar uma olhada nas informações básicas dessa máquina:
1 | # 查看系统版本 |

Guarda essas informações, vão ser úteis quando você precisar debugar algum problema no futuro.
Atualização do sistema
Sabendo como está o servidor, a primeira coisa séria a fazer é atualizar o sistema. A imagem do sistema de um servidor novo pode ter vários meses, e nesse meio tempo provavelmente já saíram vários patches de segurança:
1 | # 更新软件包列表 + 升级所有软件 + 清理 |
Explicando os parâmetros:
apt update: atualiza o índice de pacotesapt full-upgrade: faz o upgrade de todos os softwares, incluindo o kernel-y: confirma automaticamente, sem precisar digitar “yes” na mãoapt autoremove: remove dependências que não são mais necessáriasapt autoclean: limpa o cache dos pacotes baixados

⏱️ Esse passo pode levar alguns minutos, dependendo do volume de atualizações. Se pedir alguma confirmação no meio do caminho, basicamente é só seguir o fluxo dele.
Checando se precisa reiniciar
Depois de atualizar o kernel, geralmente é preciso reiniciar para a atualização fazer efeito:
1 | # 检查是否需要重启 |

Se ele avisar que precisa reiniciar:
1 | reboot |
Depois de reiniciar, você vai precisar conectar via SSH de novo.
Instalando ferramentas básicas
1 | apt install -y sudo curl wget git vim htop tree unzip net-tools ufw fail2ban neofetch |
Para que servem essas ferramentas:
| Ferramenta | Uso | |
|---|---|---|
sudo |
Permite usuários comuns rodar comandos de admin | |
curl / wget |
Baixar arquivos | |
git |
Controle de versão | |
vim |
Editor de texto | |
htop |
Monitor de processos mais bonito | |
tree |
Mostra a estrutura de diretórios em árvore | |
net-tools |
Ferramentas de rede (ifconfig, netstat, etc.) | |
ufw |
Firewall simples e fácil de usar | |
fail2ban |
Proteção contra força bruta | |
neofetch |
Mostra informações do sistema de forma bonita | |
![]() |
3.2 Criar um usuário não-root
Por que não usar o root direto?
O usuário root tem poder demais. Num descuido simples com o rm -rf / e já era, perdeu tudo. Para o dia a dia, o ideal é usar um usuário comum e só apelar para o sudo quando precisar de privilégios de administrador.
O lobster (openclaw) é uma verdadeira fera, imagine dar logo o root pra ele, hein?
Criando o usuário
1 | # 创建用户(把 ittinker 换成你想要的用户名) |
O sistema vai pedir para você definir uma senha e preencher alguns dados:
1 | New password: # 输入密码(不会显示) |

Concedendo privilégios sudo
1 | # 把用户加入 sudo 组, ittinker 换成你自己上面创建的那个用户 |
Testando para ver se funcionou:
1 | # 切换到新用户 ittinker 换成你自己上面创建的那个用户 |
Se a saída for root, significa que o sudo foi configurado com sucesso.

💡 Dica de ouro
Digitando
exitvocê volta a ser o usuário root. Nas próximas etapas, vamos continuar usando o root para fazer as configurações e, quando tudo estiver pronto, aí sim voltamos para o usuário comum.
3.3 Configurar login por chave SSH
Autenticação por chave vs. por senha

A autenticação por chave é bem mais segura do que usar senha:
- Senhas podem sofrer ataque de força bruta, já as chaves são praticamente impossíveis de quebrar
- Você não precisa digitar a senha toda vez, muito mais prático
- Mesmo que sua senha vaze, sem a chave privada ninguém consegue logar
Passo 1: Gerar o par de chaves na sua máquina local
Execute no seu computador (não no servidor):
1 | # 生成 ED25519 密钥(推荐,更安全更快) |
Vai aparecer a seguinte mensagem:
1 | Enter file in which to save the key (/Users/你/.ssh/id_ed25519): |
Só dá Enter para usar o caminho padrão. Aqui usamos ./ittinker , ou seja, o arquivo vai ser salvo no diretório atual com o nome ittinker
1 | Enter passphrase (empty for no passphrase): |
Você pode definir uma senha para a chave (uma camada extra de proteção) ou simplesmente dar Enter para deixar em branco.

Quando terminar a geração, você vai ver dois arquivos no diretório ~/.ssh/ (abaixo estão os nomes padrão, que é o que acontece se você só der Enter):
id_ed25519: chave privada, jamais pode vazar!id_ed25519.pub: chave pública, essa vai para o servidor
💡 ed25519 vs RSA
ed25519é o algoritmo recomendado hoje em dia, mais seguro e com chaves mais curtas que o RSA tradicional. Se o seu sistema for muito antigo e não suportar, pode usarssh-keygen -t rsa -b 4096.
Um detalhe pequeno: a chave gerada pelo ed25519 é bem menorzinha, enquanto o arquivo do RSA é grande. Fui perguntar a IA pra entender, e o tamanho não importa, depende do algoritmo mesmo.
Passo 2: Enviar a chave pública para o servidor
Método A: Usar ssh-copy-id (recomendado)
1 | # 在你的电脑上执行 |
Depois de digitar a senha, a chave pública é copiada para o servidor automaticamente.

Método B: Copiar manualmente
Se o ssh-copy-id não estiver disponível, você pode fazer de forma manual:
1 | # 1. 在你的电脑上,查看公钥内容 |
Copie o conteúdo gerado (um texto longo que começa com ssh-ed25519).
1 | # 2. 在服务器上,为新用户创建 .ssh 目录, ittinker 换成你刚刚创建的用户名 |
⚠️ Permissões são muito importantes!
O SSH é bem chato com as permissões dos arquivos:
- Diretório
.ssh: 700 (só você consegue acessar)- Arquivo
authorized_keys: 600 (só você consegue ler e escrever)Se as permissões estiverem erradas, o SSH vai se recusar a usar a chave para o login.
Passo três: testar o login por chave
Abra uma nova janela do terminal (deixe a original aberta, caso algo dê errado você ainda tem como voltar atrás) e teste o login com a chave:
1 | ssh ittinker@你的服务器IP |
Se você conseguir logar sem precisar digitar a senha, a configuração da chave foi um sucesso! 🎉
(Se você definiu uma passphrase para a sua chave privada, ele vai pedir essa senha, isso é totalmente normal)

Aqui adicionamos o parâmetro -i porque essa chave não está no caminho padrão, mas sim no diretório atual. Se não especificar, o sistema vai usar a chave padrão.
3.4 Reforçando a segurança do SSH
Agora que o login por chave já está funcionando, vamos deixar o SSH mais blindado:
- Mudar a porta padrão (para evitar ser escaneado)
- Desativar o login por senha
- Bloquear o login direto do root
Editar o arquivo de configuração do SSH
1 | # 备份原配置 |

Encontre e ajuste as configurações a seguir (algumas podem estar comentadas, é só remover o # do início):
1 | # 修改端口(选一个 1024-65535 之间的数字) |

Salve e saia (ctrl + o).
No Nano, para salvar é ctrl + o; ele vai pedir o nome do arquivo, é só dar Enter. Para sair, ctrl + x.
Reiniciar o serviço SSH
1 | systemctl restart sshd.service |
⚠️ Aviso importante!
Não feche o terminal atual! Primeiro, teste em uma nova janela se a nova configuração permite o login normalmente:
1 ssh -p 22000 yourname@你的服务器IPSe conseguir logar, aí sim pode fechar a janela antiga. Se não conseguir, você ainda pode corrigir a configuração na janela antiga.
Se você comprou um servidor leve, muito provavelmente essa porta não dá pra alterar. Já as instâncias ECS tradicionais permitem a modificação, fica a dica.
3.5 Configurar o firewall UFW

O UFW (Uncomplicated Firewall) é a ferramenta de firewall padrão do Ubuntu: simples de configurar, mas muito poderosa.
Configuração básica
1 | # 设置默认策略:拒绝所有入站,允许所有出站 |
Ativar o firewall
1 | ufw enable |
Ele vai exibir o aviso:
1 | Command may disrupt existing ssh connections. Proceed with operation (y|n)? |
Digite y para confirmar.
Verificar o status
1 | ufw status verbose |

23022 foi um erro de digitação meu, é só seguir conforme a sua própria situação real.
A saída será algo como:
1 | Status: active |
Guia rápido de comandos
1 | # 查看状态 |
3.6 Ativando a aceleração BBR
O BBR (Bottleneck Bandwidth and Round-trip propagation time) é um algoritmo de controle de congestionamento TCP desenvolvido pelo Google, que pode melhorar significativamente o desempenho da rede.
Ativação com um clique
1 | # 添加 BBR 配置 |
Verificando se está ativado
1 | # 查看当前拥塞控制算法 |
A saída deve ser:
1 | net.ipv4.tcp_congestion_control = bbr |
1 | # 确认 BBR 模块已加载 |
A saída será algo como:
1 | tcp_bbr 20480 3 |
💡 O efeito do BBR
Ao ativar o BBR, especialmente em ambientes com rede instável ou alta latência, você vai notar claramente:
- Downloads mais rápidos
- Operações via SSH mais fluidas
- Carregamento mais rápido das páginas

3.7 Configurando o fail2ban para evitar força bruta
O fail2ban monitora os logs e, ao detectar IPs com várias tentativas de login falhadas, os bane automaticamente.
Configuração básica
1 | # 复制默认配置(不要直接修改 jail.conf) |
Encontre a seção [sshd] e garanta as seguintes configurações:
1 | [sshd] |

Iniciando o serviço
1 | # 重启 fail2ban |
Verificando o status
1 | # 查看 fail2ban 状态 |

A saída será algo como:
1 | Status for the jail: sshd |
Comandos mais usados
1 | # 手动封禁 IP |
3.8 [Opcional] Gerenciar vários servidores com SSH Config
Se você tem vários servidores, digitar ssh -p 22000 user@ip toda hora é chato. Dá pra simplificar isso usando o SSH Config.
Arquivo de configuração
No seu computador local, edite o ~/.ssh/config:
1 | vim ~/.ssh/config |
Adicione a configuração:
1 | # 第一台服务器 |
Como usar
Agora você pode conectar direto usando um alias:
1 | # 连接第一台服务器 |
Fim do problema de ficar decorando IP, porta e usuário!
3.9 [Opcional] Permitir acesso apenas do Cloudflare
Se o seu site está totalmente atrás do Cloudflare, você pode configurar o firewall para permitir apenas os IPs do Cloudflare nas portas 80/443, dando um up na segurança.
⚠️ Atenção: essa configuração exige que o seu domínio já esteja usando o CDN do Cloudflare.
Script de configuração automática
1 | # 下载脚本 |
O que esse script vai fazer:
- Pegar as faixas de IP mais recentes direto do site oficial da Cloudflare
- Adicionar regras no UFW para permitir o acesso às portas 80/443 apenas para esses IPs
- Recarregar o UFW
Configurar atualização automática
As faixas de IP da Cloudflare podem mudar, então vamos configurar uma atualização automática semanal:
1 | # 添加 cron 任务(每周一凌晨执行) |
3.10 Configurar o fuso horário
O fuso horário padrão pode ser UTC. Mude para o seu fuso local para facilitar a leitura dos logs:
1 | # 查看当前时区 |

3.11 [Opcional] Configurar atualizações de segurança automáticas
Deixe o sistema instalar os patches de segurança sozinho e não precise mais fazer isso na mão toda hora:
1 | # 安装自动更新工具 |
Escolha “Yes” para ativar as atualizações automáticas.
💡 Esse recurso instala automaticamente as atualizações de segurança, mas não faz upgrade para uma nova versão principal, então é bem tranquilo de usar.
4. Resumo
Checklist de inicialização
Depois de terminar essas configurações, passe por este checklist para conferir tudo:
| Item de verificação | Comando | Resultado esperado |
|---|---|---|
| Sistema atualizado | apt update && apt list --upgradable |
Nenhum pacote para atualizar |
| Usuário comum pode usar sudo | sudo whoami |
Saída root |
| Login por chave funcionando | ssh yourname@ip -p port |
Login sem necessidade de senha |
| Login por senha desativado | grep PasswordAuth /etc/ssh/sshd_config |
PasswordAuthentication no |
| Porta SSH alterada | grep Port /etc/ssh/sshd_config |
A porta que você definiu |
| Firewall ativado | ufw status |
Status: active |
| BBR ativado | sysctl net.ipv4.tcp_congestion_control |
= bbr |
| fail2ban em execução | systemctl status fail2ban |
active (running) |
| Fuso horário definido | timedatectl |
Asia/Shanghai ou seu fuso horário |
| Config SSH local | cat ~/.ssh/config |
Apelido do servidor configurado |
Localização dos arquivos principais
1 | /etc/ssh/sshd_config # SSH 服务端配置 |
Melhores práticas de segurança
- Mantenha o sistema atualizado regularmente:
apt update && apt upgrade - Verifique os logs de login periodicamente:
lastb(logins falhos),last(logins bem-sucedidos) - Fique de olho nos bloqueios do fail2ban
- Faça backup dos arquivos de configuração importantes antes de modificar
5. Registro de problemas
Q1: Login por chave falhou, ainda pede a senha?
Possíveis causas:
-
Problema de permissão (mais comum)
1
2
3# 检查并修复权限
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys -
Chave pública não foi copiada direito
1
2
3# 检查 authorized_keys 内容
cat ~/.ssh/authorized_keys
# 应该是一行完整的公钥,以 ssh-ed25519 或 ssh-rsa 开头 -
Interferência do SELinux (sistemas CentOS/RHEL)
1
restorecon -Rv ~/.ssh
Q2: Não consegue mais conectar depois de mudar a porta?
Passos para investigar:
-
Confirme que a nova porta está liberada no firewall:
1
ufw status | grep 你的端口
-
Confirme que a configuração do SSH está correta:
1
grep Port /etc/ssh/sshd_config
-
Confirme que o serviço do SSH está rodando:
1
systemctl status sshd
-
Se não conectar de jeito nenhum, use o VNC/console do seu provedor para entrar e arrumar.
Q2.5: Mudou a porta mas simplesmente não funcionou? (Servidores leves na nuvem)
Sintoma: Você alterou o /etc/ssh/sshd_config, reiniciou o serviço, mas a porta 22 continua ativa e a nova porta não funcionou.
Como diagnosticar:
bash
1 | # 查看是谁在监听 22 端口 |
Se a saída for algo como:
1 | tcp 0 0.0.0.0:22 0.0.0.0:* LISTEN 1/init |
Significa que a porta 22 está sendo monitorada pelo init (PID 1), e não pelo processo do sshd.
Motivo: em alguns provedores de nuvem, o SSH das instâncias do tipo “servidor de aplicação leve” ou “instância de contêiner” é gerenciado por um proxy na camada da plataforma, então a configuração do sshd dentro do seu servidor simplesmente não entra em vigor.
Solução:
| Tipo de instância | Como mudar a porta do SSH |
|---|---|
| ECS tradicional | Editar o sshd_config ✅ |
| Servidor leve | Pode ser preciso mudar no painel da nuvem, ou talvez nem seja suportado |
| Instância de contêiner | Em geral, não dá para mudar |
Se a sua instância não deixa mudar a porta, as outras medidas de segurança pesam ainda mais:
- ✅ Criar um usuário comum + desativar o login como root
- ✅ Login por chave SSH + desativar login por senha
- ✅ fail2ban para barrar tentativas de força bruta
Caprichando nessas medidas, sua segurança continua bem alta.
Q3: o fail2ban me bloqueou?
1 | # 用 VNC 登录后解封 |
Q4: depois de ativar o UFW, o site parou de abrir?
1 | # 检查 80/443 是否开放 |
Q5: ao rodar um comando, aparece que o sudo não foi encontrado?
Na instalação minimalista do Debian pode não ter sudo; instale usando o root:
1 | apt install sudo |
6. Script de inicialização com um clique (use quando já estiver craque)
Se você já dominou os passos acima, pode usar este script para inicializar rapidinho.
⚠️ Atenção: Antes de rodar o script, certifique-se de que você já tem sua chave pública SSH pronta.
1 |
|
7. Depois de tudo isso, o quanto a sua segurança melhorou?
| Passo | O que foi feito | Por que é importante |
|---|---|---|
| Atualizar o sistema | Instalar os patches mais recentes | Corrigir vulnerabilidades conhecidas |
| Criar um novo usuário | Não usar mais o root diretamente | Reduzir o risco de erros de operação |
| Chave SSH | Usar chave no lugar de senha | Impossível de quebrar com força bruta |
| Trocar a porta | Fugir da padrão 22 | Reduzir a chance de ser encontrado em scans |
| Desativar senha | Permitir login só por chave | Acabar de vez com ataques de senha |
| Desativar root | Root não pode logar diretamente | Aumentar a dificuldade para atacar |
| Firewall UFW | Abrir só as portas necessárias | Reduzir a superfície de ataque |
| Aceleração BBR | Otimizar a performance da rede | Melhorar a velocidade de acesso |
| fail2ban | Banir IPs maliciosos automaticamente | Evitar ataques contínuos |
Depois de tudo isso, a segurança do seu servidor já supera a de 90% dos VPS por aí.
O que vem no próximo post
No próximo artigo a gente vai falar sobre o guia rápido de configuração de login por chave SSH, com mais detalhes sobre:
- Como gerar chaves em diferentes sistemas
- Gerenciamento de múltiplas chaves
- Configuração do SSH Agent
- Ajustes nos clientes SSH mais comuns
Última atualização deste artigo: janeiro de 2026
Série Caixa de Ferramentas do Desenvolvedor Independente — segue aí pra não perder nada!




