From 8cd1e8d5d3634cd193df13c1040afd326168f33a Mon Sep 17 00:00:00 2001 From: Siphonight Date: Wed, 3 Jul 2024 01:06:33 +0200 Subject: [PATCH] =?UTF-8?q?Modification=20README=20et=20am=C3=A9lioration?= =?UTF-8?q?=20du=20server=5Fmenu?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Ajout d'une sous section concernant les bugs en cours de correction dans le projet. Amelioration du script de manu serveurs du bastion en ajoutant une boucle permettant un retour dans le menu lors d'une déconnexion d'une machine distante. Cela permet un retour au bastion pour plus facilement se reconnecter à d'autres équipements à la fin de sa session. --- README.md | 7 ++++-- server_menu.sh | 67 ++++++++++++++++++++++++++++---------------------- 2 files changed, 43 insertions(+), 31 deletions(-) diff --git a/README.md b/README.md index 4dbd4aa..9c20fa0 100644 --- a/README.md +++ b/README.md @@ -47,9 +47,8 @@ Voici une liste des différentes fonctionnalités déjà en place sur le bastion ## Objectifs des mises à jour Ci-dessous une liste non exhaustive des objectifs des prochaines mises à jour du projet: - [ ] Ajouter le support pour un serveur LDAP. (Objectif sur le long terme) - - [ ] Ajouter un système de mise à jour automatique dans le conteneur, évitant ainsi les redéploiements. -- [ ] Ajouter la possibilité de revenir dans le menu des serveurs après une déconnexion d'une machine distante. +- [x] Ajouter la possibilité de revenir dans le menu des serveurs après une déconnexion d'une machine distante. - [ ] Améliorer le système de journalisation du déploiement du bastion, avec les erreurs de déploiement affichées lors de la connexion des utilisateurs internes. - [ ] Ajouter un menu d'administration et de gestion lors de la connexion des utilisateurs internes du bastion. - [ ] Créer des rôles administrateur/inspecteur avec des droits différents au sein du bastion. @@ -58,6 +57,10 @@ Ci-dessous une liste non exhaustive des objectifs des prochaines mises à jour d - [x] Ajouter le support pour différents utilisateurs distants. - [x] Intégration de ttyrec pour la sauvegarde des sessions effectuées sur le bastion. +Correction en cours pour les bugs ci dessous : +- Ajout de vérification de la présence des configurations afin de ne pas répéter les paramètres dans les fichiers à chaque redémarrage du conteneur. +- Correction d'un bug autorisant systématiquement des utilisateurs du bastion à se connecter sur les serveurs distants si le compte d'accès à ce dernier porte le même nom que l'utilisateur du bastion. + ## Installation Pour installer Monosphere Bastion, clonez ce dépôt et construisez l'image Docker en utilisant le fichier Dockerfile fourni. diff --git a/server_menu.sh b/server_menu.sh index 0013480..0350220 100644 --- a/server_menu.sh +++ b/server_menu.sh @@ -10,36 +10,45 @@ if [ -z "$USER_SERVERS" ]; then exit 1 fi -echo "Veuillez sélectionner un serveur auquel vous connecter :" +function main_menu () { + echo "Veuillez sélectionner un serveur auquel vous connecter :" -counter=1 -declare -A server_map -while read -r line; do - ip=$(echo "$line" | cut -d ' ' -f 1) - port=$(echo "$line" | cut -d ' ' -f 2) - custom_name=$(echo "$line" | cut -d ' ' -f 3) - server_user=$(echo "$line" | cut -d ' ' -f 4) - server_authkey=$(echo "$line" | cut -d ' ' -f 6) - server_map[$counter]="$ip $port $server_user $server_authkey" - echo "$counter) $custom_name - $server_user $ip:$port" - counter=$((counter + 1)) -done <<< "$USER_SERVERS" + counter=1 + declare -A server_map + while read -r line; do + ip=$(echo "$line" | cut -d ' ' -f 1) + port=$(echo "$line" | cut -d ' ' -f 2) + custom_name=$(echo "$line" | cut -d ' ' -f 3) + server_user=$(echo "$line" | cut -d ' ' -f 4) + server_authkey=$(echo "$line" | cut -d ' ' -f 6) + server_map[$counter]="$ip $port $server_user $server_authkey" + echo "$counter) $custom_name - $server_user $ip:$port" + counter=$((counter + 1)) + done <<< "$USER_SERVERS" -read -r -p "Votre choix (1-${#server_map[@]}): " choice + echo "$counter) Tapez 'quit' pour vous déconnecter." -if [ -z "$choice" ] || [ -z "${server_map[$choice]}" ]; then - echo "Sélection invalide." - exit 1 -fi + read -r -p "Votre choix (1-$counter): " choice -selected_server="${server_map[$choice]}" -echo "Connexion à $selected_server..." -if [ -z "$(echo "$selected_server" | cut -d ' ' -f 4)" ]; then - ttyrec -z --"$(echo "$selected_server" | cut -d ' ' -f 1)"-"$(echo "$selected_server" | cut -d ' ' -f 3)"-- -k 300 --warn-before-kill 60 -- ssh -p "$(echo "$selected_server" | cut -d ' ' -f 2)" "$(echo "$selected_server" | cut -d ' ' -f 3)"@"$(echo "$selected_server" | cut -d ' ' -f 1)" -else - cp /"$AUTHORIZED_SERVERS_PATH"/"$(echo "$selected_server" | cut -d ' ' -f 4)" /home/"$CONNECTED_USER"/"$(echo "$selected_server" | cut -d ' ' -f 4)" - chown "$CONNECTED_USER":"$CONNECTED_USER" /home/"$CONNECTED_USER"/"$(echo "$selected_server" | cut -d ' ' -f 4)" - chmod 600 /home/"$CONNECTED_USER"/"$(echo "$selected_server" | cut -d ' ' -f 4)" - ttyrec -z --"$(echo "$selected_server" | cut -d ' ' -f 1)"-"$(echo "$selected_server" | cut -d ' ' -f 3)"-- -k 300 --warn-before-kill 60 -- ssh -p "$(echo "$selected_server" | cut -d ' ' -f 2)" -i /home/"$CONNECTED_USER"/"$(echo "$selected_server" | cut -d ' ' -f 4)" "$(echo "$selected_server" | cut -d ' ' -f 3)"@"$(echo "$selected_server" | cut -d ' ' -f 1)" - rm -rf /home/"${CONNECTED_USER:?}"/"$(echo "$selected_server" | cut -d ' ' -f 4)" -fi + if [ "$choice" == "quit" ]; then + exit 0 + elif [ -z "$choice" ] || [ -z "${server_map[$choice]}" ]; then + echo "Sélection invalide." + fi + + selected_server="${server_map[$choice]}" + echo "Connexion à $selected_server..." + if [ -z "$(echo "$selected_server" | cut -d ' ' -f 4)" ]; then + ttyrec -z --"$(echo "$selected_server" | cut -d ' ' -f 1)"-"$(echo "$selected_server" | cut -d ' ' -f 3)"-- -k 300 --warn-before-kill 60 -- ssh -p "$(echo "$selected_server" | cut -d ' ' -f 2)" "$(echo "$selected_server" | cut -d ' ' -f 3)"@"$(echo "$selected_server" | cut -d ' ' -f 1)" + else + cp /"$AUTHORIZED_SERVERS_PATH"/"$(echo "$selected_server" | cut -d ' ' -f 4)" /home/"$CONNECTED_USER"/"$(echo "$selected_server" | cut -d ' ' -f 4)" + chown "$CONNECTED_USER":"$CONNECTED_USER" /home/"$CONNECTED_USER"/"$(echo "$selected_server" | cut -d ' ' -f 4)" + chmod 600 /home/"$CONNECTED_USER"/"$(echo "$selected_server" | cut -d ' ' -f 4)" + ttyrec -z --"$(echo "$selected_server" | cut -d ' ' -f 1)"-"$(echo "$selected_server" | cut -d ' ' -f 3)"-- -k 300 --warn-before-kill 60 -- ssh -p "$(echo "$selected_server" | cut -d ' ' -f 2)" -i /home/"$CONNECTED_USER"/"$(echo "$selected_server" | cut -d ' ' -f 4)" "$(echo "$selected_server" | cut -d ' ' -f 3)"@"$(echo "$selected_server" | cut -d ' ' -f 1)" + rm -rf /home/"${CONNECTED_USER:?}"/"$(echo "$selected_server" | cut -d ' ' -f 4)" + fi +} + +while true; do + main_menu +done \ No newline at end of file