Table des matières


LINUX

INSTALLATION DE SSH

INSTALLATION

L'installation de SSH varie légèrement selon la distribution Linux que vous utilisez. Voici les étapes pour les distributions les plus courantes.

Sur Debian et Ubuntu

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.

Sur Fedora et CentOS

Ouvrez votre terminal et exécutez la commande suivante pour installer le serveur SSH :

sudo dnf install openssh-server fail2ban

Sur OpenSuse

Ouvrez votre terminal et exécutez la commande suivante pour installer le serveur SSH :

sudo zypper update
sudo zypper install openssh-server fail2ban

Gestion du service sshd

Gestion des services

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

Configuration de ssh

Durcissement SSH

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.

Accès au Fichier de Configuration

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ù :

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 :

  1. 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.
  1. 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:

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é.

Pour changer la passe phrase de la clé:

#ssh-keygen -p -f /path_to/key

Pour désactiver la demande de la passe phrase:

#eval "$(ssh-agent -s)"
#ssh-add ~/.ssh/id_ed25519

Génération d'une clé

IT-CONNECT

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é.

DokuWiki Appliance - Powered by TurnKey Linux