Serveur Bastion SSH

Présentation

Dans le cadre de la sécurisation des accès à distance de l’infrastructure, j’ai mis en place un serveur Bastion SSH sous Debian 12. Ce serveur permet de centraliser et sécuriser les connexions SSH aux équipements et serveurs de l’entreprise.

Ce serveur Bastion est installé sur une machine virtuelle dédiée et protège les accès SSH grâce à un durcissement de la configuration du service SSH, l’installation de Fail2ban pour prévenir les attaques par force brute et l’utilisation du pare-feu UFW pour filtrer les connexions entrantes.

  • Caractéristiques techniques du serveur Bastion :
ParamètreValeur
NomBastion SSH
Adresse IP192.168.10.5
Système d’exploitationDebian 12
Processeur1 vCPU
Mémoire vive1024 Mo
Disque dur10 Go
Services installésOpenSSH, Fail2ban, UFW
RôleBastion SSH sécurisé pour les connexions distantes
  • Objectifs

  • Centraliser les connexions SSH a l’infrastructure.
  • Sécuriser les accès distants via un serveur dédié.
  • Mettre en place un filtrage des connexions par adresse IP.
  • Protéger les accès SSH contre les tentatives de connexion par force brute.

[Client SSH] –> [Bastion SSH] –> [Serveurs LAN]

  • Installation et configuration des services de OpenSSH

Vérification qu’il est bien installé :

  • sudo apt update && sudo apt upgrade -y
  • sudo systemctl status ssh
image-44 Serveur Bastion SSH

Installation Openssh-server :

  • sudo apt install openssh-server
image-45 Serveur Bastion SSH

Modification de la configuration :

  • sudo nano /etc/ssh/sshd_config

Durcissement de la configuration SSH :

Désactivation de la connexion SSH en root.

Désactivation de l’authentification par mot de passe.

Limitation des connexions SSH à l’utilisateur administrateur désigné.

  • PermitRootLogin no
  • PasswordAuthentication no
  • ChallengeResponseAuthentication no
  • AllowUsers tssr_admin
image-46 Serveur Bastion SSH
image-47 Serveur Bastion SSH
  • Création d’un utilisateur SSH sécurisé avec clé publique

Afin de renforcer la sécurité du serveur Bastion SSH et conformément aux bonnes pratiques, j’ai créé un utilisateur dédié (tssr_admin) pour l’administration à distance via clé SSH.

  • sudo adduser tssr_admin
image-49 Serveur Bastion SSH
  • Créer le dossier .ssh pour mon utilisateur tssr_admin :
  • sudo mkdir /home/tssr_admin/.ssh
  • sudo chmod 700 /home/tssr_admin/.ssh
  • sudo chown tssr_admin:tssr_admin /home/tssr_admin/.ssh
image-50 Serveur Bastion SSH
  • Génération de la clé SSH sur la machine cliente

Sur mon poste client (Linux ou Windows via WSL) :

  • ssh-keygen -t rsa -b 4096 -C « clé tssr_admin »
image-51 Serveur Bastion SSH
  • Ajout de la clé publique sur le serveur Bastion

Je vaisutiliser la commande pour ajouter ma clé directement manuellement sur mon serveur Bastion :

Sur ma VM Client :

  • cat ~/.ssh/id_rsa.pub
image-52 Serveur Bastion SSH

Sur mon Serveur Bastion :

  • sudo nano /home/tssr_admin/.ssh/authorized_keys

J’ai collé la clé publique et enregistré.

image-53 Serveur Bastion SSH
  • Test de la connexion SSH

Depuis la machine cliente :

image-54 Serveur Bastion SSH

Grâce à cette configuration :

  • Seul l’utilisateur tssr_admin peut se connecter en SSH.
  • L’authentification par mot de passe est désactivée, seules les connexions via clé SSH sont possibles.
  • L’utilisateur root est interdit de connexion SSH, limitant ainsi les attaques directes.

Cette politique de durcissement SSH permet de renforcer considérablement la sécurité des accès à distance sur le serveur Bastion.

  • Installation et configuration de Fail2Ban

Afin de renforcer la sécurité de mon serveur Bastion SSH sous Debian 12, j’ai mis en place deux outils complémentaires :

Fail2ban : pour protéger le serveur contre les tentatives de connexion SSH par force brute.

  • sudo apt install fail2ban
image-55 Serveur Bastion SSH

Copie du fichier de configuration :

  • sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
image-56 Serveur Bastion SSH

Configuration dans /etc/fail2ban/jail.local :

  • sudo nano /etc/fail2ban/jail.local
image-57 Serveur Bastion SSH

Ici je retire logpath car avec backend = systemd, Fail2ban va lire directement via journalctl.

Après configuration, j’ai redémarré le service et vérifié son état

  • sudo systemctl restart fail2ban
  • sudo systemctl enable fail2ban
  • sudo systemctl status fail2ban
image-58 Serveur Bastion SSH

Et pour obtenir les détails de la jail SSH :

  • sudo fail2ban-client status sshd
image-59 Serveur Bastion SSH
  • Test de mon fail2ban

Sur mon client :

Je vais tenter une connexion SSH sur mon serveur bastion en utilisant un mauvais mot de passe :

image-60 Serveur Bastion SSH
  • Vérification de bannissement :
  • sudo fail2ban-client status sshd
image-61 Serveur Bastion SSH

On peut voir que mon Fail2Ban à bien banni mon client.

  • Installation d’UFW

J’ai installé UFW via la commande suivante :

  • sudo apt-get install ufw -y
image-62 Serveur Bastion SSH

Je me suis aperçu que mon UFW était déjà installer.

  • Configuration d’UFW

J’ai ensuite configuré les règles suivantes :

Autoriser les connexions SSH

  • sudo ufw allow ssh

Refuser toutes les connexions entrantes par défaut

  • sudo ufw default deny incoming

Autoriser les connexions sortantes

  • sudo ufw default allow outgoing

Activer le pare-feu

  • sudo ufw enable

Vérification du statut et des règles actives

  • sudo ufw status verbose
image-63 Serveur Bastion SSH
  • Conclusion

Grâce à la mise en place de Fail2ban et UFW sur mon serveur Bastion SSH :

  • Les tentatives de connexion SSH par force brute sont détectées et bloquées automatiquement.
  • Les ports ouverts sur le serveur sont limités strictement à ceux nécessaires au fonctionnement (ici uniquement le port SSH).

Cela permet de réduire considérablement la surface d’attaque et d’assurer un contrôle efficace des accès à distance.

  • Tests réalisés

  • Test de connexion SSH depuis une machine du LAN : ✅
  • Test de refus de connexion root : ✅
  • Test de connexion par mot de passe désactivée : ✅
  • Test de bannissement via Fail2ban après plusieurs tentatives : ✅
  • Vérification du filtrage UFW : ✅

Share this content:

Je m'appelle Nicolas, j’ai 38 ans et je vis dans le département de l’Ain. Actuellement en reconversion professionnelle dans le domaine de l’informatique, je poursuis une formation de Technicien Systèmes et Réseaux (TSSR) afin de transformer ma passion en métier. L'informatique a toujours occupé une place importante dans ma vie, et aujourd'hui je m'investis pleinement pour en faire mon avenir professionnel. Mon objectif : devenir Administrateur Réseau, en obtenant plusieurs certifications reconnues dans le secteur. Ce site présente les projets réalisés dans le cadre de ma formation, et reflète mon engagement et ma progression dans ce domaine passionnant.

Laisser un commentaire