Bastion SSH

Le Bastion SSH Reemo est un environnement durci, exposé de manière sécurisée via une session Reemo directement dans le navigateur.

Ce guide couvre d’abord le déploiement (côté administrateur), puis l’usage au quotidien (côté utilisateur final).

Configuration et déploiement

Le bastion se déploie via un template Reemo (reemo-template.json) importé dans le portail.

Informations de l’image

  • Image :

registry.reemo.io/reemosbssh:latest
  • Service interne : SSH Bastion (Rust)

Définir la cible SSH

Champ

Description

Target Host IP

Adresse de la machine distante (FQDN accepté). Obligatoire.

Target Port

Port SSH cible. Définie par défaut sur 22.

Choisir la méthode d’authentification

Le sélecteur Auth Method pilote le mécanisme utilisé par le bastion pour s’authentifier sur la cible distante.

Option

Champs supplémentaires

Comportement

Vault (défaut)

Le bastion résout le secret au démarrage via mTLS contre le portail. Le Vault gère nativement tous les types de secrets (mot de passe, clé SSH, clé + passphrase). Rien n’est écrit sur le disque. Méthode à privilégier.

SSH Private Key

SSH Username + SSH Private Key (PEM)

Authentification par clé privée. Coller le PEM complet, en-têtes BEGIN/END compris. La clé reste en mémoire dans le processus. À éviter.

Password

SSH Username + SSH Password

Authentification par mot de passe. Le mot de passe reste en variable d’environnement du processus. À éviter.

Tip

Prompt interactif (JIT) : Si la méthode d’authentification choisie est Password et que le champ mot de passe (ou le couple utilisateur/mot de passe) est laissé vide dans le formulaire, le bastion les demandera dynamiquement et silencieusement à l’utilisateur final dans le terminal.

Sélectionner le mode opératoire

Le sélecteur Operation Mode détermine si le bastion applique des restrictions ou s’il agit en relais transparent.

Option

Comportement

Secure Mode (Filtering active) (défaut)

Chaque commande passe par le moteur d’analyse syntaxique. Édition de ligne locale, historique et contrôle des politiques de sécurité.

Bypass Mode (No filtering)

Le bastion relaie en bout-à-bout (passthrough PTY). Aucun filtre n’est actif.

Gérer la logique de filtrage

Le sélecteur Filtering Logic est visible uniquement en Secure Mode.

Option

Sémantique

Denylist

Tout est autorisé sauf les commandes listées dans Blocked Commands.

Allowlist

Tout est interdit sauf les commandes listées dans Allowed Commands.

Les deux champs acceptent une liste de commandes séparées par des virgules (ex. ls,pwd,cat). Le suffixe * à la fin d’une commande permet de couvrir toutes ses variantes : mkfs* couvre mkfs.ext4, mkfs.btrfs, etc.

Warning

Commandes toujours bloquées (sans dérogation possible) : Les interpréteurs (bash, python, perl…), les débogueurs (gdb, strace, ltrace), les éditeurs interactifs (vim, nano, emacs, vi), les arguments dangereux (–no-preserve-root, /dev/sd*, /etc/shadow…) et les redirections critiques (>/etc/shadow, >/proc/*…) sont systématiquement bloqués par le moteur de sécurité, quelle que soit votre configuration.

Personnaliser le retour utilisateur

Le sélecteur Denial Feedback (visible uniquement en mode filtré) pilote ce que voit l’utilisateur final lorsqu’une commande est refusée.

Option

Affichage côté utilisateur

Silent (Drop silently)

Aucun message. La commande est annulée silencieusement.

Normal (Blocked message) (défaut)

[reemo] command blocked by policy

Verbose (Show rule match)

[reemo] blocked - <règle> : <détail> (ex. denylist: ‘rm’ matches deny pattern).

Guide d’utilisation

Dans une session Reemo, l’interaction avec le bastion s’effectue directement depuis l’interface du terminal de votre navigateur.

Se connecter

Deux cas de figure se présentent à l’ouverture de la session :

  1. Configuration complète : Le prompt de la machine cible s’affiche immédiatement.

  2. Authentification dynamique : Le bastion vous demande vos identifiants à la volée :

    [reemo] Remote username: _
    [reemo] Remote password: _
    

    Saisissez les informations et validez avec Entrée. La saisie du mot de passe est entièrement masquée (aucun caractère ne s’affiche).

Interpréter le repère visuel [reemo]

Toutes les communications issues du bastion (et non de la machine cible) sont préfixées par le tag `[reemo]`. La couleur de ce tag indique la nature de l’information :

  • 🟣 Violet : Prompt, message d’information générale, progression d’un transfert.

  • 🟢 Vert : Succès d’une opération (ex. transfert terminé).

  • 🔴 Rouge : Erreur système, commande bloquée par la politique de sécurité, déconnexion.

Gérer le terminal et l’historique

Touche / Raccourci

Action

/

Déplacer le curseur dans la ligne de commande.

Home / End

Placer le curseur au début ou à la fin de la ligne.

Backspace / Delete

Effacer le caractère à gauche ou sous le curseur.

/

Naviguer dans l’historique (100 dernières commandes de la session).

Entrée

Valider et soumettre la commande au filtre de sécurité.

Ctrl+C

Interrompre la saisie de la commande en cours.

Shift+Ctrl+C

Copier le texte sélectionné dans le presse-papiers.

Shift+Ctrl+V

Coller le contenu du presse-papiers.

Clic gauche (sélection)

Copie automatiquement le texte surligné.

Clic molette

Colle la sélection automatique.

Défilement de l’écran (Scroll)

Vitesse

Molette souris

Défilement normal (3 lignes par cran).

Shift + Molette

Défilement de précision (1 ligne par cran).

Ctrl + Molette

Défilement rapide (page par page).

Transférer des fichiers

Le bastion expose un répertoire local nommé ~/Transfer, accessible depuis le menu Fichiers du navigateur Reemo. Ce répertoire sert de zone tampon entre votre poste de travail et la machine cible distante.

Trois commandes dédiées sont disponibles dans le terminal (elles sont interceptées nativement par le bastion, aucun composant n’est requis sur la machine cible) :

Commande

Effet

reemo-list

Liste le contenu du répertoire ~/Transfer.

reemo-put <fichier> [chemin-cible]

Envoie un fichier depuis ~/Transfer vers la machine cible.

reemo-get <chemin-cible>

Récupère un fichier depuis la machine cible vers ~/Transfer.

1. Inventorier le répertoire avec `reemo-list`

Affiche le contenu de la zone tampon avec la taille et la date des fichiers :

[reemo] transfer directory contents:
  FILE      1.2 MB   05-05-2026 14:22   rapport.pdf
  FILE      4.8 KB   05-05-2026 14:25   notes.txt
  ───────────────────────────────────────────────────────
  Total: 2 files ( 1.2 MB )

2. Envoyer vers la cible avec `reemo-put`

Téléverse un fichier de ~/Transfer vers la machine distante. Sans précision de trajectoire, le fichier est déposé dans le $HOME de l’utilisateur distant.

$ reemo-put rapport.pdf
[reemo] uploading rapport.pdf ■■■■■■■■■■■■□□□□□□□□ 60% | 8.2 MB/s | ETA: 1s
[reemo] ✔ upload OK: rapport.pdf (1.2 MB) in 2.0s (6.0 MB/s)

Pour spécifier une autre destination :

$ reemo-put rapport.pdf /tmp/rapport.pdf

Note

Le chemin de destination doit obligatoirement inclure le nom final du fichier. Cibler un dossier brut (ex: /tmp/) provoquera une erreur système.

3. Récupérer depuis la cible avec `reemo-get`

Télécharge un fichier de la cible vers ~/Transfer, vous permettant ensuite de le télécharger sur votre poste via le menu du navigateur Reemo.

$ reemo-get /var/log/audit.log
[reemo] downloading audit.log ■■■■■■■■■■■■■■■■■■■■ 100% | 3.4 MB/s | ETA: 0s
[reemo] ✔ download OK: audit.log (820.4 KB) in 0.2s (3.3 MB/s)

Le fichier hérite du nom d’origine (audit.log). Si un fichier du même nom existe déjà dans ~/Transfer, il est écrasé sans avertissement.

Warning

L’espace ~/Transfer est strictement privé et éphémère. Pensez à rapatrier vos fichiers sur votre poste local avant de fermer votre session Reemo, les données ne survivant pas à l’arrêt du conteneur.

Contraintes de sécurité

  • Pas d’éditeurs interactifs : En mode sécurisé (Secure Mode), l’accès à vim, vi, nano, emacs ou pico est bloqué pour empêcher l’ouverture de sous-shells d’échappement (ex: :!sh). Pour modifier un document, utilisez des commandes non interactives (sed, tee, cat) ou effectuez la modification en local avant d’utiliser reemo-put.

  • Pas de sous-shells complexes : Les syntaxes de type echo $(date) ou `whoami` sont rejetées par le moteur d’analyse. Décomposez vos actions en exécutant les commandes de manière séquentielle. Les redirections simples via pipeline (cmd1 | cmd2) restent autorisées.

  • Pas de complétion automatique via Tab : En mode sécurisé, la commande n’est analysée qu’au moment de la pression sur la touche Entrée. La touche Tab n’est donc pas interprétée. La complétion reste opérationnelle uniquement en Bypass Mode.

  • Pas de commandes de transfert en Bypass Mode : En mode bypass, le bastion agit comme un relais PTY brut pour autoriser les éditeurs interactifs. Les commandes reemo-put, reemo-get et reemo-list sont par conséquent indisponibles dans ce mode.