Ceci est une ancienne révision du document !
L'installation de SSH varie légèrement selon la distribution Linux que vous utilisez. Voici les étapes pour les distributions les plus courantes.
Ouvrez votre terminal et exécutez la commande suivante pour installer le serveur SSH :
sudo apt update sudo apt install openssh-server fail2ban
Une fois l'installation terminée, le service SSH devrait démarrer automatiquement.
Ouvrez votre terminal et exécutez la commande suivante pour installer le serveur SSH :
sudo dnf install openssh-server fail2ban
Ouvrez votre terminal et exécutez la commande suivante pour installer le serveur SSH :
sudo zypper update sudo zypper install openssh-server fail2ban
Démarrer et Activer le Service SSH : Une fois installé, vous devez démarrer le service SSH et l'activer pour qu'il démarre automatiquement lors du démarrage du système. Utilisez les commandes suivantes :
sudo systemctl start sshd sudo systemctl enable sshd
Vérifier le Statut du Service : Pour vous assurer que le service SSH fonctionne correctement, vérifiez son statut avec :
sudo systemctl status sshd
Après avoir installé SSH, il est important de le configurer correctement pour assurer une sécurité optimale, c'est ce qu'on appelle le durcissement. Voici les étapes pour configurer SSH sur votre serveur Linux.
Le fichier de configuration principal pour SSH est /etc/ssh/sshd_config.
ASTUCE
Par contre, une meilleure pratique est de créer un fichier dans le répertoire /etc/ssh/sshd_config.d.
L'utilisation d'une structure de répertoires *.d pour la configuration de SSHD offre plusieurs avantages, notamment en termes de modularité, de maintenabilité et d'évolutivité :
Simplicité de Gestion : Les configurations sont plus faciles à gérer et à comprendre car elles sont réparties en fichiers plus petits et plus ciblés. Personnalisation Facile : Permet d'ajouter, de modifier ou de supprimer des paramètres spécifiques sans avoir à parcourir un long fichier de configuration.
Moins de Conflits lors des Mises à Jour : Diminue le risque de conflits lors des mises à jour du package SSH, car le fichier principal sshd_config est moins susceptible d'être modifié directement. Facilité de Suivi : Les changements individuels sont plus faciles à suivre et à documenter lorsqu'ils sont isolés dans des fichiers séparés.
Déploiement Automatisé : Simplifie le processus de réplication des configurations sur plusieurs systèmes, ce qui est particulièrement utile dans les environnements DevOps et pour la gestion centralisée des configurations. Adaptabilité : Permet une adaptation rapide aux nouvelles exigences ou changements, en ajoutant ou en modifiant simplement un fichier spécifique sans perturber l'ensemble de la configuration.
Pour le créez, ouvrez le avec un éditeur de texte en tant que root, par exemple créer:
sudo vi /etc/ssh/sshd_config.d/hardening.conf
Pour des raisons de sécurité, il est recommandé de désactiver l'accès SSH direct pour l'utilisateur root. Ajoutez la ligne PermitRootLogin no.
L'authentification par clé publique est plus sécurisée que l'authentification par mot de passe. Ajoutez la ligne PubKeyAuthentication yes.
Ce qui donne :
PermitRootLogin no PubkeyAuthentication yes
Après avoir effectué les modifications, sauvegardez le fichier et quittez l'éditeur de texte. Pour que les changements prennent effet, redémarrez le service SSH :
sudo systemctl reload sshd
Pour afficher les paramètres actifs, il suffit d'utiliser la commande suivante :
sudo sshd- T port 22 addressfamily any listenaddress [::]:22 listenaddress 0.0.0.0:22 usepam yes logingracetime 120 x11displayoffset 10 maxauthtries 5 maxsessions 10 clientaliveinterval 0 clientalivecountmax 2 ...
permitopen any permitlisten any permituserenvironment no pubkeyauthoptions none
Après avoir configuré le service SSH, il est essentiel d'adopter des mesures de sécurité avancées pour renforcer la protection de votre serveur. Voici comment utiliser les pare-feu firewalld ou ufw pour sécuriser votre serveur SSH.
UFW est un outil de gestion de pare-feu convivial pour les systèmes basés sur Debian et Ubuntu.
Activez UFW avec la commande suivante :
sudo ufw enable
Autorisez les connexions SSH (sur le port 22 par défaut ou un autre si vous avez modifié le port SSH) :
sudo ufw allow 22/tcp
Ou, si vous avez changé le port SSH :
sudo ufw allow [port]/tcp
Ou si vous voulez restreindre l'accès à des adresses IP spécifiques :
sudo ufw allow from [adresse_ip] to any port [port]
Remplacez [adresse_ip] par l'adresse IP spécifique. Répétez cette commande pour chaque adresse IP autorisée.
Pour appliquer les modifications, redémarrez UFW :
sudo ufw reload
firewalld est un outil de gestion de pare-feu flexible utilisé sur les distributions Linux à base de Red Hat.
Pour autoriser les connexions SSH (sur le port 22 par défaut), utilisez :
sudo firewall-cmd --zone=public --add-service=ssh --permanent
Ou si vous avez changé le port SSH :
sudo firewall-cmd --zone=public --add-port=[port]/tcp --permanent
Pour appliquer cette régle :
sudo firewall-cmd --reload
Il est recommandé de ne pas modifier directement le fichier de configuration par défaut jail.conf de Fail2Ban, car il peut être écrasé lors des mises à jour. Créez plutôt un fichier jail.local pour vos configurations personnalisées :
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local sudo nano /etc/fail2ban/jail.local
Ajoutez les lignes suivantes en adaptant à vos besoins dans la section [sshd]:
[sshd] enabled = true ignoreip = 127.0.0.1 192.168.1.0/24 bantime = 180 maxretry = 3
Où :
Après avoir configuré Fail2Ban, redémarrez le service pour appliquer les changements :
sudo systemctl enable fail2ban sudo systemctl start fail2ban
Vérifier le Statut de Fail2Ban :
Utilisez la commande suivante pour vérifier que Fail2Ban fonctionne correctement :
sudo fail2ban-client status Status |- Number of jail: 1 `- Jail list: sshd
Pour voir les détails de la prison SSH, utilisez :
sudo fail2ban-client status sshd Status for the jail: sshd |- Filter | |- Currently failed: 0 | |- Total failed: 3 | `- File list: /var/log/auth.log `- Actions |- Currently banned: 0 |- Total banned: 1 `- Banned IP list:
Une fois SSH installé et configuré sur votre serveur, la prochaine étape est de se connecter à ce serveur à partir d'un client SSH. Voici comment procéder.
Pour établir une connexion SSH de base, utilisez la commande suivante dans le terminal de votre client (remplacez utilisateur, adresse_ip et port par vos propres valeurs) :
ssh utilisateur@adresse_ip -p port
Par exemple :
ssh bob@192.168.1.10 -p 22
Pour une sécurité optimale dans SSH, les types de clés recommandés ont évolué au fil du temps avec l'avancement de la technologie cryptographique. Actuellement, les types de clés les plus sécurisés sont :
Voici une liste des paramètres les plus importants de la commande ssh-keygen:
Il est important de noter que d'autres types de clés comme DSA et ECDSA sont également disponibles, mais Ed25519 et RSA avec une longueur de clé suffisante sont généralement privilégiés pour une meilleure sécurité.
Sur votre machine cliente, générez une paire de clés (publique et privée) en utilisant :
ssh-keygen -t ed25519 -C "your_email@example.com" -N ""
Suivez les instructions à l'écran pour spécifier un emplacement de fichier et créer éventuellement un mot de passe pour la clé. Si vous indiquez un mot de passe, notez-le soigneusement, car vous en aurez besoin à chaque connexion.
Pour copier votre clé publique sur le serveur, utilisez la commande ssh-copy-id :
ssh-copy-id -i ~/.ssh/id_ed25519.pub utilisateur@adresse_ip -p port
Cela ajoutera votre clé publique au fichier ~/.ssh/authorized_keys de l'utilisateur sur le serveur.
Maintenant, lorsque vous vous connectez via SSH, le serveur vérifiera votre clé publique. Si elle correspond à la clé privée sur votre client, vous serez connecté sans avoir besoin d'un mot de passe.
ASTUCE
À présent que vous avez copié votre clé sur le serveur distant, vous pouvez désactiver la connexion par mot de passe sur le serveur. Pour cela, procédez comme précédemment en changeant la ligne PasswordAuthentication yes en PasswordAuthentication no. Redémarrer le service une fois terminé.