Compare commits
2 Commits
680c21db76
...
0f0e1f845f
| Author | SHA1 | Date | |
|---|---|---|---|
| 0f0e1f845f | |||
| 077a402beb |
@ -4,7 +4,7 @@ FROM alpine:3.20.0 AS monosphere-builder
|
||||
|
||||
|
||||
#Setting default settings, please change them at run
|
||||
ARG MONOSPHERE_VERSION="2.2.6 Alpha"
|
||||
ARG MONOSPHERE_VERSION="2.3.7 Alpha"
|
||||
|
||||
|
||||
#Defining build settings
|
||||
@ -51,7 +51,7 @@ USER root
|
||||
|
||||
#Preparations
|
||||
#Updating and installing required dependencies
|
||||
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 && \
|
||||
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 && \
|
||||
apk --no-cache add shadow=4.15.1-r0
|
||||
|
||||
|
||||
|
||||
26
README.md
26
README.md
@ -134,24 +134,23 @@ Il est également possible d'utiliser docker-compose afin de déployer ce conten
|
||||
Ci-dessous un exemple de déploiement possible :
|
||||
|
||||
```yaml
|
||||
version: "3.3"
|
||||
services:
|
||||
monosphere-bastion:
|
||||
image: siphonight/monosphere-bastion:latest
|
||||
container_name: monosphere-bastion
|
||||
environment:
|
||||
- PORT=22
|
||||
- PASSWORD_AUTH=1
|
||||
- KEY_AUTH=1
|
||||
- HOSTNAME=monosphere-bastion
|
||||
volumes:
|
||||
- /datasets/monosphere-bastion/servers:/opt/public/servers
|
||||
- /datasets/monosphere-bastion/custom-scripts:/opt/custom/scripts
|
||||
- /datasets/monosphere-bastion/users:/root/scripts/users
|
||||
- /datasets/monosphere-bastion/admin_rights:/opt/public/rights
|
||||
ports:
|
||||
- 22:22
|
||||
restart: unless-stopped
|
||||
- PORT=22
|
||||
- PASSWORD_AUTH=1
|
||||
- KEY_AUTH=1
|
||||
- HOSTNAME=monosphere-bastion
|
||||
volumes:
|
||||
- /datasets/monosphere-bastion/servers:/opt/public/servers
|
||||
- /datasets/monosphere-bastion/custom-scripts:/opt/custom/scripts
|
||||
- /datasets/monosphere-bastion/users:/root/scripts/users
|
||||
- /datasets/monosphere-bastion/admin_rights:/opt/public/rights
|
||||
ports:
|
||||
- 22:22
|
||||
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.
|
||||
@ -563,3 +562,4 @@ Ce projet est publié sous la licence "Faites ce que vous souhaitez".
|
||||
- KIT!
|
||||
- neutaaaaan
|
||||
- Amadeus
|
||||
- KuroSaru
|
||||
|
||||
@ -1,5 +1,40 @@
|
||||
#!/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() {
|
||||
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)
|
||||
@ -74,8 +109,7 @@ 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.'
|
||||
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."
|
||||
sleep 5s
|
||||
sudo nano /opt/public/servers/"${File_Name}"
|
||||
secure_file_editor "/opt/public/servers/${File_Name}"
|
||||
if [[ $(cat "/opt/public/servers/${File_Name}") == "" ]]; then
|
||||
echo "Le fichier modifié \"${File_Name}\" est vide. Ce dernier sera supprimé."
|
||||
rm -rf /opt/public/servers/"${File_Name}"
|
||||
@ -85,8 +119,7 @@ function servers_access_control() {
|
||||
|
||||
"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."
|
||||
sleep 5s
|
||||
sudo nano /opt/public/servers/authorized_servers.txt
|
||||
secure_file_editor "/opt/public/servers/authorized_servers.txt"
|
||||
;;
|
||||
|
||||
"3" | "quit")
|
||||
@ -105,8 +138,7 @@ function servers_access_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."
|
||||
sleep 5s
|
||||
sudo nano /opt/public/rights/admin_rights.txt
|
||||
secure_file_editor "/opt/public/rights/admin_rights.txt"
|
||||
}
|
||||
|
||||
function main_menu() {
|
||||
|
||||
@ -27,11 +27,6 @@ chmod 700 /opt/custom/scripts/*.sh
|
||||
bash /opt/custom/scripts/*.sh
|
||||
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
|
||||
|
||||
echo "Création des groupes d'utilisateurs."
|
||||
@ -62,12 +57,6 @@ for userinfo in ${userfile}; do
|
||||
usermod -aG bastionuser "${user}"
|
||||
elif [[ ${is_bastion} -eq "0" ]]; then
|
||||
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}"
|
||||
ln -s /opt/public/scripts/server_menu.sh /home/"${user}"/server_menu.sh
|
||||
fi
|
||||
@ -88,6 +77,11 @@ for userinfo in ${userfile}; do
|
||||
done
|
||||
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."
|
||||
rc-status
|
||||
rc-service sshd restart
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user