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,localesetunattended-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
rootvers ce nouvel utilisateur (permissions 700/600) - Change le port SSH via un fichier drop-in dans
/etc/ssh/sshd_config.d/, après validation avecsshd -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.bashrcde 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é :
- Ouvrez le port SSH choisi dans votre pare-feu (et chez votre hébergeur, le cas échéant) avant de fermer votre session.
- Testez la connexion dans un nouveau terminal (
ssh -p <port> <utilisateur>@<serveur>) avant de quitter la session d'origine. - 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 (
ufwounftables)
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.