Aller à la recherche

Sécuriser et simplifier les connexions ssh

Nous allons nous simplifier la vie avec les connexions ssh aux serveurs sans négliger la sécurité d’un service aussi dangereux que peut l'être sshd.

Au commencement il y avait ça !

Partons de ce que (mal)heureusement beaucoup utilisent par défaut ssh root@192.168.100.80

password : 

Une première sécurisation

Sécurisons un peu tout ça en interdisant la connexion root et en modifiant le port d’écoute (Voir la configuration du service sshd sous FreeBSD .)

Maintenant la connexion se fait comme ceci ssh user1@192.168.100.80 -p 22122

password

Cela est plus sécurisé et reste utilisable si nous avons qu’une seule machine à gérer, mais ça deviendra très vite compliqué si l’on devait se souvenir de dizaine voir centaine d’ ip/port et surtout de leur mot de passe respectif (car on aura pas mis les mêmes mots de passe hein!!)

Connexion grâce à la clé privée

Sur notre client, nous générons avec la commande un couple clé privée / public en utilisant le chiffrement rsa avec une clé de 4096 bits, nous allons spécifier un passphrase pour plus de sécurité. ssh-keygen -t rsa -b 4096 -f ~/.ssh/server1_sshd

...
Your identification has been saved in server1_sshd.
Your public key has been saved in server1_sshd.pub.
...

Nous aurions pu aussi utiliser le chiffrement ecdsa réputé plus solide et rapide. ssh-keygen -t ecdsa -b 521 -f ~/.ssh/server1_sshd

Nous envoyons de manière sécurisée la clé publique cd ~/.ssh ssh-copy-id -i server1_sshd -p 22122 user1@192.168.100.80

Number of key(s) added: 1

Now try logging into the machine, with:   "ssh -p '22122' 'user1@192.168.100.80'"
and check to make sure that only the key(s) you wanted were added.

Ici ssh-copy-id s’occupe de créer le fichier authorized_keys s’il n’existe pas et de lui donner les bons droits (rw---), et d’y ajouter la clé.

Nous pouvons maintenant nous connecter ssh -i server1_sshd user1@192.168.100.80 -p 22122

passphrase : 
 $ 

Une fois connecté nous allons en profiter pour désactiver totalement le mécanisme d’authentification par mot de passe, pour cela il faut dans le fichier de configuration du service sshd (/etc/ssh/sshd_config) dé-commenter la ligne

ChallengeResponseAuthentication on

puis relancer le service sshd service sshd restart

Nous pouvons limiter la connexion à une ou plusieurs ip précise pour cela nous devons ajouter à notre fichier autorized_keys (~/.ssh/authorized_keys)

from= « 192.168.100.111, 192.168.100.50 » ssh-rsa….

Récapitulons ce qu’il n’est plus possible

  • Impossible de se connecter sur le port 22.
  • Impossible de se connecter en tant que root.
  • Impossible de se connecter avec un mot de passe.
  • Impossible de se connecter depuis n’importe quel ip.

Alias Shell

Nous allons maintenant simplifier la connexion après toutes ces contraintes, reprenons la dernière commande.

ssh -i server1_sshd user1@192.168.100.80 -p 22122

Nous pouvons créer un alias shell avec cette commande echo  “alias ssh_server1 = ‘ssh -i /.bashrc source ~/.bashrc

Nous pouvons maintenant nous connecter au serveur avec ssh_server1 $

Config ssh

Nous avons une autre méthode sans doute un peu plus propre, car nous utilisons le fichier configuration de ssh. Si le fichier ~/.ssh/config n’existe pas créons-le, et ajoutons

Host server1
    HostName 192.168.100.80
    User user1
    Port 22122
    IdentityFile ~/.ssh/server1_sshd
Host server2
    HostName 192.168.100.81
    User user1
    Port 221223
    IdentityFile ~/.ssh/server2_sshd
  • Host server1 : Nom de la configuration
  • HostName : Nom d’hôte ou ip distant
  • User : utilisateurs
  • Port : port distant
  • IdentifyFile : clé privée à utiliser pour cette configuration

Il est ainsi possible d’avoir plusieurs configurations qui se suivent, nous devons maintenant nous connecter comme ceci ssh server1

Enter passphrase for key '/home/user1/.ssh/server1_sshd': 
$

Monsieur l’agent ssh

Il peut être assez barbant de rentrer à chaque fois un passphrase, pour éviter cela nous allons lancer l’agent ssh qui va vous demander qu’une seule fois par session les passphrases.

Lancons l’agent ssh ssh-agent

SSH_AUTH_SOCK=/tmp/ssh-wLxhGklusUU4/agent.20828; export SSH_AUTH_SOCK;
SSH_AGENT_PID=20829; export SSH_AGENT_PID;
echo Agent pid 20829;

Ajoutons notre clé à l’agent ssh-add ~/.ssh/server1_sshd

Enter passphrase for key '/home/user1/.ssh/server1_sshd': 

Connectons-nous maintenant autant de fois qu’il le faut, sans qu’il nous demande le passphrase. ssh server1

$

Voilà.

La discussion continue ailleurs

URL de rétrolien : https://www.binsp.net/?trackback/43

Fil des commentaires de ce billet

Page top