---
title: Préparation du serveur
source: https://synapx.fr/blog/preparation-du-serveur/
date: 2026-06-26
category: Debian & serveur
site: SynapxLab
---

# Préparation du serveur

Voici les premières étapes pour préparer un serveur Debian fraîchement installé : mises à jour, allègement du système, outils de base, configuration réseau et durcissement (UFW, Fail2ban).

## Mises à jour et allègement de Debian

```bash
apt update && apt upgrade -y
apt update && apt full-upgrade -y
apt autoremove -y
apt clean
timedatectl set-timezone Europe/Paris
timedatectl status

# Désinstaller les paquets liés au bureau
apt purge gnome* gnome-shell* gdm3          # Debian avec GNOME
apt purge xfce4* lightdm                     # Debian avec XFCE
apt purge task-gnome-desktop task-xfce-desktop task-kde-desktop   # les méta-paquets du "tasksel"
apt autoremove --purge
apt clean

# Démarrer en console (TTY) plutôt qu'en mode graphique
nano /etc/default/grub
# GRUB_CMDLINE_LINUX_DEFAULT=""   # retirer "quiet splash"
```

Outils de base :

```bash
apt install sudo curl git unzip ufw htop net-tools -y
```

- `sudo` : exécuter des commandes avec les droits root sans ouvrir une session root complète.
- `curl` : télécharger ou envoyer des requêtes HTTP (API, scripts).
- `git` : gestionnaire de versions pour cloner du code et déployer.
- `unzip` : décompression de fichiers `.zip`.
- `ufw` (Uncomplicated Firewall) : pare-feu simple à configurer.
- `htop` : supervision interactive du CPU, de la RAM et des processus.
- `net-tools` : anciens utilitaires réseau qui restent utiles (`ifconfig`, `netstat`).
- `-y` : répond automatiquement "oui" aux confirmations d'installation.

Compilation et performance :

```bash
apt install build-essential pkg-config -y
```

- `build-essential` : installe `gcc`, `g++`, `make` et les outils nécessaires à la compilation de logiciels.
- `pkg-config` : localise les chemins et les options de compilation des bibliothèques (utile pour compiler OpenSwoole, des extensions PHP, etc.).

Fuseau horaire et synchronisation de l'horloge :

```bash
timedatectl set-timezone Europe/Paris
timedatectl set-ntp true   # active la synchronisation NTP via le service système
```

## IP statique pour un serveur local

Diagnostic réseau :

```bash
ip -4 addr
ip route
nslookup google.com

systemctl status networking
ping -c 4 google.com
su -   # connexion à l'utilisateur root, évite de répéter sudo en début de ligne
```

Modification du fichier de configuration réseau :

```bash
cp /etc/network/interfaces /etc/network/interfaces-old   # sauvegarde du fichier
nano /etc/network/interfaces
```

```ini
#iface enp0s3 inet dhcp
iface enp0s3 inet static
address 192.168.1.250/24
dns-nameservers 212.27.40.240 212.27.40.241
post-up iptables-restore < /etc/iptables.up.rules
post-up ip6tables-restore < /etc/ip6tables.up.rules
```

```bash
systemctl restart networking
systemctl status networking
reboot
```

## Message de bienvenue (motd)

Un message statique de bienvenue permet d'identifier rapidement le bon serveur. Vous pouvez générer un visuel ASCII sur [textfancy.com](https://textfancy.com/text-art/) ou [patorjk.com](https://patorjk.com/software/taag/).

```bash
nano /etc/motd
```

- Messages dynamiques : `/etc/update-motd.d/`
- Messages de session utilisateur : dans `/etc/profile`, `.bashrc` ou `.profile` (ex. `echo "Bienvenue sur le serveur !"`)

## Fish Shell

Un shell plus agréable à utiliser, avec une interface en couleur.

```bash
apt update
apt install fish
chsh -s /usr/bin/fish
fish
# Documentation : https://fishshell.com/docs/3.0/tutorial.html
```

## Explorer l'arborescence Linux avec tree

```bash
apt update
apt-get install tree
tree
tree -d
tree -a -u -g
```

## Protéger son serveur

La sécurisation d'un serveur constitue une étape essentielle.

- Pare-feu (accès non autorisés) : UFW
- Tentatives d'intrusion (bannit les adresses IP malveillantes) : Fail2Ban
- Antivirus (logiciels et fichiers malveillants) : ClamAV
- Surveillance (état de santé du serveur) : Nagios, Zabbix ou Prometheus
- Sécurisation des accès : SSH & port
- Mises à jour (correctifs de sécurité)
- Sécurité des applications web (injections SQL...) : ModSecurity

## Firewall UFW

UFW est un utilitaire conçu pour simplifier la gestion du pare-feu intégré à Debian. Au lieu de manipuler directement `iptables` avec des commandes plus complexes, il permet d'administrer les règles de manière claire et accessible.

UFW protège votre serveur des accès non autorisés en filtrant les connexions réseau, tandis qu'un WAF protège vos applications web contre les attaques courantes telles que les injections SQL, les XSS et la force brute.

```bash
ss -ap                  # afficher les sockets réseau actives
apt install net-tools
apt-get install ufw -y

ufw allow ssh
ufw allow 2222/tcp       # si vous avez changé le port SSH (ex : 2222)
ufw allow OpenSSH        # pour ne pas se faire verrouiller hors du serveur
#ufw allow ssh           # autorise les connexions sur le port SSH (22 par défaut)
#ufw delete allow 22
ufw delete 3
ufw reset                # réinitialiser entièrement

ufw default allow outgoing   # autoriser toutes les connexions sortantes
ufw default deny incoming    # refuser toutes les connexions entrantes
ufw app list                 # liste les applications disponibles

ufw status numbered          # état actuel avec les règles numérotées
ufw status verbose           # vérifie que tout est OK

ufw enable                   # active le pare-feu
ufw disable                  # désactive complètement UFW

ufw allow 80/tcp    # HTTP
ufw allow 443/tcp   # HTTPS
ufw allow 21/tcp
ufw allow 20/tcp
ufw allow 49156/tcp

# Ports réellement à l'écoute
ss -tuln
netstat -tuln
```

## Installation de Fail2ban

```bash
# cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local   # jail.conf est écrasé à chaque mise à jour
# nano /etc/fail2ban/jail.local                          # créer la config personnalisée

apt-get update && apt-get install fail2ban -y
systemctl restart fail2ban
systemctl enable fail2ban
systemctl status fail2ban
```

Créer une configuration dédiée par service :

```bash
nano /etc/fail2ban/jail.d/ssh.conf
```

```ini
[sshd]
enabled = true
port = 22
logpath = /var/log/auth.log
maxretry = 5
findtime = 600
bantime = 3600
ignoreip = 127.0.0.1 192.168.1.0/24

```

```bash
fail2ban-client status sshd
```

## Fail2ban & UFW

Configuration combinée (`/etc/fail2ban/jail.local`) pour que Fail2ban applique les bannissements via UFW :

```ini
[DEFAULT]
banaction = ufw
bantime  = 10h
findtime  = 10m
maxretry = 5

[ufw]
enabled = true
port = all
filter = ufw
logpath = /var/log/ufw.log
maxretry = 3

[sshd]
enabled = true
port = ssh
filter = sshd
logpath = /var/log/auth.log
maxretry = 5
```

```bash
systemctl restart fail2ban
systemctl restart ufw
```

Vérifications utiles :

| Commande | Sert à... | Niveau |
| --- | --- | --- |
| `systemctl status fail2ban` | Vérifier que le service tourne | OS |
| `fail2ban-client status` | Vérifier que Fail2Ban fonctionne bien | App |
| `fail2ban-client status sshd` | Voir les détails de la jail sshd | Fine |

```bash
systemctl status fail2ban
fail2ban-client status
tail -f /var/log/fail2ban.log
journalctl -xeu fail2ban
```

Désinstallation complète de Fail2Ban et suppression des fichiers résiduels :

```bash
apt-get purge --auto-remove fail2ban -y
rm -rf /etc/fail2ban
rm -rf /var/log/fail2ban.log
```

## Console de surveillance : htop

Console de surveillance affichant l'activité des processeurs ainsi que la consommation totale de mémoire sous forme graphique.

```bash
apt-get install htop
htop
# [F2] pour accéder aux options

tail -f /var/log/fail2ban.log
tail -f /var/log/monit.log
tail -f /var/log/vsftpd.log

# Vider un fichier de log
cat /dev/null > /var/log/vsftpd.log
truncate -s 0 /var/log/vsftpd.log
echo "" > /var/log/vsftpd.log
```
