diff --git a/README.md b/README.md index 7c1385f..833d652 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,93 @@ -# Scripts-Linux +# post-install.sh -Des scripts Bash pour Linux \ No newline at end of file +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).