SSH

Il existe différentes possibilités d'accéder à un serveur à distance, mais toutes ne sont pas sécurisées.

Telnet et les commandes « r » de BSD ( « Berkeley Software Distribution »), permettent aux administrateurs d'exécuter des commandes sur des systèmes distants de manière simple, mais non sécurisée. Les informations qui transitent ne sont pas cryptées (y compris le couple login / password) et peuvent être accessibles à un individu malveillant (par exemple, en écoutant le trafic, en se faisant passer pour un ordinateur de confiance (IP réseau), ou en utilisant bien d'autres méthodes encore) qui n'aura plus qu'à étendre ses privilèges pour accéder en tant que « root ».

Le protocole SSH (« Secure Shell »), permet d'exécuter des commandes sur le shell d'un ordinateur distant, aussi bien sous Linux que sous Windows.

Les données sont cryptées, empêchant toute interprétation du trafic.

OpenSSH

OpenSSH est un outil Open Source, intégré dans le dépôt debian, permettant la connexion à distance avec le protocole SSH. Le trafic est crypté de bout en bout afin d'éliminer les écoutes. OpenSSH prend également en charge le détournement de connexion.

OpenSSH offre de nombreuses fonctionnalités telles que le tunneling sécurisé ainsi que plusieurs méthodes d'authentification.

La suite OpenSSH se compose des outils suivants :

Installation d'OpenSSH sous Debian 11 et connexion SSH à distance

MéthodeInstallation d'OpenSSH sous Debian 11

Par défaut, seul le système de base est installé sur Debian. Le serveur SSH n'est donc pas installé, mais il est disponible dans le dépôt Debian.

Voici les différentes étapes à suivre :

Étape 1 :

Par défaut, les droits d'utiliser les commandes en mode « sudo » (superutilisateur) ne sont pas installés sur Debian.

Vous allez commencer par les installer.

Connectez-vous en « root » et saisissez :

apt-get install sudo

Étape 2 :

Configurez les droits « sudo » pour votre utilisateur en modifiant le fichier « sudoers » :

nano /etc/sudoers

Étape 3 :

Mettez à jour votre système :

sudo apt update

Étape 4 :

Installez le serveur SSH :

sudo apt-get install openssh-server

Étape 5 :

Démarrez le service SSH :

sudo systemctl start ssh

Étape 6 :

Démarrez le « daemon SSHD » afin que le service soit activé automatiquement au démarrage du système :

sudo systemctl enable ssh

Étape 7 :

Vérifiez le statut du service SSH :

sudo systemctl status ssh

Étape 8 :

À moins d'avoir attribué une IP fixe à votre Debian, vérifiez l'adresse IP de votre serveur pour vous connecter à distance :

ip a

Le serveur OpenSSH est maintenant installé et activé. Vous allez pouvoir vous connecter à distance.

MéthodeConnexion SSH via PuTTY

Vous pouvez initier la connexion SSH via PuTTY.

Ouvrez PuTTY, indiquez l'adresse IP de votre serveur SSH. Par défaut le port SSH est 22.

Lors de la première connexion, un message d'alerte vous indique que l'hôte auquel vous souhaitez vous connecter n'est pas enregistré.

Vous pouvez soit abandonner la connexion, soit vous connecter juste une fois, soit accepter d'ajouter la clé pour les prochaines connexions.

Authentifiez-vous. Vous êtes maintenant connecté à votre serveur à distance.

Entrez votre nom d'utilisateur et votre mot de passe.

Vous pouvez maintenant administrer votre serveur à distance avec SSH.

MéthodeConnexion SSH via OpenSSH client

Étape 1 :

Ouvrez PowerShell en mode administrateur et entrez la commande suivante pour installer OpenSSH client :

Add-WindowsCapability –Online –Name OpenSSH.Client~~~~0.0.1.0

Étape 2 :

Vérifiez que l'installation se soit bien déroulée :

Get-WindowsCapability –Online –Name OpenSSH.Client~~~~0.0.1.0

Étape 3 :

Ouvrez l'invite de commande et saisissez la commande suivante pour vous connecter via SSH au serveur :

ssh utilisateur@adresseIPserveur

ssh cec@192.168.94.5



Configuration du service SSH

Comment sécuriser une connexion SSH

Le serveur SSH permet un accès à distance au serveur. C'est d'ailleurs souvent le principal mode d'accès pour l'administration. Autant dire que nombre d'individus malveillants seront tentés d'exploiter la moindre faille.

Outre la gestion des clés, voici quelques bonnes pratiques qui contribuent à la sécurisation de SSH :

Certaines attaques consistent tout simplement à tester pour un utilisateur un nombre incalculable de mots de passe jusqu'à trouver le bon. Supprimer l'accès avec le compte « root » permet d'une part d'éviter de laisser un accès total au serveur en cas d'attaque, puisque les autres utilisateurs ont des droits plus restreints, et d'augmenter la difficulté pour les pirates puisqu'ils doivent à la fois trouver un utilisateur valide (présent dans le fichier /etc/passwd) et le mot de passe qui y est associé, avec de plus des droits restreints.

Là encore, de nombreuses attaques ont lieu sur les adresses publiques (ne vous pensez pas à l'abri, les cibles ne sont pas forcément choisies en fonction du potentiel), des robots analysent des plages d'adresses et cherchent les ports ouverts afin d'exploiter toutes les vulnérabilités qu'ils pourraient trouver.

Définissez une politique permettant de refuser tout ce qui n'est pas explicitement autorisé. Concrètement, définissez les utilisateurs autorisés, tous ceux qui ne sont pas spécifiés se verront avoir un accès refusé pour se connecter en SSH.

Exemple de configuration

Étape 1 :

Configurez le fichier SSH :

sudo nano /etc/ssh/sshd_config

Étape 2 :

Après chaque modification sur le fichier de configuration, n'oubliez pas de relancer le service afin que les modifications soient prises en compte :

sudo systemctl restart sshd

Étape 3 :

Vérifiez les différents éléments de configuration, vous devriez avoir différents messages d'erreurs.

Port 5555 (il s'agit de la modification du port d'écoute)

ssh user@adresseIP

Ici, la bonne commande serait :

ssh –p5555 user@adresseIP

Où « 5555 » est à remplacer par le port que vous avez choisi.

Protocol 2 (les communications avec la version 1 de SSH est désormais refusée)

ssh -1 user@adresseIP

AllowUsers cec (seul l'utilisateur « cec » peut se connecter en SSH)

ssh –p5555 usernonautorisé@adresseIP

LoginGracetime 30 (la durée maximale d'authentification est de 30 secondes)

Si vous dépassez le temps imparti pour vous authentifier, la connexion sera fermée

PermitRootLogin no (le compte root ne peut plus se connecter)

ssh –p5555 root@adresseIP