Compare commits

..

No commits in common. "0f0e1f845f19c0cf0a1fda8f5c30ad4bb5230bd1" and "680c21db7695e40f8de28918fea2c57fc7dd7563" have entirely different histories.

4 changed files with 33 additions and 59 deletions

View File

@ -4,7 +4,7 @@ FROM alpine:3.20.0 AS monosphere-builder
#Setting default settings, please change them at run #Setting default settings, please change them at run
ARG MONOSPHERE_VERSION="2.3.7 Alpha" ARG MONOSPHERE_VERSION="2.2.6 Alpha"
#Defining build settings #Defining build settings
@ -51,7 +51,7 @@ USER root
#Preparations #Preparations
#Updating and installing required dependencies #Updating and installing required dependencies
RUN apk add openssh-server=9.7_p1-r4 openssh-client=9.7_p1-r4 openrc=0.54-r1 bash=5.2.26-r0 sshpass=1.10-r0 gawk=5.3.0-r1 && \ RUN apk add openssh-server=9.7_p1-r4 openssh-client=9.7_p1-r4 sudo=1.9.15_p5-r0 openrc=0.54-r1 bash=5.2.26-r0 sshpass=1.10-r0 gawk=5.3.0-r1 nano=8.0-r0 && \
apk --no-cache add shadow=4.15.1-r0 apk --no-cache add shadow=4.15.1-r0

View File

@ -134,23 +134,24 @@ Il est également possible d'utiliser docker-compose afin de déployer ce conten
Ci-dessous un exemple de déploiement possible : Ci-dessous un exemple de déploiement possible :
```yaml ```yaml
version: "3.3"
services: services:
monosphere-bastion: monosphere-bastion:
image: siphonight/monosphere-bastion:latest image: siphonight/monosphere-bastion:latest
container_name: monosphere-bastion container_name: monosphere-bastion
environment: environment:
- PORT=22 - PORT=22
- PASSWORD_AUTH=1 - PASSWORD_AUTH=1
- KEY_AUTH=1 - KEY_AUTH=1
- HOSTNAME=monosphere-bastion - HOSTNAME=monosphere-bastion
volumes: volumes:
- /datasets/monosphere-bastion/servers:/opt/public/servers - /datasets/monosphere-bastion/servers:/opt/public/servers
- /datasets/monosphere-bastion/custom-scripts:/opt/custom/scripts - /datasets/monosphere-bastion/custom-scripts:/opt/custom/scripts
- /datasets/monosphere-bastion/users:/root/scripts/users - /datasets/monosphere-bastion/users:/root/scripts/users
- /datasets/monosphere-bastion/admin_rights:/opt/public/rights - /datasets/monosphere-bastion/admin_rights:/opt/public/rights
ports: ports:
- 22:22 - 22:22
restart: unless-stopped restart: unless-stopped
``` ```
Dans les exemples de la commande **docker run** et du fichier docker compose, nous avons défini des variables et des répertoires. Dans les exemples de la commande **docker run** et du fichier docker compose, nous avons défini des variables et des répertoires.
@ -561,5 +562,4 @@ Ce projet est publié sous la licence "Faites ce que vous souhaitez".
- Ouafax - Ouafax
- KIT! - KIT!
- neutaaaaan - neutaaaaan
- Amadeus - Amadeus
- KuroSaru

View File

@ -1,40 +1,5 @@
#!/bin/bash #!/bin/bash
function secure_file_editor() {
File_Path="${*}"
echo -e "\n=====SECURE=FILE=EDITOR====="
if [[ -e ${File_Path} ]]; then
echo "Le fichier selectionne existe et a pour contenu :"
cat "${File_Path}"
read -r -p 'Souhaitez vous modifier le contenu du fichier ? (y/n) : ' choice
else
echo "Creation d un nouveau fichier \"${File_Path}\"."
touch "${File_Path}"
choice="y"
fi
case ${choice} in
"y" | "Y")
printf '%s\n' " Consignes d'utilisation de cet editeur : - Lorsque l'edition du fichier est achevee, entrez ctrl-d sur une ligne vide pour sortir. - ATTENTION : Copiez les lignes que vous souhaitez garder intactes, le contenu du fichier complet sera ecrase par ce qui suit. - Tout fichier vide sera supprime. :"
New_Content+=$(xargs -0)
echo "${New_Content}" >"${File_Path}"
;;
"n" | "N")
echo "Edition du fichier abandonnee."
;;
*)
echo "Selection invalide."
;;
esac
unset New_Content
unset File_Path
echo "Modifications appliquées."
echo -e "=====SECURE=FILE=EDITOR=====\n"
}
function sessions_viewer() { function sessions_viewer() {
echo -e "Ci dessous les utilisateurs disponibles sur le bastion.\nVeillez sélectionner celui dont vous souhaitez visionner les accès :" echo -e "Ci dessous les utilisateurs disponibles sur le bastion.\nVeillez sélectionner celui dont vous souhaitez visionner les accès :"
Available_Users=$(find /home/. -maxdepth 1 -type d | grep -v "\.$" | cut -d "/" -f 4) Available_Users=$(find /home/. -maxdepth 1 -type d | grep -v "\.$" | cut -d "/" -f 4)
@ -109,7 +74,8 @@ function servers_access_control() {
echo 'Le nom du fichier ne doit pas contenir les caractères "/" ou "*", être vide ou ce nommer "authorized_servers.txt". Veuillez modifier ce dernier.' echo 'Le nom du fichier ne doit pas contenir les caractères "/" ou "*", être vide ou ce nommer "authorized_servers.txt". Veuillez modifier ce dernier.'
else else
echo "Assurez vous que le fichier créé ou modifié comporte bien uniquement la clé privée ou le mot de passe nécessaire à la connexion." echo "Assurez vous que le fichier créé ou modifié comporte bien uniquement la clé privée ou le mot de passe nécessaire à la connexion."
secure_file_editor "/opt/public/servers/${File_Name}" sleep 5s
sudo nano /opt/public/servers/"${File_Name}"
if [[ $(cat "/opt/public/servers/${File_Name}") == "" ]]; then if [[ $(cat "/opt/public/servers/${File_Name}") == "" ]]; then
echo "Le fichier modifié \"${File_Name}\" est vide. Ce dernier sera supprimé." echo "Le fichier modifié \"${File_Name}\" est vide. Ce dernier sera supprimé."
rm -rf /opt/public/servers/"${File_Name}" rm -rf /opt/public/servers/"${File_Name}"
@ -119,7 +85,8 @@ function servers_access_control() {
"2") "2")
echo -e "Veuillez bien vérifier la syntaxe de votre configuration avant de valider cette dernière.\nPour plus d'informations, consultez la documentation de Monosphere." echo -e "Veuillez bien vérifier la syntaxe de votre configuration avant de valider cette dernière.\nPour plus d'informations, consultez la documentation de Monosphere."
secure_file_editor "/opt/public/servers/authorized_servers.txt" sleep 5s
sudo nano /opt/public/servers/authorized_servers.txt
;; ;;
"3" | "quit") "3" | "quit")
@ -138,7 +105,8 @@ function servers_access_control() {
function admin_rights_control() { function admin_rights_control() {
echo -e "Veuillez bien vérifier la syntaxe de votre configuration avant de valider cette dernière.\nPour plus d'informations, consultez la documentation de Monosphere." echo -e "Veuillez bien vérifier la syntaxe de votre configuration avant de valider cette dernière.\nPour plus d'informations, consultez la documentation de Monosphere."
secure_file_editor "/opt/public/rights/admin_rights.txt" sleep 5s
sudo nano /opt/public/rights/admin_rights.txt
} }
function main_menu() { function main_menu() {

View File

@ -27,6 +27,11 @@ chmod 700 /opt/custom/scripts/*.sh
bash /opt/custom/scripts/*.sh bash /opt/custom/scripts/*.sh
echo "Execution des scripts personalisés terminée." echo "Execution des scripts personalisés terminée."
echo "Monosphere configure le répertoire public."
chown -R root:root /opt/public
chmod -R 755 /opt/public
echo "Répertoire public configuré."
#User accounts creation step #User accounts creation step
echo "Création des groupes d'utilisateurs." echo "Création des groupes d'utilisateurs."
@ -57,6 +62,12 @@ for userinfo in ${userfile}; do
usermod -aG bastionuser "${user}" usermod -aG bastionuser "${user}"
elif [[ ${is_bastion} -eq "0" ]]; then elif [[ ${is_bastion} -eq "0" ]]; then
usermod -aG bastionadmin "${user}" usermod -aG bastionadmin "${user}"
if ! grep -qo "^${user} ALL=(ALL) NOPASSWD:" /etc/sudoers; then
echo "${user} ALL=(ALL) NOPASSWD: /usr/local/bin/ttyplay*" | sudo EDITOR='tee -a' visudo
echo "${user} ALL=(ALL) NOPASSWD: /bin/ls*" | sudo EDITOR='tee -a' visudo
echo "${user} ALL=(ALL) NOPASSWD: /usr/bin/nano /opt/public/servers/*" | sudo EDITOR='tee -a' visudo
echo "${user} ALL=(ALL) NOPASSWD: /usr/bin/nano /opt/public/rights/admin_rights.txt" | sudo EDITOR='tee -a' visudo
fi
mkdir /home/"${user}" mkdir /home/"${user}"
ln -s /opt/public/scripts/server_menu.sh /home/"${user}"/server_menu.sh ln -s /opt/public/scripts/server_menu.sh /home/"${user}"/server_menu.sh
fi fi
@ -77,11 +88,6 @@ for userinfo in ${userfile}; do
done done
echo "Création des utilisateurs terminée." echo "Création des utilisateurs terminée."
echo "Monosphere configure le répertoire public."
chown -R root:bastionadmin /opt/public
chmod -R 775 /opt/public
echo "Répertoire public configuré."
echo "Démarrage du service SSHD de Monosphere." echo "Démarrage du service SSHD de Monosphere."
rc-status rc-status
rc-service sshd restart rc-service sshd restart