3

Publicando seu projeto: checklist básico para configurar sua VPS

#Linux
André Vicente
André Vicente

Você aprendeu recentemente a criar um site ou projeto e agora quer disponibilizar ele para o mundo?


Existem muitos serviços de hospedagem onde você pode colocar seu site ou sistema, e muitos deles possuem atalhos fáceis para as tecnologias mais utilizadas, como por exemplo WordPress.

Mas e se você NÃO usa uma tecnologia ou framework suportado pelas provedoras de hospedagem? E se você quer hospedar o back-end de um jogo, por exemplo? E se seu projeto rodar em Interface de Linha de Comando, mas for algo que você queira deixar rodando 24/7 para que você possa acessar sempre que precisar?

Então você provavelmente vai precisar de uma VPS, ou Servidor Privado Virtual.


Uma VPS costuma ser uma solução bem em conta para muitos projetos, sendo que você encontra algumas mais simples por tão pouco quanto uns R$16,00 reais por mês (o preço de dois ou três lanches), e você inclusive pode rodar diversos projetos em um só servidor, como por exemplo vários sites ou vários programas.


Entretanto tem um porém. Como você é o root do servidor, você tem que configurar tudo. Muitas pessoas não publicam os projetos pois não sabem quais configurações iniciais devem ser feitas no servidor para garantir o mínimo de segurança e organização.


Pensando nisso, resolvi compartilhar uma pequena checklist pessoal de configuração inicial e uma VPS Linux. Não é a mais completa, nem a mais enxuta, mas pode ao menos te ajudar a ter um direcionamento.


Primeiramente as tecnologias que utilizo:

OpenSSH (requisito)

Ubuntu


1. Criar conta

   1.1. Adicionar IP ao arquivo de hosts local

   1.2. Logar como root

   1.3. Atualizar sistema

   1.4. Reiniciar

2. Criar usuário

   2.1. Adicionar usuário ao grupo sudo

   2.2. OPCIONAL Configurar o bash

3. Gerar chave ssh

   3.1. Enviar chave para o server

   3.2. Configurar permissões da chave

4. Editar o sshd

   4.1. Desabilitar login root

   4.2. Desabilitar login com senha

   4.3. Mudar porta do serviço

   4.4. Adicionar limite de tentativas

   4.5. Restartar o sshd

   4.6. !IMPORTANTE Testar funcionamento antes de fechar a sessão ativa

5.  Desativar o login do root

6.  Instalar e configurar firewall

    5.1. Desabilitar tráfego de entrada

    5.2. Habilitar tráfego de saída

    5.3. Habilitar porta do ssh

    5.4. OPCIONAL Habilitar porta do HTTP

    5.5. Habilitar porta do HTTPS

    5.6. !IMPORTANTE Testar funcionamento antes de fechar a sessão ativa


Começamos no item 1 criando efetivamente a conta em um serviço de hospedagem VPS.

No item 1.1 adicionamos o endereço IP da VPS ao arquivo de hosts local, o que permite acessar a máquina digitando algo como

ssh meu_usuario@minha_vps

ao invés de algo como

ssh meu_usuario@123.123.123.123

Em seguida fazemos o login na VPS, atualizamos o sistema e reiniciamos, para deixar tudo redondinho.


No item 2 realizamos a criação e a concessão de permissões de usuário, bem como a configuração dele e do bash pessoal, caso seja de interesse. A edição do bash permite colocar cores, mudar o prompt, configurar tamanho do histórico, etc. Verifique como fazer isso editando o arquivo em /home/meu_usuario/.bashrc.

OBS: Se for criar mais de um usuário, só conceda permissão de superusuário para quem realmente precisa disso!


Item 3: agora já temos nosso sistema atualizado e nosso usuário criado. Temos que garantir que o usuário vai entrar com uma chave de segurança. Para isso usamos o ssh-keygen para gerar uma chave no nosso computador local para podermos posteriormente acessar a VPS sem usar a senha de usuário (que pode ser quebrada com força bruta).

Após colocar a chave (geralmente o conteúdo do arquivo id_rsa.pub do PC local no arquivo ~/.ssh/authorized_keys da VPS) no server, temos que configurar as permissões da mesma (geralmente um chmod 664 resolve). Além disso, a chave privada (que fica no PC local) também pode precisar ser protegida. No Linux pode ser um chmod 700 ou algo assim, mas no Windows é um pouco mais chato, recomendo uma olhadinha no stack overflow.


Estando com a chave ssh configurada, agora vamos editar o serviço do ssh para os padrões mínimos de segurança (isso aqui é minha opinião, recomendo que consulte um especialista em segurança em caso de dúvidas).

Desabilitamos o login do usuário root via ssh, para que hackers não consigam se logar diretamente nele.

Desabilitamos o login do nosso usuário com senha (mantendo somente o login com chave criptográfica gerada com o ssh-keygen). Isso impede ataques de força bruta que descobrem a senha do seu usuário.

Por padrão o ssh roda na porta 22. É bom mudar o serviço para outra porta livre, de forma que scripts automáticos que tentam acessar servers por essa porta não consigam encontrar nada.

O limite de tentativas de acesso é mais útil quando utilizamos senhas para logar, mas mesmo assim é melhor deixar ativado e com um limite baixo, como por exemplo umas 5 tentativas seguidas de um bloqueio por algum período.

Agora é hora de fazer o reload (ou restart) do serviço para testar as novas configurações.

MUITO IMPORTANTE: teste as novas configurações abrindo um novo terminal antes de sair do que você está logado, visto que se você configurou o ssh erroneamente você pode acabar perdendo acesso ao servidor, daí teria que reinstalar e fazer tudo de novo.


Estando tudo funcionando corretamente, e estando seu usuário com privilégios de superuser, é recomendado desabilitar o acesso ao root de forma interna também, evitando assim ataques de elevação de privilégio.


Agora que já está quase tudo ok, vamos ao firewall. Esta é uma etapa muito importante em servidores, para garantir que nenhuma porta será deixada aberta desnecessariamente.

O tráfego de saída geralmente pode ficar habilitado globalmente, mas o de entrada deve ficar por padrão desabilitado. Com isso, configuramos quais portas em específico queremos deixar abertas. A mais importante delas é obviamente a do ssh (22 padrão ou qualquer outra que você tenha configurado). Além disso, você tem que abrir também as portas dos serviços que você vai usar, como por exemplo a 80 pro HTTP ou a 443 do HTTPS (caso vá hospedar sites) ou qualquer outra porta que sua aplicação vá de fato utilizar.

MUITO IMPORTANTE: da mesma forma que configurar o sshd erroneamente pode te deixar preso do lado de fora da VPS, uma configuração errada do firewall pode ocasionar o mesmo resultado. Teste a configuração antes de sair, e se possível faça um backup da antiga para restaurar ela entrando na VPS via console (geralmente disponibilizado pela empresa de hospedagem).


Acabou? Não né! Ainda falta configurar sua aplicação, mas isso aí depende de você. Um programinha comum de ser utilizado é o web server NGINX, e quem sabe algum outro dia eu faça um artigo só sobre ele =D


Achou muita coisa? Lembre-se que essa config você só vai fazer uma vez (a cada VPS que você contratar, é claro). Lembrando que alguma coisa pode ser diferente para a sua realidade, e não sou especialista em segurança, portanto lembrem-se de consultar um caso o seu projeto tenha dados sensíveis.


Sabe de algo a mais que eu esqueci? Comenta aí =D

1
43

Comentários (1)

0
Jackson Jesus

Jackson Jesus

09/01/2021 13:26

Introdução didática!

None

Brasil