Utiliser un bastion SSH

Plop,

Je possède un serveur de virtualisation dans un DC (data center) sur lequel j’ai… plusieurs machines virtuelles ! Bon évidement, j’ai un gentil firewall devant tout ça mais surtout qu’une seule ip publique.
Pour attaquer mes machines, je peux donc rediriger un port vers chaque machine existante, mais en plus d’être fastidieux cela m’oblige à créer sur chaque machine de véritable forteresse pour les protéger du cruel monde extérieur. Et comme cela demande beaucoup de temps à mettre en place et à maintenir et que nous sommes tous un peu fainéants, nous allons faire autrement.
Nous allons utiliser un bastion ssh. Késako ? C’est une machine accessible depuis l’extérieur en ssh (si si !) et ce sera la seule ! Il nous est ainsi plus facile de mettre en place un système de sécurité et de le maintenir.
Bon ça, c’est pour la partie sécurité. En pratique, cela nous oblige à établir 2 connexions ssh, la première au bastion et la seconde à la machine cible et c’est chiant.

Le but de cet article est de proposer une solution qui va rendre cette double connexion transparente pour l’utilisateur. Un des premiers réflexes de sécurité sur les bastions est de désactiver la connexion ssh par identifiant/mdp et de l’autoriser uniquement par clé ssh. C’est un prérequis pour la suite de l’article.

Configuration du pc utilisateur : on va commencer par modifier notre configuration ssh et pour ne pas pourrir le fichier de conf principal (~.ssh/config), nous allons juste l’éditer et ajouter une ligne lui demandant de charger notre fichier de conf personnalisé.
➤ nano -c .ssh/config
On ajoute ensuite la fameuse ligne en haut du fichier :
Include ~/.ssh/perso
Puis on crée notre fichier de configuration personnalisé :
➤ nano -c .ssh/perso
Dans ce fichier nous allons retrouver 2 blocs distincts: le premier pour renseigner notre bastion et le second pour gérer le rebond vers les machines cibles.
Host bastion # nom donné à notre bastion
    User Bizbi # utilisateur utilisé pour ce connecter au bastion
    HostName mondomaine.fr # le nom de domaine du bastion ou son ip publique
    Port 2222 # port d'attaque du bastion si différent du 22
    ForwardAgent Yes # pour continuer à pousser notre clé ssh

Host *.dc
    ProxyJump bastion # machine qui sert au rebond (le bastion)
    ForwardAgent Yes
    User Bizbi # utilisateur pour la machine cible
Comme  vous pouvez le voir, mes machines cibles seront identifiées par ssh avec l’extension en .dc, l’étoile servant de joker. C’est pratique car, comme les petits malins le savent déjà, cette extension n’est pas officielle et je peux donc l’utiliser sans me créer de problème. Ainsi dans mon environnement en data center j’ai un serveur dns qui est capable de résoudre cette extension et donc de faciliter les échanges entre mes machines ou plutôt entre moi et mes machines ^^
Pour en revenir à “Host *.dc“, cela veut qu’à chaque fois que je tape quelque chose comme “ssh web.dc“, mon pc regarde les règles en vigueur pour le .dc et comprend qu’il doit passer par une machine de rebond appelée “bastion”. Ça tombe bien ! On l’a renseigné dans le bloc précédent avec toutes les infos nécessaires (ip, port, user).
Du coup, mon pc va se connecter en premier au bastion sans que j’ai besoin de taper de mot de passe grâce à ma clé ssh puis, automatiquement, il va initialiser une connexion ssh vers web.dc (le nom de domaine sera résolu par le serveur dns local) où mon mdp me sera demandé si je n’ai pas, au préalable, pousser ma clé ssh.
L’étape du bastion est totalement automatique et invisible pour l’utilisateur qui aura l’impression de se connecter directement à la machine cible.

Attention cependant ! Si ce système facilite la vie de l’utilisateur, la sécurité des machines derrière le bastion est bien évidement dépendante de la sécurité du bastion lui-même.

Pour marque-pages : Permaliens.

Une réponse à Utiliser un bastion SSH

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *