monosphere-bastion/entrypoint.sh
Siphonight 4ebff9e687 Ajout de fonctionnalités majeures et bugfix
Ajout du menu des administrateurs et préparation pour les futures
features d'administration du bastion. Les administrateurs n'ont plus
accès à un terminal bash désormais afin de controler leurs droits et ne
permettre que les actions prévues dans la configuration.

FEATURES :
Ajout de la fonctionnalité de lecture des sessions utilisateurs depuis
le menu du bastion des administrateurs.

Ajout de la première partie de la fonctionnalité de modification des
droits d'accès sur les serveurs distants.

Le groupe "bastionadmins" est désormais utilisé au sein du bastion afin
de déterminer les utilisateurs ayant les droits d'administration.

Les droits d'administrations sont désormais gérés au sein d'un fichier
qui sera par la suite modifiable aussi bien lors du déploiement du
conteneur (et lors de la génération de la configuration des
utilisateurs) que par les administrateurs habilités au travers du menu
d'administration (COMING VERY SOON).

BUGFIX :
Les utilisateurs ne faisant partie d'aucun groupe (bastionadmin ou
bastionuser) n'ont désormais plus d'accès au serveur.

AFTERNOTES :
Les configurations actuelles n'ont pas besoin de modifications à
proprement parler, cependant les utilisateurs ayant des droits
d'administration doivent désormais utiliser le fichier "admin_rights"
afin de pouvoir exercer leurs privilèges au sein du bastion.

La prochaine release sera publiée après le prochain commit, qui
permettra de finir les derniers ajustements et fixer les rpoblèmes
constatés.
2025-01-20 21:13:28 +01:00

104 lines
3.4 KiB
Bash

#!/bin/bash
if ! grep -qo "^Port ${PORT}$" /etc/ssh/sshd_config; then
echo "Génération de la configuration de SSH pour le bastion Monosphere..."
echo "Port selectionne pour la connexion SSH : ${PORT}"
echo "Port ${PORT}" >>/etc/ssh/sshd_config
echo "#Last authentication configurations" >>/etc/ssh/sshd_config
if [[ ${PASSWORD_AUTH} -eq "1" ]]; then
echo "Authentification par mot de passe autorisee."
echo "PasswordAuthentication yes" >>/etc/ssh/sshd_config
else
echo "Authentification par mot de passe interdite."
echo "PasswordAuthentication no" >>/etc/ssh/sshd_config
fi
if [[ ${KEY_AUTH} -eq "1" ]]; then
echo "Authentification par clés privées autorisee."
echo "PubkeyAuthentication yes" >>/etc/ssh/sshd_config
else
echo "Authentification par clés privées interdite."
echo "PubkeyAuthentication no" >>/etc/ssh/sshd_config
fi
fi
echo "Monosphere active et execute les scripts personalisés"
chown -R root:root /opt/custom
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."
if ! grep -q "bastionuser" /etc/group; then
addgroup bastionuser
fi
if ! grep -q "bastionadmin" /etc/group; then
addgroup bastionadmin
fi
echo "Fin de la création des groupes d'utilisateurs."
echo "Création des utilisateurs en cours..."
userfile=$(cat /root/scripts/users/bastion_users.txt)
if [[ -z ${userfile} ]]; then
echo "Configuration utilisateur introuvable, veuillez vérifier votre configuration."
exit 1
fi
for userinfo in ${userfile}; do
user=$(echo "${userinfo}" | cut -d ';' -f 1)
is_bastion=$(echo "${userinfo}" | cut -d ';' -f 2)
password=$(echo "${userinfo}" | cut -d ';' -f 3)
setkeys=$(echo "${userinfo}" | cut -d ';' -f 4)
adduser --disabled-password --gecos "" "${user}" --shell /bin/bash
if [[ ${is_bastion} -eq "1" ]]; then
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: nano /opt/public/servers/authorized_servers.txt"
fi
mkdir /home/"${user}"
ln -s /opt/public/scripts/server_menu.sh /home/"${user}"/server_menu.sh
fi
if [[ ${password} != "0" ]]; then
echo "${user}:${password}" | chpasswd
else
echo "${user}:${user}" | chpasswd
fi
if [[ ${setkeys} -eq "1" ]]; then
mkdir -p /home/"${user}"/.ssh
chmod 700 /home/"${user}"/.ssh
cp -r /root/scripts/users/"${user}"/* /home/"${user}"/.ssh/
chown -R "${user}":"${user}" /home/"${user}"/.ssh
chmod 600 /home/"${user}"/.ssh/*
fi
done
echo "Création des utilisateurs terminée."
echo "Démarrage du service SSHD de Monosphere."
rc-status
rc-service sshd restart
if sshd -t; then
echo "Configuration du service SSHD de Monosphere vérifiée et valide."
echo "Monosphere a bien été configuré et démarré avec succès."
else
echo -e "Configuration du service SSHD de Monosphere invalide\n Veuillez vérifier la configuration et relancer le deploiement."
exit 1
fi
# Keep the container running
tail -f /dev/null