Merci à KuroSaru (https://github.com/KuroSaru) pour son aide quant à la faille concernant le shellout des éditeurs de texte, ainsi que ses recommandations quant à l'utilisation de SUDO au sein du projet. BUGFIX de sécurité : Ajout d'un "éditeur" de texte en Bash permettant une modification des fichiers de configurations du bastion de façon sécurisée et maitrisée. Retrait du paquet SUDO ainsi que de son utilisation au sein du bastion, ce dernier n'étant plus nécessaire suite à l'ajout du menu des administrateurs. Passage en version 2.3.7 Alpha.
99 lines
3.1 KiB
Bash
99 lines
3.1 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."
|
|
|
|
#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}"
|
|
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 "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
|
|
|
|
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
|