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 ==== Paramètres Importants à Configurer ==== 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 === Vérification de l'application des paramètres === 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 ==== Sécurisation Avancée de SSH ==== 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. === Configuration du Pare-feu avec UFW (Uncomplicated Firewall) === UFW est un outil de gestion de pare-feu convivial pour les systèmes basés sur Debian et Ubuntu. == Activation de UFW == Activez UFW avec la commande suivante : sudo ufw enable == Configuration des Règles pour SSH == 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. == Application des Règles == Pour appliquer les modifications, redémarrez UFW : sudo ufw reload === Configuration du Pare-feu avec firewalld === firewalld est un outil de gestion de pare-feu flexible utilisé sur les distributions Linux à base de Red Hat. == Règles de Base pour SSH == 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 ==== Configuration de fail2ban ==== === Configuration de Base de Fail2Ban === 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ù : * ignoreip : Adresses IP à ignorer. * bantime : Durée du bannissement. * findtime : Intervalle de temps pendant lequel les échecs sont comptés. * maxretry : Nombre de tentatives de connexion échouées avant bannissement. === Démarrage et Test de Fail2Ban === 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: ==== Connexion au Serveur SSH ==== 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. === Connexion Basique avec mot de passe === 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 === Utilisation de la Clé Publique pour l'Authentification === 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 : - Ed25519 : C'est un type de clé basé sur l'algorithme de signature numérique EdDSA utilisant Curve25519. Il est reconnu pour sa performance et sa sécurité robuste, tout en ayant une taille de clé relativement petite, ce qui le rend rapide. - RSA : Les clés RSA restent largement utilisées et sont considérées comme sûres avec une longueur de clé suffisante. Actuellement, une clé RSA devrait être d'au moins 2048 bits, bien que 4096 bits soient souvent recommandés pour une sécurité accrue. Voici une liste des paramètres les plus importants de la commande ssh-keygen: * -t : Spécifie le type de clé à générer (par exemple, rsa, dsa, ecdsa, ed25519). * -b : Définit le nombre de bits dans la clé, utilisé pour augmenter la sécurité de la clé (par exemple, 2048, 4096). * -C : Permet d'ajouter un commentaire à la clé, généralement utilisé pour l'adresse e-mail ou l'identifiant de l'utilisateur. * -f : Spécifie le nom du fichier dans lequel enregistrer la clé générée. * -N : Permet de définir une nouvelle passphrase (mot de passe) pour la clé. * -p : Change la passphrase d'une clé privée existante. * -q : Mode silencieux, ne génère pas de sorties non nécessaires. * -y : Lit une clé privée et produit une clé publique correspondante. 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é. ==== Génération d'une clé ==== 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. === Copie de la Clé Publique sur le Serveur === 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. === Connexion avec la Clé Publique === 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é.