Configurando um servidor LEMP Debian 9 - Parte 1
Configuração de um servidor web usando LEMP no Debian 9. Criando um usuário e configurando o SSH
Fala pessoal tudo beleza?
Esse é o primeiro artigo de alguns que irei publicar com o objetivo de ajudar a configurar um servidor web do zero. Mostrarei como configurar os principais serviços e instalar um servidor web para rodar aplicações e sites.
Essa série será sempre com exemplos práticos sem muito entrar em detalhes, irei simplificar o máximo para não ficar maçante. Chega de enrolação e vamos começar...
Nessa série estou utilizando uma instalação limpa do Debian 9 - Stretch.
Criando um novo usuário
Sabemos que por motivos de segurança não devemos usar o usuário root para tarefas rotineiras. Para isso devemos criar um usuário para nós.
O comando abaixo irá criar um usuário com o nome john. Após confirmar com o Enter, você terá que digitar uma senha para o usuário, insira uma senha forte!
Entre com o seu nome e preencha as informações seguintes caso desejar. Não é obrigatório preencher tudo e você pode apenas confirmar com o Enter para pular as perguntas.
adduser john
Agora devemos adicionar seu usuário para podermos executar alguns comandos com super poderes. Para isso execute o comando abaixo:
usermod -aG sudo john
Assim você já poderá executar comandos com privilégios de root utilizando o sudo.
Aumentando a segurança com autenticação de chaves
Podemos melhorar a segurança do nosso servidor inserindo uma chave pública para autenticação. Vamos criar um par de chaves e adicionar ao nosso servidor.
Caso ainda não tenha uma chave execute o comando abaixo. Caso já tenha pode pular para a parte de Instalar a chave manualmente.
Execute o comando abaixo no seu computador local, assumindo que você esteja usando Linux como sistema operacional. Caso esteja usando Windows busque por Criar chave ssh windows no Google.
$ ssh-keygen
Você poderá cadastrar uma senha caso queira é uma segurança a mais para você. Eu particularmente não utilizo. Com uma senha ou sem, a autenticação com a chave privada é uma maneira mais segura de efetuar o login do que uma autenticação básica com apenas a senha.
O comando acima irá gerar uma chave privada id_rsa
e uma chave pública id_rsa.pub
no diretório local do usuário na pasta ~/.ssh
.
Instalar a chave manualmente
Agora vamos instalar essa chave pública que acabamos de criar no servidor. O comando abaixo irá exibir o conteúdo do arquivo id_rsa.pub. Apenas copie o conteúdo do arquivo.
$ cat ~/.ssh/id_rsa.pub
Logado no servidor como root dê o comando abaixo para trocar de usuário assumindo o usuário que criamos nesse tutorial.
su - john
Crie um diretório chamado .ssh dentro do seu diretório home e restrinja suas permissões com os comandos:
$ mkdir ~/.ssh
$ chmod 700 ~/.ssh
Vamos criar agora um arquivo dentro desse diretório chamado authorized_keys
. Nesse exemplo vamos utilizar o editor nano.
$ nano ~/.ssh/authorized_keys
Cole todo o conteúdo do arquivo que você copiou no passo acima para este que acabamos de criar. Para salvar pressione CTRL+O e CTRL+X para sair do arquivo.
Agora vamos restringir o acesso a esse arquivo para que apenas seu usuário tenha acesso com o comando abaixo:
$ chmod 600 ~/.ssh/authorized_keys
Pronto. Chave instalada no servidor e agora poderá acessar seu servidor com mais segurança. Para sair do seu usuário digite exit que ele irá voltar para o usuário root.
Configurando o SSH
Podemos realizar algumas alterações no arquivo de configuração do SSH para proteger nosso servidor um pouco mais.
Abra o arquivo abaixo utilizando o usuário root com seu editor de texto:
nano /etc/ssh/sshd_config
Agora vamos fazer as alterações.
Desabilitar login com usuário root
Vamos bloquear o acesso via SSH para o usuário root, este é um procedimento altamente recomendado para servidores. Iremos deixar que apenas o usuário que criamos tenha acesso ao servidor.
Para isso altere a linha abaixo de yes para no. Ficando conforme exemplo:
PermitRootLogin no
Isso irá restringir o login de root. Pessoas má intencionadas sempre utilizam ataques de força bruta em cima desse usuário e se a senha não for forte o suficiente é certeza que seu sistema estará vulnerável à esse ataque.
Alterando a porta padrão
Agora vamos deixar nosso servidor um pouco mais seguro alterando a porta padrão do SSH que é a 22. Procure a linha abaixo no arquivo de configuração.
Port 22
Nesse exemplo vamos utilizar a porta 54122. Altere a linha deixando a dessa forma:
Port 54122
Nesses dois exemplos que fizemos, nós melhoramos a segurança do nosso servidor. A partir de agora para efeturar login no servidor será necessário especificar a porta SSH nova. Veremos um exemplo mais abaixo.
Quer melhorar a segurança um pouco mais?
Vamos especificar no arquivo de configuração do SSH que apenas o nosso usuário poderá acessar via SSH. Restringindo qualquer outro usuário do sistema.
Abra o arquivo de configuração caso já tenha fechado.
nano /etc/ssh/sshd_conf
Podemos inserir a linha abaixo em qualquer lugar do arquivo, mas para ficar mais organizado vamos inserir após a linha do PermitRootLogin.
AllowUsers john
Para salvar pressione CTRL+O e CTRL+X para sair do arquivo. Para que todas essas alterações surjam efeitos devemos reiniciar o serviço SSH com o comando.
service ssh restart
E como saber se tudo que fizemos deu certo? Vamos testar antes de fechar nossa conexão com o servidor.
Abra uma nova janela do seu terminal e efetue uma nova conexão com o servidor via SSH utilizando seu novo usuário. Agora especificando a porta que escolhemos para o serviço.
ssh john@ip_servidor -p 54122
Se tudo correr bem você estará logado no servidor sem utilizar uma senha. Ao logar o sistema verifica sua chave privada com a chave pública no servidor e autoriza sua entrada caso esteja tudo certo.
Para executar comando com privilégios de root informe o sudo antes do comando.
$ sudo apt update
Maravilha. Agora elevamos o nível de segurança do nosso servidor. Lembre-se que só isso não deixará seu servidor com segurança nível hard, é necessário um conjunto de configurações e serviços executando para ter uma proteção maior.
Até a próxima!
Este artigo faz parte de uma série sobre servidor web. Veja todos no link abaixo:
- Configurando um servidor LEMP Debian 9 #Parte 1 (Atual)
- Configurando um servidor LEMP Debian 9 #Parte 2