Utilisation De SSH

SSH est un outils qui permet d’accéder a un shell distant de façon sécurisé mais pas que.

Installation du serveur

apt install openssh-server

Les fichiers de configuration pour le mode client et serveur sont disponible dans /etc/ssh/.

La configuration par défaut du serveur fait que le service est en écoute sur le port 22.

Connexion

Selon le moyen d’accès à la machine distante.

ssh user@ip
ssh user@hostname
ssh user@ma.machine.distante

On peut également lancer des applications en mode graphique… si on dispose d’un mode graphique sur le poste client et sur le poste serveur.

L’interface du serveur sera visible sur le post client. biensur toute les action réalisé sur l’interface, le seront sur le post serveur.

ssh -X user@hostname

c’est l’option -X qui permet cela.

Configuration client

Dans le répertoire ~/.ssh on peu creer un fichier de configuration du nom de config.

Ce fichier va surcharger la configuration par défaut du client présente dans /etc/ssh/ssh_config.

Définir une configuration pour un host

Dans le fichier ~/.ssh/config :

host serveur1
  hostname 192.168.20.2 # au choix: ip, fqdn, 
  user mon_user
  port 22
  compression yes
  IdentityFile ~/.ssh/id_ed25519

maintenir une connexion vers un host pour accélérer les connexions suivante

Dans le fichier ~/.ssh/config on va ajouter les lignes suivantes :

host * 
# Gestion automatique des sessions
  ControlMaster auto
# stockage des sessions : Le répertoire qui stockera le 'bus' de données
  ControlPath ~/.ssh/mux/%r@%h:%p
# Persitance de session 10 minutes
  ControlPersist 10m

En terme de sécurité, cette fonction peu être dangereuse. En effet, il n’est plus necessaire d’entré sa clef pour se connecter a un bus ouvert…

Utiliser un host comme proxy

On veut se connecter à une machine serveur 2.

  • serveur2 n’est pas accessible depuis internet.
  • La machine serveur1 est sur le même réseau et peut voir seveur2.
  • On va donc utiliser serveur1 pour accéder à serveur2.

La configuration est la suivante :

host serveur2
  hostname 192.168.20.6 # au choix: ip, fqdn, 
  user mon_user
  port 22
  compression yes
  IdentityFile ~/.ssh/id_ed25519
  ProxyJump serveur1 # avec cette commande, on précise la machine via laquel on se connecte.

Sécurisation

Connexion par clef

On génère une clef avec la commande suivante :

ssh-keygen

Ce qui va généré par défaut un couple de clefs : id_dsa la clef privé et id_dsa.pub la clef publique.

La commande suivante, sert à l’export la clef publique sur une machine distance afin de réaliser à l’avenir une connexion par la clef et plus par mot de passe.

ssh-copy-id user@host

On vous demandera alors le mot de passe lié au login et la clef publique sera copié.

La clef publique est inséré dans le fichier ~/.ssh/authorized_keys à la suite de celle déjà présente.

point important :

  • Il ne faut jamais partager ça clef privé avec qui que ce soit. La personne qui aurait votre clef, si elle n’est pas proteger par un mot de passe, pourrais usurper vos accès sur les machines ou la clef publique est déployé.
  • si possible on protège sa clef privé avec un mot de passe (ssh-agent est un démon qui gère les mot de passe de clef de façon a ne pas les taper 50 fois par session)

Changer le port d’écoute par défaut

ça ne change rien, si l’attaquant prend sont temps pour ses tests, il saura déterminer a quoi sert un port ouvert mais ça aura le mérite de limiter les attaques configuré sur port par défaut. Le port 22 étant très solicité sur le net…

dans le fichier /etc/ssh/sshd_config, on trouve la ligne #Port 22 qu’il faut décommenter et changer.

On redémarre ensuite le service avec la comande suivante :

systemctl restart sshd

Il faut savoir qu’en redémarrant le service, la connexion en cour ne sera pas interromppu.

Il ne faut pas la couper avant d’avoir tenter une connexion avec la nouvelle configuration… ce serait dommage de se retrouver à la porte de son serveur.

fail2ban

Fail2ban est un outil qui va scruter les logs d’un service afin de detecter les tentatives de connection infructueuse. Souvent elle sont le signe d’attaque par force brute (Brute force) ou l’attaquant tente de se connecter a un service et essayant soit toutes les permutations possible, soit une liste prédéfini de login et de mot de passe.

apt install fail2ban

Plus d’information sur le wiki ubuntu-fr.

Debug

Les log du serveur sshd sont disponible dans /var/log/auth.log on peut également voir des traces sur /var/log/syslog.

Coté client l’option -vvvvv passe les log au niveau debug ce qui donnera un déroulé des étapes de négociation d’une connexion ssh.

Droit sur les répertoires

ssh refuse de fonctionner si les droits sur le répertoire parent du répertoire .ssh donne la fonction o+w soit l’écriture au autres ;).

Donc le plus simple reste d’être le seul a avoir un accès en lecture/écriture sur ses dossiers perso.

nithir [drwx------]
└── .ssh [drwx------]