diff --git a/scripts/common/setup_debian.sh b/scripts/common/setup_debian.sh new file mode 100644 index 0000000..21c16f2 --- /dev/null +++ b/scripts/common/setup_debian.sh @@ -0,0 +1,150 @@ +#!/bin/bash + +# Vérifier si le script est exécuté en root +if [[ $EUID -ne 0 ]]; then + echo "Ce script doit être exécuté en tant que root." + exit 1 +fi + +### Fonction pour mettre à jour le système +update_system() { + echo "Mise à jour du système..." + apt update && apt upgrade -y && sudo apt autoremove -y && command -v flatpak >/dev/null && flatpak update -y +} + +### Fonction pour installer sudo s'il n'est pas déjà présent +install_sudo() { + if command -v sudo &>/dev/null; then + echo "Sudo est déjà installé." + else + echo "Installation de sudo..." + apt install -y sudo + fi +} + +### Fonction pour ajouter un utilisateur administrateur +add_admin_user() { + # Vérifier s'il existe déjà un utilisateur autre que root + EXISTING_USER=$(awk -F: '$3 >= 1000 && $3 < 60000 {print $1; exit}' /etc/passwd) + + if [[ -n "$EXISTING_USER" ]]; then + echo "Un utilisateur ($EXISTING_USER) existe déjà sur le système." + read -p "Voulez-vous ajouter un autre utilisateur administrateur ? (o/N) " ADD_NEW_USER + if [[ ! "$ADD_NEW_USER" =~ ^[Oo]$ ]]; then + echo "Aucun nouvel utilisateur ajouté." + return + fi + fi + + read -p "Entrez le nom du nouvel utilisateur : " NEW_USER + + # Vérifier si l'utilisateur existe déjà + if id "$NEW_USER" &>/dev/null; then + echo "L'utilisateur $NEW_USER existe déjà." + else + adduser "$NEW_USER" + echo "Utilisateur $NEW_USER créé." + fi + + # Vérifier si l'utilisateur est dans le groupe sudo + if groups "$NEW_USER" | grep -q "\bsudo\b"; then + echo "$NEW_USER est déjà dans le groupe sudo." + else + usermod -aG sudo "$NEW_USER" + echo "$NEW_USER ajouté au groupe sudo." + fi + # Vérifier si les permissions sudo sont déjà définies + if [ -f "/etc/sudoers.d/$NEW_USER" ]; then + echo "Les permissions sudo sont déjà configurées pour $NEW_USER." + else + echo "$NEW_USER ALL=(ALL) NOPASSWD:ALL" > "/etc/sudoers.d/$NEW_USER" + chmod 0440 "/etc/sudoers.d/$NEW_USER" + echo "Configuration sudo appliquée pour $NEW_USER." + fi + + # Demander si on veut ajouter une clé SSH + read -p "Voulez-vous ajouter une clé SSH pour $NEW_USER ? (o/N) " ADD_SSH + if [[ "$ADD_SSH" =~ ^[Oo]$ ]]; then + SSH_DIR="/home/$NEW_USER/.ssh" + AUTH_KEYS="$SSH_DIR/authorized_keys" + + # Créer le dossier .ssh s'il n'existe pas + if [ ! -d "$SSH_DIR" ]; then + mkdir -p "$SSH_DIR" + chown "$NEW_USER:$NEW_USER" "$SSH_DIR" + chmod 700 "$SSH_DIR" + echo "Dossier .ssh créé pour $NEW_USER." + fi + + read -p "Collez la clé publique SSH : " SSH_KEY + + # Vérifier si la clé est déjà présente + if grep -qxF "$SSH_KEY" "$AUTH_KEYS" 2>/dev/null; then + echo "Cette clé SSH est déjà ajoutée." + else + echo "$SSH_KEY" >> "$AUTH_KEYS" + chown "$NEW_USER:$NEW_USER" "$AUTH_KEYS" + chmod 600 "$AUTH_KEYS" + echo "Clé SSH ajoutée pour $NEW_USER." + fi + else + echo "Aucune clé SSH ajoutée." + fi +} + +### Fonction pour configurer SSH de manière sécurisée +configure_ssh() { + if grep -q "^PermitRootLogin no" /etc/ssh/sshd_config; then + echo "La connexion root SSH est déjà désactivée." + else + echo "Désactivation de la connexion root via SSH..." + sed -i 's/^#PermitRootLogin yes/PermitRootLogin no/' /etc/ssh/sshd_config + sed -i 's/^PermitRootLogin yes/PermitRootLogin no/' /etc/ssh/sshd_config + systemctl restart ssh + echo "Sécurisation SSH appliquée." + fi +} + +### Fonction pour installer et configurer Fail2Ban +install_fail2ban() { + if dpkg -l | grep -q "^ii fail2ban"; then + echo "Fail2Ban est déjà installé." + else + echo "Installation de Fail2Ban..." + apt install -y fail2ban + fi +} + +### Fonction pour configurer les locales en français UTF-8 +configure_locales() { + echo "Configuration des locales en français UTF-8..." + apt install -y locales + + # Vérifier si fr_FR.UTF-8 est déjà activé + if locale -a | grep -q "fr_FR.utf8"; then + echo "Les locales en fr_FR.UTF-8 sont déjà activées." + else + sed -i 's/# fr_FR.UTF-8 UTF-8/fr_FR.UTF-8 UTF-8/' /etc/locale.gen + locale-gen + fi + + # Appliquer les variables locales si nécessaire + if grep -q "LANG=fr_FR.UTF-8" /etc/default/locale; then + echo "Les variables locales sont déjà configurées." + else + else + update-locale LANG=fr_FR.UTF-8 LANGUAGE=fr_FR.UTF-8 LC_ALL=fr_FR.UTF-8 + echo "Variables locales mises à jour." + fi +} + +### SECTION PRINCIPALE : Activer/Désactiver les options ici +update_system +install_sudo +add_admin_user +configure_ssh +install_fail2ban +configure_locales + +echo "Installation et configuration de base terminées." +echo "Vous pouvez maintenant vous connecter avec l'utilisateur : $NEW_USER" \ No newline at end of file