Segurança é algo essencial quando falamos de servidores, independente do sistema operacional utilizado, manter politicas de senhas adequadas, com certo nível de complexidade é essencial para qualquer sistema de dados sensíveis.
Root (super usuário) ou super utilizador é uma conta de usuário especial usada para a administração de sistemas baseados no Unix. (Wikipedia)
Não recomendo a utilização do usuário “root” regularmente, configure uma conta de super usuário alternativa para executar tarefas regulares.
Podemos concordar que lidar com senhas complexas e diferentes para cada serviço, aplicação ou no caso deste post, servidores, se torna confuso e por vezes cansativos.
Se tratando de Linux, a autenticação baseada em SSH com chave de criptografia, torna toda gestão mais simples e segura, pois permite você acessar um ou mais servidores sem a necessidade de ficar digitando senhas complexas ou diferentes para cada servidor.
Veremos agora, como tornar seu acesso SSH muito mais seguro e descomplicado. Mostrarei também algumas configurações adicionais, aplicando camadas extras de segurança em sua autenticação SSH.
1. Criar um usuário com privilégio Sudo
Para configurar um novo usuário, você precisa ter acesso ao terminal do seu servidor, se você utiliza DigitalOcean, Vultr ou qualquer outro provedor, poderá acessar através do próprio painel de controle.
Criar novo usuário
sudo adduser novousuario
Você será solicitado a informar uma senha e algumas informações de contato, basta preencher e pressionar OK para cada opção.
Conceder privilégios de super usuário
sudo usermod -aG sudo novousuario
Sair do terminal e retornar ao Windows
$ logout
2. Baixe e instale o PuTTY
Para facilitar, utilizaremos o PuTTY como nosso cliente SSH, o download pode ser realizado em https://www.putty.org/. A instalação já incluí o utilitário PuTTYgen, responsável por gerar as chaves SSH (Formato “.ppk”).
3. Gerar chaves SSH com o PuTTYgen
Em seu Windows, localize e execute o utilitário “PuTTYgen”…
Após executar, bastar clicar em “Generate” e movimentar aleatoriamente o ponteiro do mouse dentro da janela Key. Mantenha as opções padrões da aplicação.
Copie e salve em um local seguro toda chave RSA extensa gerada acima, essa é a chave publica e utilizaremos ela no terminal mais adiante.
Adicione um comentário “Key Comment“, que pode ser o nome do seu usuário.
Opcionalmente, crie uma senha “Key passphrase“. A senha protege sua chave para o caso dela cair em mãos erradas, garantindo uma camada extra de segurança contra uso indevido, ela funciona como uma senha Mestre e será a mesma para qualquer servidor que utilize essa chave SSH, apesar de opcional eu recomendo fortemente seu uso.
Clique em “Save public key” e “Save private key” para salvar suas chaves, escolha um local seguro para elas. Utilizaremos a “private key” no PuTTY mais adiante.
4. Instalar Chave SSH no servidor LINUX
Precisaremos colar a chave publica gerada acima em nosso arquivo “authorized_keys”. Faça login novamente em seu servidor através do SSH utilizando a nova conta com privilégios sudo que criamos no inicio deste post.
Crie um novo diretório .ssh
sudo mkdir ~/.ssh
Observe que ~/ é uma abreviação para o diretório inicial do usuário atualmente conectado, geralmente em /home/username/
Restringir Permissões
sudo chmod 700 ~/.ssh
Criar o arquivo “authorized_keys” na pasta “.ssh”
sudo nano ~/.ssh/authorized_keys
O comando nano irá abrir um arquivo em branco. Certifique-se de ter sua chave pública, copiamos ela na etapa 3.
Cole a chave pública clicando com o botão direito do mouse uma vez em qualquer lugar do arquivo em branco.
Uma vez que a chave for colada, você poderá usar a seta para a esquerda no teclado, movendo o cursor até o final para ter certeza de que colou a chave inteira.
Salvar e fechar (pressione CTRL+ X, depois pressione y e ENTER para confirmar e salvar)
Restringir permissões do arquivo “authorized_keys”
sudo chmod 600 ~/.ssh/authorized_keys
Definir recursivamente o proprietário “$(whoami)”
Variável retorna o usuário atualmente conectado.
sudo chown -R $(whoami):$(whoami) ~/.ssh/
Concluímos aqui o processo de configuração da Chave SSH para um novo usuário com privilégios sudo.
logout
Se você quiser adicionar novas chaves para outros usuários, simplesmente faça o login com o usuário desejado e repita os passos 3 e 4.
Ou, se você for um usuário com privilégios sudo, simplesmente substitua o “~/” com o diretório pessoal do usuário, exemplo /home/nomedeusuario e substitua “$(whoami)” pelo nome de usuário.
Exemplo prático de substituição (Siga etapas 3 e 4):
sudo nano /home/vitorfaustino/.ssh/authorized_keys
sudo chown -R vitorfaustino:vitorfaustino /home/vitorfaustino/.ssh/
5. Configurar PuTTY com Chave SSH
Em seu Windows, localize e execute o utilitário “PuTTY“
No menu lateral esquerdo, clique em “Connection” para expandir, em seguida clique em “Data“.
Em “Auto-login username” preencha com seu usuário de conexão automática. (Neste exemplo, o usuário que criamos no passo 1)
Ainda no menu lateral “Connection” agora clique em “SSH” para expandir, em seguida clique em “Auth” e localize em seu computador a chave privada que salvamos no passo 3.
Ainda no menu lateral , clique sob a primeira opção “Session“, digite o IP do seu servidor, um nome para identificação do seu servidor e clique em salvar.
Para finalizar, clique em “Open” para iniciar a conexão com seu servidor.
Se você salvou sua chave SSH com uma senha (Passo 3), será necessário informa-la a cada novo acesso SSH.
Se você ver “Authenticating with public key” você configurou a autenticação baseada em chave com sucesso! Parabéns.
Recomendações de Segurança adicionais
6. Desativar a autenticação SSH através de senha
Agora que já temos usuários configurados com acesso SSH através de chaves, podemos desativar o acesso por senha, dessa forma, seu servidor aceitará apenas conexões SSH que estejam utilizando Chaves autorizadas.
Acesse seu terminal SSH como “root” ou algum usuário com privilégios sudo.
Editar arquivo de configuração do SSH
sudo nano /etc/ssh/sshd_config
Localize a linha iniciada por “PasswordAuthentication” ela pode estar comentada com um “#” antes, remova este comentário e defina o valor como “no” ao final da linha. Exemplo:
PasswordAuthentication no
Salvar e fechar (pressione CTRL+ X, depois pressione y e ENTER para confirmar e salvar)
Para que as alterações sejam aplicas, será necessário reiniciar o serviço
sudo service ssh restart
Desta forma, desativamos o login SSH através de senhas.
Lembre-se, atualize as configurações do Putty para que o novo acesso seja realizado através da Chave SSH configurada anteriormente, pois conexões por senha não serão mais aceitas.
7. Alterar porta padrão do SSH (22)
Uma questão de segurança muito importante, é alterar a porta padrão do SSH (22) para um porta aleatória disponivel, esse processo é recomendado, se não houver interesse pule para o próximo passo.
Importante: Antes de alterar a porta SSH, realize um Snapshot do seu servidor e confirme se seu servidor possui um firewall para liberar a porta desejada antes de realizar o procedimento abaixo. RISCO DE SER TRANCADO PARA FORA DO SERVIDOR caso o firewall esteja bloqueando a nova porta.
Editando a configuração do SSH
sudo nano /etc/ssh/sshd_config
Localize a linha Port 22 e altere para porta 43000 ou qualquer porta de sua preferência.
Observação, se a linha estiver dessa forma #Port 22, remova o comentário #.
Reiniciar o SSH
sudo service sshd restart
Será necessário desconectar e se conectar novamente alterando a porta no Putty para a porta configurada no arquivo, no caso aqui a 43000.