Como montar seu servidor de hospedagem Linux na nuvem

Quanto tempo sem escrever no blog, mas é sempre ótimo voltar, e ver pessoas se ajudando e interagindo por aqui.

Por isso hoje, venho deixar um presente para os companheiros que estão na missão de fazer sua própria hospedagem de sites. Não poderei entrar em muitos detalhes visto a falta de tempo e sobrecarga de serviços que estou no momento, mas espero ao final deste artigo deixar todas as migalhas necessárias para te apontar na direção correta nesse grande desafio.

Público Alvo: Para desenvolvedores, aventureiros, empreendedores (com algum conhecimento técnico), para agências de desenvolvimento web, mas em especial, para aqueles reféns de serviços de revenda de hospedagem pagando caro por um serviço sucateado.

Pros e Cons

Se você já hospeda uma quantidade considerável de sites em algum plano de revenda de hospedagem, este artigo pode ser bastante valioso visto o óbvio poder de ter total controle sob sua carteira de clientes de hospedagem pode traduzir em grandes cortes no seu orçamento de hospedagem, além da extrema flexibilidade e escalabilidade de se usar um serviço na nuvem. A realidade é que praticamente TODOS os planos de revenda de hospedagem que existem por aí são “capados”, você sempre estará limitado em número de sites que pode hospedar e também na performance, antes das coisas começarem a salgar no seu bolso, enquanto tendo controle total, você pode espremer a laranja (a máquina na nuvem) até o fim, e tirar o máximo que ela pode te dar operando “sem limites de sites” que podes hospedar.

No entanto, rodar seu próprio servidor é algo que vem com suas responsabilidades, pois você estará responsável por todos aspectos que dizem respeito ao funcionamento do seu servidor e de todos seus clientes. Acredite, não é pouca coisa, desde o setup do stack web (mysql, apache e php), segurança, serviço de e-mails, controle de spam, controle de firewall, vulnerabilidades, malwares, correto permissionamento, auditoria de segurança e mais uma infinidade de detalhes…

via GIPHY


Por Onde Começar?

A primeira decisão que você precisa tomar, é qual serviço na nuvem é certo pra você?

Você deverá primeiramente avaliar seu uso de recursos atuais antes de tomar esta decisão para observar o perfil dos sites de seus clientes e entender que tipo de máquina é mais apropriada para você.

Você pode usar o WHM para visualizar seu uso de disco, processador, memória e banda, estes dados são importantíssimos antes da tomada de decisão, caso não tenha WHM, tente falar com seu provedor e se informe sobre como obter estas estatísticas.

Uma vez que tiver estes dados em mãos você pode começar a pesquisa por empresas na nuvem que se encaixam na sua necessidade. Basicamente existem 3 perfis de máquinas na nuvem para diferentes fins:

  1. Máquinas otimizadas para memória
  2. Máquinas otimizadas para processamento
  3. Máquinas otimizadas para computação gráfica e de alta performance em geral.

Dependendo do tipo de sites que você está hospedando você precisará se inclinar para um ou outro tipo de máquina, e isto é algo fundamental para tomar a decisão correta ao contratar um serviço na nuvem.

Num geral, hospedar websites exige mais memória que qualquer outra coisa, a banda normalmente é bastante alta, CPU também normalmente não é algo pra se preocupar a menos que estejas rodando aplicações que realizam mais computação como compressão/descompressão de arquivos, criptografia, sistemas com inteligência artificial e afins.

Mas muitos iriam se surpreender pois websites consomem muito menos recursos do que imaginamos.


Pesquisa de Mercado

Agora que você já sabe que tipo de máquina precisa, vamos avaliar quais são nossas opções para hospedagem na nuvem no mercado?

Antes, gostaria de mencionar meu background e know-how em serviços e empresas de hospedagem tanto no Brasil, como nos EUA e na nuvem.

Já são mais de 10 anos que estou neste ramo, e já trabalhei com DIVERSAS hospedagens diferentes, já tive a oportunidade de usar/testar empresas como: Godaddy, Locaweb, Hostgator, KingHost, UOLHost, Hostinger, GreenGeeks, SiteGround, Bluehost, Amazon AWS, DigitalOcean, Google Engine, WPEngine, e diversas outras menores.

Para nossa tristeza, o serviço de hospedagens no Brasil infelizmente é terrível, a Locaweb é uma das empresas maiores no brasil com um dos piores serviços de hospedagem que eu já vi, eu já tive tanta dor de cabeça com as hospedagens Brasileiras que já tem 5 anos que estou utilizando revendas e hospedagens americanas, gostaria muito de estar hospedado com uma empresa Brasileira, mas a performance e atendimento dos serviços no Brasil deixam Muito a desejar.

Falando em performance e atendimento, na escolha do seu serviço na nuvem, preste MUITA atenção nestes dois fatores, pois é importantíssimo que você contrate uma empresa sólida, com excelente atendimento e com performance no mínimo satisfatória.

Não irei realizar uma revisão dos serviços de cloud de empresas Brasileiras, mas de uma Extensa pesquisa que realizei, a única empresa Brasileira que me chamou a atenção e que eu tiro o chapéu, é a Umbler.com, que está inovando sempre, ouvindo seus clientes e melhorando a plataforma ativamente.

Segue uma relação das principais empresas com hospedagem na nuvem no Brasil (Melhor pra pior):

  1. Umbler.com
  2. Hostinger
  3. Hostgator
  4. KingHost
  5. UOLHost
  6. Locaweb

Segue uma relação dos líderes mundiais em serviços na nuvem:

  1. Amazon AWS
  2. Google Cloud
  3. Azure
  4. Digital Ocean
  5. Linode
  6. Vultr
  7. IBM

Lembre-se, o MAIS IMPORTANTE, é performance/estabilidade/uptime, e ATENDIMENTO. Alguns podem discordar, mas na minha opinião, um atendimento funcional, qualificado e 24/7 é imprescindível nessa tomada de decisão se você quer uma solução longo-prazo de qualidade pra você e seus clientes.

Considerei ir para o pai dos pobres (e dos ricos), a Amazon AWS, no entanto, lá (ou na Google) praticamente não existe atendimento e o preço… bem, além de pagarmos em dólar, os preços podem flutuar bastante especialmente se você não tiver um controle justo do seu uso de recursos.

Minha recomendação, não é nenhuma das empresas mencionadas acima, eu escolhi uma empresa que está crescendo agressivamente e tentando competir com os líderes mundiais, entregando uma performance excepcional por um preço imbatível, combinado com um atendimento espetacular e altamente qualificado.

UpCloud – Superior cloud hosting

A UpCloud se intitula como a nuvem mais rápida do mundo, e devo dizer, eles não estão de brincadeira. Com um trial grátis, um plano de $5/mês, uma leitura de disco maximizada a 100.000 I/O por segundo em SSD, e um uptime de 100% em SLA, significa que você estará hospedado em um servidor redundante, de alta performance e que provavelmente não vai ficar fora do ar pra manutenção por mais de 5 min.

Vencedora de prêmios e análises de custo/benefício, a UpCloud se posiciona como uma forte competidora, já penetrou o mercado Europeu com grande força e teve o lançamento de seu terceiro data-center nos EUA em Nova York, assegurado pelo investimento de 18 milhões de euros no início de 2020.

https://upcloud.com/signup/?promo=9Y66P3

Utilize meu link promocional e ganhe $25,00 pra começar a hospedar na UpCloud!

Caso contrário, meu amigo Bruce tá de olho em você:

via GIPHY


Setup da Máquina na Nuvem

Indiferente de qual empresa você escolha, as etapas a seguir serão similares, se ainda está lendo, pega um café, que a brincadeira está só começando.

Bom, suponho que você já se cadastrou pelo meu link de recomendação e já tem sua conta na UpCloud 😎

  1. Vá na aba Servers e clique em Deploy server
  2. Escolha uma localização para o servidor, eu escolhi NYC, recomendo que sempre busque máquinas fisicamente mais próximas do seu continente.
  3. Escolha seu sistema operacional, nesse artigo usaremos Ubuntu 18.04.
  4. Faça o deploy da sua máquina e aguarde inicializar.

Fique atento para o botão de notificações da UpCloud, a senha do root será informada por lá.


Instalação e Configuração do Painel de Hospedagem

Antes de instalar, claro, você precisa decidir que painel de hospedagem irá utilizar. Eu sou defensor do Open Source, então neste artigo iremos utilizar o Cyber Panel, que foi o vencedor dos testes que realizei. Veja o Demo Aqui

Existem diversas alternativas para Painel de Controle de Hospedagens Open Source:

Meus critérios para escolha do painel foram:

  • Deve ser ilimitado
  • Deve ser 100% open source
  • Deve ter boa documentação e comunidade
  • E se possível uma interface agradável
  • Além de compatível com novos protocolos e possível avanço para serviços Enterprise.

Cyber Panel me surpreendeu, pois ele atende a todos estes critérios. A interface é bem agradável, apesar de um pouco confusa pois possui estrutura para revenda de hospedagens e controle de acesso ACL.

Cyber Panel utiliza OpenLiteSpeed por padrão, o que é fantástico, pois está dentro dos padrões da nova web HTTP/2, fazendo uso do protocolo QUIC, por sí só, já entrega uma performance superior a servidores Nginx e Apache. São diversos os recursos do Cyber Panel entre eles, backups programados, limitações de e-mail, cliente de e-mail com rainloop, LSCache e outros.

Máquina rodando, pronto pra mergulhar no terminal?

Se você usa Windows, poderá se conectar via Putty, se usa Linux como eu, pode conectar pelo terminal, mas em todo caso, na UpCloud existe uma aba chamada Console, que você pode usar para se conectar a máquina também.

ssh [email protected]

Digite a senha e vamos começar.

Atualize a máquina e rode a instalação do Cyber Panel.

apt-get update 
apt-get upgrade
sh <(curl https://cyberpanel.net/install.sh || wget -O - https://cyberpanel.net/install.sh)

Anote as senhas do admin, do web console ao final da instalação.

Você pode acessar a parte administrativa do Cyber Panel na porta 8090:

https://<SEU_IP>:8090/

Para configuração, vai depender bastante do seu caso e de como você quer que tudo funcione mas num geral os passos são:

  1. Registre um domínio para agir como NS (freenom.com tem domínio gratuito para seus testes)
  2. Crie um site no Cyber Panel pro seu domínio registrado.
  3. Crie um NameServer no cyber panel com seu domínio
  4. Emita um certificado ssl para o host
  5. Configure seu servidor de email em um subdomínio ex: mail.dominio.com, emita o ssl pra mail server
    1. Utilize ferramentas como MX Tool Box para facilitar sua vida na verificação de portas, dmarc, spf, e registros MX.

Realizando a Migração de seus Sites

Esta é a parte tediosa do processo, não entrarei em detalhes pois se você ainda está lendo este artigo, é sinal que tem conhecimento o bastante pra realizar reapontamento dos domínios, rotinas de backup e restauração de seus arquivos, bancos de dados, entradas de DNSs e e-mails.

Esta etapa irá variar dependendo do tipo de hospedagem que você utiliza no momento.

Ta na hora de fazer aquela migração…


Auditoria de Segurança e Testes de Penetração (Pentests)

Hmmm, adoro falar de penetração… De sistemas, rsrssrrssrrsrssrs

A ferramenta que utilizei foi a versão Pro do Metasploit que possui excelente documentação, comunidade, um trial free belezinha, e que vai permitir você fazer desde a abordagem (scan de portas), até o envio de payloads maliciosos, execução de Brute Force e muito mais.

Nas minhas pesquisas encontrei um site chamado Awesome Open Source que contém uma lista de centenas de ferramentas open-source para realizar sua auditoria de segurança.

Ah! Antes de você sair lançando um ataque no seu próprio servidor na UpCloud, não esquece de fazer um Backup do seu disco pelo UpCloud, pra você restaurar sua máquina em caso de desastres, e entra em contato com o Chat da UpCloud, eles possuem um formulário pra você informar de antemão que estará lançando um ataque nos horários especificados por você, assim eles colocam seu IP no whitelist, permitindo você tacar fogo na bagaceira.

Só não vai fazer como eu, eu lancei um ataque de força bruta partindo do meu computador usando uma base de senhas do SecLists, meu PC travou TUDO esgotei 16GB de Ram e 6 cores por 1 hora seguida, e não fez nem cócegas na máquina da UpCloud.


Dica PRO I – Limitar a memória do ClamAV:

Se você vai começar com uma máquina com menos de 2GB de ram, fique atento pois o Cyber Panel instala o Anti Vírus ClamAV/FreshClam junto com a instalação do SpamAssassin se não me engano. Conforme o número de arquivos cresce na sua máquina o ClamAV pode chegar a consumir 50-100% da sua RAM rapidinho.

Edite a configuração do serviço do clamav-daemon

nano /etc/systemd/system/clamav-daemon.service.d/extend.conf

Adicione um limite de memória apropriado pra você, lembre-se, quanto menos memória você dá, menos eficiente ele irá operar.

Adicione abaixo do [Service]

MemoryLimit=256M

Recarregue o daemon e reinicie o serviço do clamav-daemon

systemctl daemon-reload 
service clamav-daemon restart

Dica Pro II – Remova o acesso SSH:

ATENÇÃO: Alterações de firewall erradas podem comprometer o estado da sua máquina e você pode perder o acesso a sua instância caso não saiba o que está fazendo, se estiver inseguro, não vai bulir no firewall.

A UpCloud possui uma interface de firewall que te permite controlar pelo site da UpCloud, no entanto o firewall é pago, o Cyber Panel instala o firewalld, e possui uma interface também para gerenciar o firewall.

Uma boa prática de segurança é remover o serviço SSH do firewalld e permitir utilizando uma zona com um whitelist de IPs permitidos.

Na UpCloud, configure o mapa de teclado do sistema para seu país, por padrão o mapa é finlandês acredito, e se você fizer m*rda no firewall e não conseguir conectar pelo SSH, você precisará utilizar o Console da UpCloud que te concede acesso direto ao terminal de comando da máquina, e tu não vai conseguir usar nada no console caso não esteja com mapa de teclado correto.

nano /etc/default/keyboard

Meu caso ficou assim:

# KEYBOARD CONFIGURATION FILE 
# Consult the keyboard(5) manual page. 

#XKBMODEL="pc105" 
#XKBLAYOUT="fi" 

XKBMODEL="abnt2" 
XKBLAYOUT="br" 

XKBVARIANT="" 
XKBOPTIONS="" 

BACKSPACE="guess" 

Testa o console da UpCloud após as alterações (logout/login deve ser feito).

Adicione seu IP na zona interna, e remova o ssh da zona pública.

firewall-cmd --zone=internal --add-service=ssh --permanent
firewall-cmd --zone=internal --add-source=1.2.3.4/32 --permanent
firewall-cmd --zone=public --remove-service=ssh --permanent

firewall-cmd --reload

Agora tu pode ficar sossegado, que a porta 22 irá permanentemente recusar todas as conexões, e você pode usar a interface de firewall do CyberPanel pela 8090, para adicionar os IPs de seus clientes sob demanda, bem como os seus em caso de alteração. E em caso de desastres, você sempre terá o console da UpCloud pra acessar o terminal direto.

😎 & Happy coding!

Aquele teste de penetração que dá errado…

Conclusão

O painel do Cyber Panel ainda tem MUITO o que melhorar, e está em desenvolvimento contínuo, no entanto ele possui todas as ferramentas essenciais para você, além de tecnologias novas como QUIC e HTTP/2 pelo OpenLiteSpeed, o que num geral se mostra uma boa alternativa para rodar este servidor na nuvem sem upgrades críticos sossegado pelos próximos 5-10 anos. O formato QUIC e HTTP/2 combinado com a incrível performance entregue pela UpCloud, é uma combinação poderosa, com ótimo grau de segurança, e com uma performance superior em muito, comparado a outras hospedagens, por um preço justo que cabe no seu bolso.

Se chegou aqui, e achou valioso o conteúdo, deixe seu comentário e conte sua experiência!

Deixo meu agradecimento pro atendimento da UpCloud e pra comunidade do Cyber Panel no Discord, e a toda comunidade que faz parte de iniciativas Open Source. A turma lá no Discord é PH0D4 \o/

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *