monosphere-bastion/entrypoint.sh
Siphonight 0f0e1f845f Sécurisation du bastion et retrait de paquets
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.
2025-01-21 23:27:46 +01:00

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