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
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 :
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 :
apt install build-essential pkg-config -y
build-essential: installegcc,g++,makeet 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 :
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 :
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 :
cp /etc/network/interfaces /etc/network/interfaces-old # sauvegarde du fichier
nano /etc/network/interfaces
#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
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 ou patorjk.com.
nano /etc/motd
- Messages dynamiques :
/etc/update-motd.d/ - Messages de session utilisateur : dans
/etc/profile,.bashrcou.profile(ex.echo "Bienvenue sur le serveur !")
Fish Shell
Un shell plus agréable à utiliser, avec une interface en couleur.
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
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.
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
# 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 :
nano /etc/fail2ban/jail.d/ssh.conf
[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
fail2ban-client status sshd
Fail2ban & UFW
Configuration combinée (/etc/fail2ban/jail.local) pour que Fail2ban applique les bannissements via UFW :
[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
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 |
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 :
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.
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