Servidores

Segurança da VPS

O provisionamento já deixa o servidor com uma proteção básica ligada. Esta página explica exatamente o que é feito, o que não é, e o que vale a pena você fazer por conta.

Atenção
A VPS é sua. Você é o titular da conta no provedor, tem acesso root e responde pela máquina. O Zé Preguiça aplica boas práticas no provisionamento como cortesia — não é um serviço gerenciado de segurança: não monitoramos seu servidor nem respondemos a incidentes nele.

O que o provisionamento já faz por você

Firewall ligado
Entrada bloqueada por padrão: só SSH, HTTP e HTTPS ficam abertos para a internet.
Bloqueio de força bruta
5 tentativas de login SSH erradas em 10 minutos banem o IP por 1 hora.
Patches automáticos
Atualizações de segurança do sistema são instaladas sozinhas, sem reiniciar o servidor.

As portas dos bancos de dados criados pelo painel não ficam abertas para a internet: elas são liberadas apenas para a rede interna dos containers, que é de onde as suas aplicações se conectam.

Nota
Já tem uma VPS provisionada antes desta mudança? Basta clicar em "Provisionar" novamente na tela do servidor. Reprovisionar é seguro e não toca em containers, bancos ou dados existentes.

Prefere cuidar disso você mesmo?

Dá pra desligar. Em "Editar servidor" existe a chave "Proteções básicas do servidor", ligada por padrão. Com ela desligada, o provisionamento não encosta em firewall, bloqueio de força bruta nem atualizações automáticas — instala só o que o painel precisa pra rodar seus projetos.

Atenção
Desligar não desfaz o que já foi aplicado: significa apenas que o painel para de mexer nisso a partir do próximo provisionamento. Se quiser remover de fato, é você quem desativa cada item na sua VPS.

E se eu já configurei essas coisas por conta?

O painel não desfaz o que você fez. Ele só acrescenta o que falta, e sai do caminho quando percebe que a decisão já é sua:

O que você já temO que o painel faz
Firewall ufw já ativo, com suas regrasAcrescenta só as regras que faltam. Nunca remove nenhuma das suas.
Saída de rede fechada por padrãoNão mexe. Só a entrada é fechada — se você bloqueou a saída, foi de propósito.
Outro gerenciador de firewall no lugar do ufwNão instala um segundo por cima. Avisa no log do provisionamento quais portas você precisa liberar na sua configuração.
Firewall do seu provedor de VPS ativoSão camadas independentes: as duas precisam liberar. O painel não enxerga nem altera a do provedor.
Bloqueio de força bruta já configurado por vocêMantém a sua configuração intacta, incluindo os IPs que você liberou. Não escreve a dele por cima.
Atualizações automáticas desligadas de propósitoRespeita e avisa no log. Não religa.
SSH em porta diferente da padrãoLibera a porta que você realmente usa, não a 22.
Login por senha já desligadoNada a fazer — o painel nunca altera a configuração do SSH.
Atenção
Uma exceção que vale saber: se você editar à mão os arquivos que o próprio painel gera, eles voltam ao original no próximo provisionamento. São eles a configuração do proxy reverso e — só quando você não tem uma configuração própria — a do bloqueio de força bruta e a das atualizações automáticas.

Atualizações que exigem reinício

As atualizações automáticas nunca reiniciam a sua VPS — derrubar o seu servidor sem aviso não é uma decisão que o painel deva tomar. A consequência é que atualizações de kernel só passam a valer no próximo reinício. Reinicie a máquina de tempos em tempos, em um horário que faça sentido pra você.

O que continua com você

1
Desligue o login por senha no SSH
É a proteção com melhor custo-benefício que existe e o painel não aplica sozinho, porque um erro aqui tranca você pra fora da própria máquina. O passo a passo está logo abaixo.
2
Guarde bem a chave privada
Quem tem o arquivo da chave tem o servidor. Nunca envie por e-mail, chat ou repositório — e crie uma chave separada só pro painel, pra poder revogar sem afetar seus outros acessos.
3
Use senhas fortes nos bancos e nas variáveis de ambiente
O painel guarda tudo criptografado, mas uma senha fraca continua sendo uma senha fraca dentro da sua aplicação.
4
Mantenha backups e teste a restauração
O painel agenda backups dos bancos e envia pra um destino externo. Backup que nunca foi restaurado não conta como backup — teste pelo menos uma vez.

Passo a passo: desligar o login por senha

Cuidado
Só faça isso depois de confirmar que consegue entrar na VPS com a chave, sem digitar senha. Se você desligar a senha sem a chave funcionando, o único jeito de voltar é o console web do seu provedor.
1) Do SEU computador, confirme que a chave funciona (não pode pedir senha)
ssh -i ~/.ssh/zepreguica_key usuario@ip-da-vps
2) Já dentro da VPS, crie o arquivo de configuração e valide
printf 'PasswordAuthentication no\nPermitRootLogin prohibit-password\n' | sudo tee /etc/ssh/sshd_config.d/99-hardening.conf
sudo sshd -t

O sshd -t valida a configuração sem aplicar. Se ele reclamar de alguma coisa, corrija antes de seguir — não recarregue o SSH com configuração inválida.

3) Aplique — e, sem fechar esta janela, abra outra e teste o acesso
sudo systemctl reload ssh
Nota
Mantenha a sessão atual aberta enquanto testa em uma segunda janela. Se algo der errado, você ainda tem a primeira conexão viva pra desfazer o arquivo.

E se meu site sofrer um ataque?

Vale separar duas coisas que costumam ser chamadas do mesmo jeito. Invasão é alguém conseguindo entrar no servidor — é contra isso que o firewall e o bloqueio de força bruta protegem. Ataque de negação de serviço (DDoS) é volume: tráfego suficiente pra saturar seu servidor ou o link dele.

Atenção
Nenhum software rodando dentro da VPS resolve um ataque volumétrico. Se o link da máquina satura, ele satura antes de qualquer programa ver o pacote. Proteção contra DDoS só existe na frente do servidor, ou no seu provedor de VPS.
Coloque um CDN na frente do domínio. Os planos gratuitos dos principais serviços de CDN já absorvem a maior parte dos ataques e escondem o IP real da sua VPS. É a medida mais eficaz e a mais barata.Veja o que o seu provedor de VPS oferece. Vários incluem mitigação de DDoS no preço da máquina, sem custo extra — só não vem ligado por padrão.Para abuso de camada de aplicação (raspagem agressiva, tentativa de login em massa), existem ferramentas que leem os logs do proxy e banem o IP automaticamente. Podem ser instaladas na VPS por você.
Nota
Se você colocar um CDN com proxy na frente do domínio, o painel deixa de conseguir validar que o domínio aponta pra VPS (ele passa a apontar pro CDN) e a emissão automática de HTTPS muda de forma. Fale com a gente antes de fazer essa mudança pra combinarmos a configuração.

Acesso direto pelo IP e porta

Projeto com domínio configurado só responde pelo domínio, com HTTPS: a porta do container fica acessível apenas de dentro da própria VPS, para o proxy reverso. Ninguém alcança o seu app em HTTP puro batendo no IP.

Atenção
Projeto sem domínio é diferente: aí IP:porta é o único acesso que ele tem, então a porta fica aberta e o tráfego é HTTP puro, sem criptografia. Use esse modo só para teste — para qualquer coisa séria, configure um domínio.
Nota
Essa proteção é aplicada quando o container é criado. Se você acabou de adicionar (ou remover) o domínio de um projeto que já estava no ar, faça um novo deploy para a mudança valer.

Mudanças manuais na VPS

Você continua livre pra entrar por SSH e configurar o que quiser — o painel não desfaz regras de firewall que você criar. A exceção são os arquivos que o próprio painel gera (a configuração do proxy reverso, o bloqueio de força bruta e as atualizações automáticas): esses são reescritos toda vez que você provisiona o servidor de novo.