
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ètre | Valeur |
Nom | Bastion SSH |
Adresse IP | 192.168.10.5 |
Système d’exploitation | Debian 12 |
Processeur | 1 vCPU |
Mémoire vive | 1024 Mo |
Disque dur | 10 Go |
Services installés | OpenSSH, Fail2ban, UFW |
Rôle | Bastion 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

Installation Openssh-server :
- sudo apt install openssh-server

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


- 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

- 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

- 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 »

- 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

Sur mon Serveur Bastion :
- sudo nano /home/tssr_admin/.ssh/authorized_keys
J’ai collé la clé publique et enregistré.

- Test de la connexion SSH
Depuis la machine cliente :

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

Copie du fichier de configuration :
- sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local

Configuration dans /etc/fail2ban/jail.local
:
- sudo nano /etc/fail2ban/jail.local

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

Et pour obtenir les détails de la jail SSH :
- sudo fail2ban-client status sshd

- Test de mon fail2ban
Sur mon client :
Je vais tenter une connexion SSH sur mon serveur bastion en utilisant un mauvais mot de passe :

- Vérification de bannissement :
- sudo fail2ban-client status sshd

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

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

- 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:
Laisser un commentaire