DEV Community

Daniel Rodrigues for PHP Brasil

Posted on • Edited on

4

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

Speedy emails, satisfied customers

Postmark Image

Are delayed transactional emails costing you user satisfaction? Postmark delivers your emails almost instantly, keeping your customers happy and connected.

Sign up

Top comments (0)

Sentry image

See why 4M developers consider Sentry, “not bad.”

Fixing code doesn’t have to be the worst part of your day. Learn how Sentry can help.

Learn more

👋 Kindness is contagious

Please leave a ❤️ or a friendly comment on this post if you found it helpful!

Okay