Files

3.6 KiB

post-install.sh

Script Bash de personnalisation d'une installation Debian fraîche : mise à jour du système, création d'un utilisateur sudo, durcissement léger de SSH, confort du shell, fuseau horaire et locale.

Le script est idempotent : il peut être relancé sans dupliquer la configuration ni écraser l'existant (utilisateur, clés SSH, alias).

Ce que fait le script

  • Met à jour le système (apt-get update, dist-upgrade, autoremove)
  • Installe curl, wget, git, sudo, locales et unattended-upgrades
  • Active les mises à jour de sécurité automatiques (/etc/apt/apt.conf.d/20auto-upgrades)
  • Crée un utilisateur et l'ajoute au groupe sudo
  • Copie les clés SSH de root vers ce nouvel utilisateur (permissions 700/600)
  • Change le port SSH via un fichier drop-in dans /etc/ssh/sshd_config.d/, après validation avec sshd -t
  • Installe et configure fail2ban (optionnel, la question est posée pendant l'exécution)
  • Ajoute des alias (ls, ll, l) et la coloration dans le .bashrc de root et de l'utilisateur
  • Configure le fuseau horaire et la locale

Prérequis

  • Debian 11 ou supérieur (le répertoire /etc/ssh/sshd_config.d/ est requis)
  • Un accès root (ou sudo)
  • Un accès réseau pour installer les paquets

Utilisation

git clone https://github.com/<utilisateur>/<depot>.git
cd <depot>
chmod +x post-install.sh
sudo ./post-install.sh

Options

Option Description Défaut
-u NOM Nom de l'utilisateur à créer ldfa
-p PORT Port SSH 50822
-f Installe fail2ban sans poser la question question posée
-h Affiche l'aide

Exemples :

sudo ./post-install.sh -u alice -p 2222
sudo ./post-install.sh -f

Variables d'environnement

Les valeurs par défaut peuvent aussi être modifiées par variables d'environnement :

Variable Description Défaut
NEW_USER Utilisateur à créer ldfa
SSH_PORT Port SSH 50822
TIMEZONE Fuseau horaire Europe/Paris
LOCALE Locale du système fr_FR.UTF-8
INSTALL_FAIL2BAN ask (question), 1 (oui), 0 (non) ask
sudo TIMEZONE=Europe/Brussels INSTALL_FAIL2BAN=0 ./post-install.sh

⚠️ Avant de lancer le script

Le script modifie la configuration SSH. Pour ne pas vous retrouver bloqué :

  1. Ouvrez le port SSH choisi dans votre pare-feu (et chez votre hébergeur, le cas échéant) avant de fermer votre session.
  2. Testez la connexion dans un nouveau terminal (ssh -p <port> <utilisateur>@<serveur>) avant de quitter la session d'origine.
  3. Le script copie les clés de /root/.ssh/authorized_keys. S'il n'existe pas, aucune clé n'est copiée : prévoyez un mot de passe pour le nouvel utilisateur.

Le script demande un mot de passe pour le nouvel utilisateur et propose un redémarrage à la fin. Ces questions nécessitent un terminal interactif : sans terminal (cron, pipe), le redémarrage est seulement recommandé et fail2ban est ignoré, sauf avec -f.

Pistes d'amélioration

Ces options ne sont volontairement pas activées par défaut :

  • Désactiver la connexion SSH de root (PermitRootLogin no) et l'authentification par mot de passe (PasswordAuthentication no), une fois la connexion par clé validée
  • Installer un pare-feu (ufw ou nftables)

Contribuer

Les issues et pull requests sont les bienvenues. Avant de proposer une modification, vérifiez le script avec ShellCheck :

shellcheck post-install.sh

Licence

Distribué sous licence MIT. Voir le fichier LICENSE.