• Siphonight released this 2026-07-05 14:21:30 +02:00 | 1 commits to main since this release

    Changelog

    [3.5.0] — 2026-07-05

    Nouvelles fonctionnalités

    • Transfert de fichiers non-interactif : deux commandes SSH pour transférer des fichiers à travers le bastion sans stockage intermédiaire :
      • push_file <server> <dest_path> — envoyer stdin vers un serveur distant en une étape
      • retrieve_file <server> <src_path> — récupérer un fichier distant sur stdout
    • Contrôle des droits de transfert : nouveau fichier transfer_rights.txt permettant aux administrateurs de restreindre les transferts par serveur et par utilisateur. Support du wildcard *.
    • Journalisation des transferts : tous les transferts sont horodatés et logués dans /var/log/monosphere/transfers.log (user, serveur, fichier, taille, statut).
    • Consultation des logs depuis le menu admin : nouvelle option logs accessible à tous les administrateurs.
    • Nouveau droit administrateur : transfercontrol_admins pour gérer les droits de transfert.

    Corrections de bugs

    • admin_menu.sh — Récursion infinie dans sessions_viewer : la fonction s'appelait récursivement sans jamais revenir au menu parent, rendant le visionnage des sessions inutilisable. Réécrite avec des boucles while/break/return propres.
    • admin_menu.sh — Filtre utilisateur cassé : typos user_map → users_map et user_counter → users_counter rendant la fonction de filtrage inopérante.
    • admin_menu.sh — Menu vide 0) : les lignes sans description (champ 2 vide) ne sont plus affichées comme des options.
    • SCP : guillemets littéraux dans le chemin distant : les \"${path}\" étaient passés comme caractères littéraux à SCP, le serveur distant cherchait des fichiers nommés avec des guillemets.
    • Permission du log de transfert : /var/log/monosphere/ créé avec les bons droits dans le Dockerfile et l'entrypoint.
    • Destination de download : validation du nom : basename() appliqué sur le nom de destination pour éviter les fuites de chemin.
    • Délégation SSH_ORIGINAL_COMMAND : les commandes non-interactives (push_file, retrieve_file) fonctionnent désormais aussi pour les administrateurs (bastionadmin), pas seulement les utilisateurs (bastionuser).

    Améliorations

    • Refactoring de l'authentification cible : mutualisation de la logique d'auth (key/password/noauth) dans scp_to_target() et ssh_to_target_cat().
    • Défense en profondeur : droits de transfert vérifiés pour push_file ET retrieve_file.
    • Dockerfile : création du répertoire de logs à la construction avec les permissions correctes.
    • Robustesse : initialisation défensive du fichier de log dans server_menu.sh.

    Documentation

    • README : sections complètes pour le transfert de fichiers, la gestion des droits de transfert, les volumes /var/log/monosphere.
    • README : table des matières mise à jour.
    • README : exemples concrets d'utilisation (push de conf, backup tar, pull de logs).
    • CHANGELOG.md : fichier créé.

    Fichiers modifiés

    Fichier Changements
    server_menu.sh + push_file/retrieve_file/check_transfer_rights/scp_to_target/ssh_to_target_cat ; retrait du menu interactif et de stage_file
    admin_menu.sh + délégation SSH_ORIGINAL_COMMAND, + transfer_rights_control ; correction récursion/typos
    entrypoint.sh Création des repertoires et fichiers de logs avec permissions
    Dockerfile Version bump 3.4.11 → 3.5.0, création du log à la construction
    README.md Nouvelle doc transfert, droits, volumes, sommaire
    admin_rights.txt Ajout du droit transfercontrol_admins
    transfer_rights.txt Nouveau fichier (créé)
    sshd_config Renforcement des paramètres de sécurité

    Notes de version

    • Changements non cassants : les fichiers de configuration existants (authorized_servers.txt, bastion_users.txt, admin_rights.txt) restent compatibles sans modification.
    • Le dossier /opt/public/transfer et stage_file ont été supprimés (obsolètes depuis push_file).
    • Version taguée : monosphere-bastion-3.5.0
    Downloads
  • Siphonight released this 2025-02-15 23:45:36 +01:00 | 8 commits to main since this release

    Sortie officielle en version stable 3.3.9 du bastion Monosphere.

    Après plusieurs révisions, je suis désormais assez satisfaite de l'état du bastion dans la version actuelle pour enfin la sortir en tant que release.

    Ci dessous la liste des améliorations, ajouts et corrections de bugs et de failles depuis la dernière release, dans l'ordre des commits.

    Correction de bugs :

    • Correction d'un bug concernant les clés ssh qui utilisait la systématiquement la dernière clé SSH déclarée.
    • Correction du bug sur le script de server_menu détecté lors des phases de tests en direct après la précédente modification concernant le message de sélection invalide.
    • Ajout de vérification de la présence des configurations dans les fichiers de sshd et de sudoers afin de ne pas répéter l'inscription des paramètres à chaque redémarrage du conteneur ainsi que de permettre leurs modification.
    • Correction d'un bug faisant crasher SSHD lors d'un redémarrage du conteneur et empêchant l'execution du service.
    • Gel des versions des paquets installés pour plus de stabilité entre les différentes versions du bastion.
    • Patch du problème de clés d'hôtes nouvelles bloquant les connexion au travers de sshpass.
    • Correction du bug ayant pour cause l'utilisation de grep en tant que sélecteur des serveurs autorisés, ce qui créait des collisions entre les usernames des utilisateurs du bastion et ceux distants.
    • Correction de la condition dans le script de connexion SSH. La condition avant modification ne permettait pas de connexion sans la configuration d'une méthode d'authentification.
    • Correction du chemin de vérification de la clé privée.
    • Reformatage des scripts entrypoint.sh et server_menu.sh avec l'outil shfmt.
    • Sécurisation des variables et mise en conformité avec les standards du scripting bash avec l'outil shellcheck.
    • Les utilisateurs ne faisant partie d'aucun groupe (bastionadmin ou bastionuser) n'ont désormais plus d'accès au serveur.
    • Correction problème de sélection list dans sessions.
    • Correction problème de retour menu utilisateur.
    • Ajout d'un "éditeur" de texte en Bash permettant une modification des fichiers de configurations du bastion de façon sécurisée et maitrisée.
    • Retrait du paquet SUDO ainsi que de son utilisation au sein du bastion, ce dernier n'étant plus nécessaire suite à l'ajout du menu des administrateurs.
    • Correction faille check nom de fichiers (merci à Kit!)

    Améliorations :

    • Passage sous Alpine 3.20, optimisation de l'image, ajout multi build stages, retrait de configuration obsolètes et corrections de bug.
    • Ajout d'un lien symbolique pour l'accès au script par les comptes internes du bastion.
    • Optimization du script de menu serveurs en retirant les utilisations répétées de whoami.
    • Ajout d'une vérification de la sélection choisie qui prends désormais en compte l'absence d'input utilisateur sans envoyer une erreur de script.
    • [DOCUMENTATION] Ajout de la sous partie concernant les valeurs par défaut qui seront appliquées si elles ne sont pas écrasées.
    • [DOCUMENTATION] Modification des exemples afin que ces derniers correspondent aux visuels de la dernière version de Monosphere.
    • [DOCUMENTATION] Précision de nouveaux objectifs et correction des objectifs existants.
    • [DOCUMENTATION] Ajout d'une sous section concernant les bugs en cours de correction dans le projet.
    • Amelioration du script de menu serveurs du bastion en ajoutant une boucle permettant un retour dans le menu lors d'une déconnexion d'une machine distante.
    • Petit ajustement dans le menu de sélection des serveurs permettant d'utiliser le nombre inscrit afin de quitter le bastion.
    • [DOCUMENTATION] Ajout de précisions sur la signification des numéros de version du bastion ainsi que leurs implications.
    • [DOCUMENTATION] Correction d'une information obsolète dans la documentation du bastion.
    • Amélioration de la gestion des clés SSH passe pas l'agent SSH et non plus par des mouvements de fichiers pour plus de sécurité et moins d'écritures sur le disque.
    • Ajout d'un renvoi vers /dev/null de l'output du SSH-Agent lors de la connexion aux machines distantes
    • Ajout du support des mots de passes dans la configuration
    • [DOCUMENTATION] Ajout de la documentation relative à sshpass.
    • [DOCUMENTATION] Correction de typo dans la documentation
    • [DOCUMENTATION] Refonte des exemples de la documentation et mise à jour des fonctionnalités
    • Ajout du menu des administrateurs. Les administrateurs n'ont plus accès à un terminal bash désormais afin de contrôler leurs droits et ne permettre que les actions prévues dans la configuration.
    • Ajout de la fonctionnalité de lecture des sessions utilisateurs depuis le menu du bastion des administrateurs.
    • Ajout de la fonctionnalité de modification des droits d'accès sur les serveurs distants.
    • Ajout du menu modification privilèges
    • [DOCUMENTATION] Modification de la documentation des administrateurs
    • Le fichier "bastion_users.txt" ne pourra plus contenir de mots de passes en clair mais seulement des hash au format SHA-256.
    • [DOCUMENTATION] Ajout de codes d'erreurs ainsi que de leur signification dans la documentation du bastion.

    A noter que cette version marque le début réel du bastion Monosphere en tant que solution viable.
    Les version précédentes étaient utilisables mais ne comportaient pas beaucoup de fonctionnalités essentielles.
    A partir de cette version, le bastion peut désormais répondre aux différents besoins des utilisateurs et ce de façon plus simplifiée.

    Je remercie encore les personnes m'ayant approté et m'apportant de l'aide dans ce projet !

    • Ouafax
    • KIT!
    • neutaaaaan
    • Amadeus
    • KuroSaru

    Sans leurs conseils, ce projet n'en serait pas à ce stade aujourd'hui.

    Downloads
  • Siphonight released this 2024-06-17 05:00:52 +02:00 | 50 commits to main since this release

    Afin d'optimiser d'avantage l'image de Monosphere, un passage de l'image de base Debian 12 (utilisée en version 0.5.2) vers une image Alpine 3.20 a été effectué.
    La précédente publication a été unifiée à celle ci, car aucun changement de fonctionnalités majeures n'a eu lieu entre la version 0.5.2 et 0.5.3, cependant un changement global aussi important que celui de l'image de base nécessitais une remise à jour de la release.

    Cette release est stable et ne démontrait aucun bug dans son fonctionnement lors des tests effectués en amont de la publication.

    Cette version optimise grandement l'image en ajoutant un build multi stage (merci à @Ouafax pour l'idée).
    Elle inclut également un patch permettant de corriger un problème de nommage des fichiers de sessions, a cause duquel ces derniers portaient le nom de l'utilisateur du bastion et non de l'utilisateur distant.

    Une modification du script entrypoint a également été effectuée afin de retirer définitivement les reliquats des services obsolètes, encore présents en version 0.5.1.

    Le fonctionnement du bastion en lui même ne change pas par rapport à la version précédente.

    Downloads
  • Siphonight released this 2024-06-16 03:08:58 +02:00 | 51 commits to main since this release

    Une nouvelle version corrigeant pas mal de manques de la précédente et qui se rapproche bien plus de la notion de bastion traditionnel mais tout en gardant sa simplicité de compréhension grâce à sa construction quasi entièrement en scripts bash.

    Ajout de TTYrec (version de OVH) : https://github.com/ovh/ovh-ttyrec
    Il est désormais possible d'utiliser ttyrec pour les utilisateurs internes du bastion.
    Pour ce faire il suffit de suivre les étapes décrites dans la documentation afin de visionner les sessions des utilisateurs.
    Les utilisateurs internes du bastion gagnent de ce fait un usage contrairement à leur utilisation très limitée dans les versions précédentes.

    Ajout également d'une fermeture de session en cas d'inactivité de plus de 5 minutes au travers de ttyrec, avec un avertissement 60 secondes avant la déconnexion.

    Amélioration plus importante de la documentation avec l'ajout d'un sommaire comprenant des liaisons aux différentes sous parties (merci à @Kit pour l'idée).

    Et enfin, allégement de l'image par la suppression de configuration devenues obsolètes.

    Downloads
  • release-0.5.0 Pre-Release

    Siphonight released this 2024-06-15 14:41:02 +02:00 | 53 commits to main since this release

    Cette version intègre le support pour des utilisateurs multiples des serveurs distants ainsi qu'à l'authentification par clés SSH.

    Une modification significative de la documentation du README a également été effectuée pour plus de lisibilité.

    Downloads