Administration sécurisée à distance d’Ubuntu Server avec ssh

Secure Shell (ssh) est à la fois un programme informatique et un protocole de communication sécurisé permettant entre autre de se connecter à un ordinateur a distance.

1.Introduction

1.1.Pourquoi utiliser ssh et pas telnet

Le protocole Telnet est simple mais dangereux parce que les données transitent en clair sur le réseau identifiant et mot de passe compris. Comme il est impossible d’empêcher quelqu’un d’intercepter les données qui transitent à travers internet, il faut les crypter. Ssh, lui, utilise la cryptographie asymétrique. Le serveur et le client disposent de deux clefs : une clé publique et une clef privée, où seule la clé publique circule librement sur le réseau tandis que la clef privée reste secrète.

2.Installer Openssh sur notre Serveur Ubuntu

Il faut tout simplement installer le paquet openssh-server :

sudo apt-get install openssh-server

Lors de l’installation, vous devriez voir ces informations s’afficher :

Creating ssh2 RSA key; this may take some time …
Creating ssh2 DSA key; this may take some time …
* Restarting OpenBSD Secure Shell server sshd [ OK ]

Comme vous pouvez le remarquer ssh peut travailler avec les 2 algorithmes de cryptage asymétrique RSA et DSA. Normalement le démon sshd est lancé à la fin de l’installation

3.Configurer le serveur Openssh

Le fichier de configuration d’Openssh se trouve dans le répertoire /etc/ssh et se nomme sshd_config.
Port 22
Signifie que le serveur SSH écoute sur le port 22, qui est le port par défaut de SSH. Vous pouvez le faire écouter sur un autre port en changeant cette ligne. Vous pouvez aussi le faire écouter sur plusieurs ports à la fois en rajoutant des lignes similaires.

PermitRootLogin no
Signifie que vous ne pouvez pas vous connecter en tant qu’utilisateur root par SSH. Cela évitera des déconvenues dans le cas d’un vol d’ordinateur ou un simple départ d’un collaborateur.

X11Forwarding yes
Signifie que vous allez pouvoir travailler en déport d’affichage par SSH. Ce sera expliqué plus tard, dans le Chapitre 42.

3.1.Application des modifications

il faut redémarrer le service sshd, pour cela il suffit de lancer la commande suivante

sudo service ssh restart

3.1.Un peu de sécurité

D’autres paramètres permettent de sécuriser un peu plus les connexions à vos serveurs Ubuntu :

AllowGroups

Par exemple lors d’un départ d’un collaborateur, se celui-ci a précédemment défini une authentification par clé publique pour se connecter au serveur, la simple désactivation ou le verrouillage de son compte utilisateur sur le serveur ne l’empêchera pas de se connecter à distance. Donc lors d’un départ soit pensez à vider les répertoires utilisateurs du dossier .ssh

Une autre solution consiste à définir un groupe autorisé à se connecter via ssh à votre serveur et à ajouter le paramètre suivant :

AllowGroups sshusers

Puis ajoutez vos utilisateurs autorisés au groupe sshusers. Par la suite lors d’un d’un départ il vous suffira de retirer ce user de ce groupe.

PasswordAuthentication no
UsePAM no

Il est possible de restreindre la connexion aux seules clients possédant une clé publique déclarée sur le serveur. Pour  cela il suffit de demander au client de créer une clé pour ensuite l’intégrer à votre serveur.

4.Utilisation du client ssh

Comme vu plus haut, vous pouvez utiliser deux modes d’authentification pour vous connecter au serveur :

  • Authentification par mot de passe.
  • Authentification par clé publique et privée du client.

4.1.L’authentification par mot de passe

Nous avons pour le moment vu uniquement l’authentification par mot de passe (le serveur vous demandait votre mot de passe).

4.2.L’authentification par clé publique et privée du client

C’est le client qui va générer une clé publique et une clé privée via la commande :

ssh-keygen -t rsa

Ensuite il faut fournir le contenu du fichier .ssh/id_rsa.pub à l’administrateur du serveur qui l’ajoutera ~/.ssh/authorized_keys du compte utilisateur utilisé pour se connecter au serveur.

Une autre manière d’opérer est d’utiliser la commande ssh-copy-id pour envoyer la clé publique sur le serveur :

ssh-copy-id -i ~/.ssh/id_rsa.pub [port] login@ip

Cette commande vous demandera votre mot de passe de connexion sur le serveur pour la dernière. Lors de la prochaine connexion, seule la paraphrase, si elle n’est pas vide, sera demandée.

4.3. Utilisation de la commande client ssh

La commande cliente ssh est assez simple à utiliser. Il suffit d’indiquer le port, le user et le nom ou l’adresse du serveur ssh.

ssh [port] user@id

4.4.L’agent ssh

Pour éviter de devoir rentrer la paraphase (si elle n’est pas vide) à chaque connexion, il est possible de lancer le daemon ssh sur le poste client. Cet agent va collecter votre clé privé et la garder au chaud durant toute la durée de votre session. Pour le lancer, il suffit de lancer la commande ssh-add qui vous demandera votre paraphrase et ensuite connectez vous au serveur autant de fois que nécessaire.

4.5.Copie de fichiers sécurisée

Le protocole SCP permet de transférer des données en utilisant le protocole SSH pour l’authenticiation du client.
La forme la plus de cette commande est la suivante :

scp Fichier login@serveur:Chemin