DEV Community

Daniel Rodrigues for PHP Brasil

Posted on • Edited on

Protegendo seu servidor contra acessos indevidos

Se você precisa de segurança extra em um servidor Linux/Debian, e você sempre precisa, lá vai uma dica de ouro, desative acesso SSH por meio de senhas, assim você evitará qualquer ataque do tipo força bruta, vamos a prática.

No servidor

Crie um par de chaves SSH;

ssh-keygen -b 4096

Generating public/private rsa key pair.
Enter file in which to save the key (/home/pi/.ssh/id_rsa):
Enter fullscreen mode Exit fullscreen mode

Tecle enter para confirmar;

Created directory '/home/pi/.ssh'.
Enter fullscreen mode Exit fullscreen mode

Crie uma senha para sua chave SSH e confirme;

Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Enter fullscreen mode Exit fullscreen mode

A chave foi gerada com sucesso, veja o resultado abaixo;

The key fingerprint is:
SHA256:oVHrP/nGj3umYFkKRvnC/SKk8nSgHmeZ/OTUAQS+gvs pi@raspberrypi
The key's randomart image is:
+---[RSA 4096]----+
|      ..o        |
|     . o o       |
|      o *        |
|   .   B =       |
|  . . + S + .    |
|   . + B = B     |
|  . + O = @..    |
|   o B * o =o.o  |
|    E . o  .=*.  |
+----[SHA256]-----+
Enter fullscreen mode Exit fullscreen mode

Chaves SSH ficam salvas na pasta oculta .ssh na raiz do seu usuário Linux, no meu caso estão em:

/home/pi/.ssh
Enter fullscreen mode Exit fullscreen mode

Digitando o comando ls dá pra ver o seu par de chaves(pública, privada), do lado do servidor o trabalho está terminado.

id_rsa  id_rsa.pub
Enter fullscreen mode Exit fullscreen mode

No cliente

Autorize a sua máquina cliente a se conectar ao servidor sem precisar digitar uma senha, para isso vamos copiar a chave pública do cliente para dentro do servidor, e autorizar o acesso, basta um simples comando pra isso:

cat ~/.ssh/id_rsa.pub | ssh pi@192.168.15.2 'mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys'
Enter fullscreen mode Exit fullscreen mode

Na próxima etapa digite yes, assim você está informando que reconhece o servidor;

The authenticity of host '192.168.15.2 (192.168.15.2)' can't be established.
ECDSA key fingerprint is SHA256:g1gtgJgDd24rXR0KJTTBjdLUI+SX829GTwQ1CYgVCiQ.
Are you sure you want to continue connecting (yes/no/[fingerprint])?
Warning: Permanently added '192.168.15.2' (ECDSA) to the list of known hosts.
Enter fullscreen mode Exit fullscreen mode

Neste momento um arquivo chamado .ssh/authorized_keys será criado no servidor, esse arquivo tem a chave pública do cliente, indicando assim que o mesmo possui autorização de acesso ao servidor.

Digite a senha do servidor;

pi@192.168.15.2's password:
Enter fullscreen mode Exit fullscreen mode

Conecte-se ao servidor;

ssh <USERNAME>@<IP-ADDRESS>
Enter fullscreen mode Exit fullscreen mode

No meu caso o comando será;

ssh pi@192.168.15.2
Enter fullscreen mode Exit fullscreen mode

Pra mim a mensagem de boas-vindas foi a seguinte:

Linux raspberrypi 5.4.83-v7+ #1379 SMP Mon Dec 13 20:08:57 GMT 2020 armv7l
Enter fullscreen mode Exit fullscreen mode

Passo final, o "pulo do gato"

O último passo é desativar a autenticação por senha no servidor, para isso basta editar o arquivo com as configurações de ssh no servidor, use o comando:

sudo nano /etc/ssh/sshd_config
Enter fullscreen mode Exit fullscreen mode

O arquivo será aberto e estará pronto para edição, apenas procure o seguinte trecho:

#PasswordAuthentication yes
Enter fullscreen mode Exit fullscreen mode

Edite o trecho removendo o comentário # deixando assim:

PasswordAuthentication no
Enter fullscreen mode Exit fullscreen mode

Reinicie o servidor

sudo reboot
Enter fullscreen mode Exit fullscreen mode

Tudo certo, a partir de agora você não precisa mais digitar senhas para ter acesso ao servidor, e ainda garante que apenas acessos via SSH e autorizados serão aceitos, desta forma a segurança está garantida no seu servidor

Top comments (0)