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.
104 lines
3.4 KiB
Bash
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
|