# 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 ```bash git clone https://github.com//.git cd 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 : ```bash 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` | ```bash 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 @`) 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](https://www.shellcheck.net/) : ```bash shellcheck post-install.sh ``` ## Licence Distribué sous licence MIT. Voir le fichier [LICENSE](LICENSE).