Configurar Servidor LEMP (Nginx, MySQL, PHP) – Parte 1

Nesse artigos vamos explicar de forma clara e detalhada como configurar um servidor LEMP (Linux, Nginx, MySQL, PHP) para seu próximo projeto. Os pré-requisitos para seguir esse tutorial é ter uma conta na DigitalOcean, e criar um droplet para hospedar seu aplicativo. Caso ainda não tenha cumprido esses requisitos, recomendo a leitura e execução dos artigos anteriores, quando sua droplet estiver ativa retorne a esse tutorial.

No final dessa série de artigos você terá sua distribuição Linux (usei Ubuntu 14.04.3 para esse tutorial) atualizada e segura. Além dos aplicativos Nginx, MySQL e PHP instalados e configurados corretamente para atender as requisições de sua aplicação. Não é necessário nenhum conhecimento de Linux prévio (apesar de altamente desejável), basta seguir o tutorial com total atenção. Cada comando foi explicado em detalhes, para que até mesmo os novatos consigam realizar as configurações necessárias em seus servidores.

Tivemos o cuidado de além de instalar os aplicativos indispensáveis para que o servidor web funcione de forma correta, instalar diversas ferramentas se segurança, para que você ao seguir este tutorial tenha um servidor realmente seguro.

O artigo abaixo é separado em passos, isso tem como objetivo organizar a estrutura textual e facilitar posteriores consultas. Cada passo é pré-requisito do anterior, fique atendo a isso, para que erros inesperados não aconteçam durante a execução dos comandos aqui passados. Então vamos começar!

Primeiro passo – Atualização do servidor

Vou partir do pressuposto que você já se encontra logado via SSH em sua droplet, sendo possível enviar comandos para que ela os execute remotamente. Caso não saiba como realizar isso, leia os artigos citados no começo deste texto.

Primeiro passo é atualizar nosso servidor para que ele obtenha o que há de mais recente em termos de software. Para atualizar nosso servidor basta rodar o comando abaixo:

sudo apt-get update && 
sudo apt-get upgrade -y &&
sudo apt-get dist-upgrade -y &&
sudo apt-get clean &&
sudo apt-get autoclean &&
sudo apt-get autoremove -y

Copie todas as seis linhas anteriores e cole em seu terminal SSH, e em seguida pressione Enter. Uma dica – Se você estiver utilizando o PuTTY basta copiar o código acima e clicar com o botão direito no terminal, que código será colado automaticamente. Após pressionar Enter o servidor solicitará a senha do usuário root, digite a senha e pressione Enter outra vez. Se tudo ocorreu bem o servidor começará a se atualizar como mostrado na figura abaixo.

atualização do servidor
Mensagem final da atualização de nosso servidor

Quando a execução do comando acima chegar ao fim, o servidor estará atualizado corretamente. Lembre-se de executar esse comando com frequência, pois ele é o que mantem seu servidor atualizado e com todos os patches de segurança.

Segundo passo – Aumentando a segurando do SSH

Em seguida devemos garantir a segurança de nosso servidor. Ele não é seguro nesse momento, e a utilização deste servidor em produção pode ocasionar inúmeras dores de cabeça. Vários problemas podem ser listados com a segurança atual, entre elas destaco:

  • Utilização do usuário padrão root;
  • Vulnerabilidade através de força bruta;
  • Nenhum firewall configurado;

Precisamos corrigir todos esses problemas antes de começar a configurar nosso ambiente de produção. Vamos começar corrigindo o problema com o usuário root. Lembre-se o usuário root possui acesso ilimitado ao nosso servidor, pode realizar qualquer alteração (tanto para o bem quanto para o mal), por isso devemos desabilitar o acesso remoto do mesmo, e criar um novo usuário com esses mesmos poderes. Isso vai dificultar um possível ataque ao nosso servidor, já que ferramentas automatizadas realizam (quase sempre) o ataque ao usuário root.

Primeiramente crie um novo usuário com o comando abaixo, lembre-se de alterar o nome do usuário de demo para o nome de usuário de sua escolha. Eu utilizarei demo para esse tutorial.

sudo adduser demo

Quando solicitado digite uma senha para o novo usuário (não se esqueça de anotar em um local seguro essa senha). Lembre-se de usar sempre uma senha segura, isso assegurará que nenhum usuário mal intencionado tenha acesso ao seu servidor.

Agora vamos editar o arquivo /etc/sudoers, esse arquivo contém as permissões de usuário de todo o sistema. Para isso execute o comando abaixo:

sudo visudo

No arquivo que foi aberto encontre a linha que contenha a seguinte instrução:

# User privilege specification
root ALL=(ALL:ALL) ALL

Abaixo da linha localizada anteriormente, adicione o trecho de código abaixo, substituindo o usuário demo pelo nome de usuário que você criou com o comando adduser.

demo ALL=(ALL:ALL) ALL

Isso vai dar ao usuário especificado todos os poderes do usuário root. PressioneCtrl+x para sair do editor de texto e, quando solicitado, pressione a tecla Y e em seguida o Enter para salvar as alterações.

Agora vamos tornar o servidor ainda mais seguro alterando as configurações padrões do SSH. Digite o seguinte comando para abrir o arquivo de configuração do SSH:

nano /etc/ssh/sshd_config

Encontre o trecho que contenha a instrução PermitRootLogin e altere seu valor para no. Abaixo é exibido como o comando completo deve ficar.

PermitRootLogin no

Atenção: Tome cuidado ao desativar o login remoto do usuário root, você pode ficar preso de fora de seu próprio servidor e terá que destruir a sua droplet e criar uma nova. Sempre que desativar o login do root, habilite um novo usuário para continuar tendo acesso ao seu servidor.

No final do arquivo adicione o seguinte comando:

UseDNS no
AllowUsers demo

Isso vai permitir que somente o usuário criado no começo desse tutorial consiga realizar o login em nosso servidor. Pressione Ctrl+x para sair do editor de texto e, quando solicitado, pressione a tecla Y e em seguida o Enter para salvar as alterações.

Execute o seguinte comando para recarregar as configurações de SSH:

reload ssh

Feche a conexão com a sua droplet e tente abri-la novamente. Ao tentar realizar o login com usuário root o servidor deve retornar um erro (como na imagem abaixo), porém ao usar o novo usuário e a senha criados nesse tutorial, o login deve acontecer normalmente.

login root negado
Exemplo de login com usuário root negado

No próximo tutorial vamos continuar com as configurações de segurança de nossa droplet. Vamos instalar o fail2ban e também configurar o nosso firewall para turbinar a segurança de nosso servidor web. Até lá.

Clique aqui e confira a parte 2 deste tutorial.

Cadastre-se na DigitalOcean e ganhe descontos!

Cadastre-se agora mesmo na DigitalOcean pelo botão abaixo e ganhe 10$ de desconto. Aproveite essa oportunidade única!

cadastre-se grátis

3 thoughts on “Configurar Servidor LEMP (Nginx, MySQL, PHP) – Parte 1

  1. Bom dia. Parabéns pelo site e os artigos!
    Estou com uma conta nova na Digital Ocean e quero transferir o meu site para ela, porém, não achei em nenhum lugar na internet que ensine especificamente como restaurar backup via FTP de outra hospedagem.
    O que se acha e muito e ensinando a criar uma conta nova e instalação nova de site, mas nenhuma ensinando especificamente como restaurar backups para quem já tem um site pronto em outra hospedagem.
    Seria de grande utilidade se vcs criassem um artigo específico ensinando como restaurar um site via FTP.
    No aguardo de uma ajuda.
    Desde já agradeço.
    Sucesso sempre.

    1. Boa ideia, será um tema muito interessante. Existe alguma dúvida em específico? Para direcionar um pouco o artigo, acho que o acesso via ftp (no caso sftp) e o que mais gera confusão.

Deixe uma resposta

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