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 :
Les opérations à distance sont effectuées à l'aide de SSH, SCPET, SFTP,
Gestion des clés avec SSH-ADD, ssh-KEYSIGN, SSH-KEYSCANET, SSH-KEYGEN,
Le côté service se compose de SSHD, SFTP-SERVERET, SSH-AGENT.
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 :
Désactiver l'accès SSH avec le compte « root ». Pour rappel, dans toutes les distributions Linux, un utilisateur est toujours présent et détient tous les droits, il s'agit du compte « root ».
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.
Configurer la connexion exclusive des clients avec la version 2 de SSH afin d'empêcher la communication avec des clients utilisant la version 1 du protocole (problèmes de sécurité importants sur cette première version).
Modifier le port d'écoute par défaut (port 22), et éviter les ports dits « réservés » par des protocoles et applications connues (les « well known port »).
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.
Limiter les utilisateurs pouvant se connecter au serveur en SSH.
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.
Définissez des mots de passe forts pour les utilisateurs pouvant se connecter via SSH et désactivez la connexion avec des comptes sans mot de passe.
Diminuer la durée maximale d'authentification. Par défaut, elle est fixée à 2 minutes, ce qui est bien plus que nécessaire.
Vérifier les logs SSH.
Les logs SSH ( /var/log/auth.log) permettent d'avoir une vue détaillée des différentes connexions. Son analyse régulière permet de s'assurer de l'absence d'anomalies (plusieurs connexions SSH simultanées pour un même utilisateur, tentatives de connexions échouées, durée d'authentification dépassée, etc.).
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