Table des matières
- La fondation : Mises à jour du système et gestion des paquets
- Durcissement de l'accès SSH
- Configuration du pare-feu et renforcement du réseau
- Contrôle d'accès et authentification
- Surveillance, audit et détection des intrusions
- Contrôle d'accès et gestion des privilèges
- Durcissement et entretien continus
- Conclusion
La sécurisation d'un serveur Debian 12 nécessite bien plus que la simple installation du système d'exploitation et sa connexion à Internet. La plupart des administrateurs système suivent les directives de sécurité de base - mise à jour des paquets, activation d'un pare-feu et désactivation de la connexion root - mais négligent de nombreuses étapes critiques de renforcement qui amplifient de manière significative la posture de sécurité. Ces mesures négligées créent des failles exploitables que les attaquants sophistiqués recherchent activement. Ce guide complet révèle 15 étapes essentielles de renforcement que les administrateurs système expérimentés manquent souvent, transformant votre serveur Debian 12 de simplement fonctionnel à véritablement renforcé contre les menaces modernes.
La différence entre une installation basique et un serveur Debian 12 correctement renforcé détermine si votre système survivra à des attaques ciblées ou s'il deviendra une autre statistique de ransomware. Chaque étape négligée représente une surface d'attaque supplémentaire, une vulnérabilité potentielle et une occasion manquée d'élever les barrières de sécurité avant que les menaces ne se matérialisent.

La fondation : Mises à jour du système et gestion des paquets
Étape 1 : Mettre en œuvre des mises à jour de sécurité automatisées avec des mises à niveau sans surveillance
Alors que la plupart des administrateurs exécutent des apt update et apt upgrade, En revanche, un plus petit nombre d'entre eux mettent en œuvre des correctifs de sécurité automatisés - une omission critique qui laisse les systèmes vulnérables entre les fenêtres de mise à jour manuelle.
Les correctifs de sécurité de Debian traitent les vulnérabilités connues et activement exploitées par les attaquants. Les mises à jour manuelles créent de dangereuses lacunes : le lundi matin, lorsque vous lancez les mises à jour, une vulnérabilité de type "zero-day" du mardi circule déjà parmi les équipes d'attaquants. Le mardi soir, votre système n'est toujours pas corrigé malgré l'existence d'un correctif dans les dépôts Debian.
Installer les mises à jour automatiques de sécurité :
bashsudo apt update && sudo apt upgrade -y
sudo apt install unattended-upgrades apt-listchanges -y
sudo dpkg-reconfigure -plow unattended-upgrades
Configurez les mises à jour de sécurité automatiques en modifiant /etc/apt/apt.conf.d/50unattended-upgrades:
bashsudo nano /etc/apt/apt.conf.d/50unattended-upgrades
Assurez-vous que ces paramètres essentiels sont activés :
texteUnattended-Upgrade::Allowed-Origins {
    "${distro_id}:${distro_codename}-security" ;
} ;
Unattended-Upgrade::Mail "your-email@example.com" ;
Unattended-Upgrade::MailOnlyOnError "true" ;
Unattended-Upgrade::Remove-Unused-Kernel-Packages "true" ;
Unattended-Upgrade::AutoFixInterruptedDpkg "true" ;
Cette configuration applique automatiquement les mises à jour de sécurité quotidiennes, supprime les paquets inutilisés du noyau et ne vous envoie un courrier électronique qu'en cas d'erreur, ce qui permet d'éviter les failles de sécurité dangereuses sans alourdir la charge administrative.
Durcissement de la sécurité du serveur Debian 12 avec des couches de protection du pare-feu
Durcissement de l'accès SSH
Étape 2 : Renforcer l'authentification par clé SSH (désactiver l'authentification par mot de passe)
La plupart des serveurs ont une authentification par mot de passe SSH activée par défaut, une vulnérabilité qui invite à des attaques par force brute à partir de n'importe quel endroit sur Internet. Les attaquants utilisent des outils automatisés pour tenter des millions de combinaisons de mots de passe chaque nuit, et à moins que vous n'utilisiez des mots de passe exceptionnellement forts avec fail2ban, quelqu'un finira par réussir.
L'authentification par clé SSH est supérieure sur le plan cryptographique : même si des pirates s'introduisent dans votre réseau, ils ne peuvent pas utiliser des mots de passe volés, car le serveur ne les accepte plus.
Générez une paire de clés SSH forte sur votre machine locale :
bashssh-keygen -t rsa -b 4096 -f ~/.ssh/debian_server -N "your-strong-passphrase"
Copiez la clé publique sur votre serveur (exécutez cette opération une fois depuis votre machine locale) :
bashssh-copy-id -i ~/.ssh/debian_server.pub username@votre_ip_serveur
Vérifiez maintenant que l'accès par clé fonctionne avant de désactiver les mots de passe :
bashssh -i ~/.ssh/debian_server username@votre_ip_serveur
Modifiez la configuration du démon SSH :
bashsudo nano /etc/ssh/sshd_config
Appliquez ces paramètres SSH renforcés :
texteProtocole 2
Port 22
AddressFamily inet
Adresse d'écoute 0.0.0.0
PermitRootLogin non
PubkeyAuthentication oui
PasswordAuthentication non
ChallengeResponseAuthentication non
KbdInteractiveAuthentication non
UsePAM oui
PermitEmptyPasswords non
MaxAuthTries 3
MaxSessions 5
LoginGraceTime 1m
StrictModes oui
IgnoreRhosts oui
HostbasedAuthentication non
RhostsRSAAuthentication non
RSAAuthentication non
X11Forwarding non
X11UseLocalhost non
TCPKeepAlive oui
ClientAliveInterval 300
ClientAliveCountMax 2
Sous-système sftp /usr/lib/openssh/sftp-server
Redémarrez SSH pour appliquer les changements :
bashsudo systemctl restart ssh
Testez soigneusement votre configuration avant de vous déconnecter de votre session en cours. En cas de mauvaise configuration, vous risquez un verrouillage permanent.
Authentification par clé SSH pour un accès sécurisé au serveur
Étape 3 : Modifier le port SSH par rapport à la valeur par défaut de 22 (facultatif mais efficace)
Bien que cela ne soit pas nécessaire d'un point de vue cryptographique, le fait de changer le port SSH pour le port 22 permet de réduire le bruit des scanners de ports des outils d'attaque automatisés. Il s'agit d'une sécurité par l'obscurité, utile en pratique pour réduire le spam des journaux et ralentir la reconnaissance occasionnelle.
En /etc/ssh/sshd_config, modifier :
textePort 2222
Mettez à jour votre pare-feu pour autoriser le nouveau port :
bashsudo ufw allow 2222/tcp
sudo ufw delete allow 22/tcp
Documentez ce changement - vous l'oublierez lors de votre prochaine urgence à 3 heures du matin.
Étape 4 : Mise en œuvre de Fail2ban pour la prévention des attaques par la force brute
Même avec l'authentification par clé SSH, les services auxiliaires (courrier, applications web, etc.) peuvent accepter des mots de passe. Fail2ban surveille les échecs des tentatives d'authentification et interdit temporairement les adresses IP incriminées, stoppant ainsi les attaques par force brute avant qu'elles n'aboutissent.
Installer Fail2ban :
bashsudo apt update && sudo apt install fail2ban -y
Configurez Fail2ban en copiant la configuration par défaut :
bashsudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
Modifier la configuration :
bashsudo nano /etc/fail2ban/jail.local
Dans le cadre de la [PAR DÉFAUT] configurer :
texte[PAR DÉFAUT]
bantime = 3600
temps de recherche = 600
maxretry = 3
ignoreip = 127.0.0.1/8 ::1 your_trusted_ip
[sshd]
enabled = true
port = 2222
filter = sshd
logpath = /var/log/auth.log
maxretry = 3
bantime = 1800
Démarrer et activer Fail2ban :
bashsudo systemctl enable fail2ban
sudo systemctl start fail2ban
Surveiller les interdictions actives :
bashsudo fail2ban-client status sshd
Cette configuration interdit les IP pendant 1800 secondes (30 minutes) après 3 tentatives SSH infructueuses dans une fenêtre de 10 minutes, ce qui est suffisamment agressif pour arrêter les attaques par force brute tout en évitant les faux positifs.
Configuration du pare-feu et renforcement du réseau
Étape 5 : Configurer le pare-feu UFW avec des politiques strictes par défaut
De nombreux administrateurs omettent de configurer le pare-feu ou utilisent des règles trop permissives. Un pare-feu correctement configuré est votre première ligne de défense contre les accès non autorisés.
Installer et configurer UFW (Uncomplicated Firewall) :
bashsudo apt update && sudo apt install ufw -y
Avant d'activer l'UFW, autorisez SSH pour éviter le verrouillage :
bashsudo ufw allow 2222/tcp
sudo ufw allow ssh
Définir des politiques restrictives par défaut :
bashsudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw default deny routed
Activer l'UFW :
bashsudo ufw enable
Pour un serveur web, autorisez également HTTP et HTTPS :
bashsudo ufw allow 80/tcp
sudo ufw allow 443/tcp
N'autoriser que des adresses IP spécifiques à accéder à des services sensibles :
bashsudo ufw allow from 192.168.1.100 to any port 3306
Visualisez votre configuration :
bashsudo ufw status verbose
Étape 6 : Mise en œuvre du durcissement des paramètres du noyau à l'aide de Sysctl
Les administrateurs système modifient rarement les paramètres du noyau au-delà des valeurs par défaut, ce qui constitue un oubli important. Le durcissement du noyau par le biais de sysctl peut empêcher des classes entières d'attaques et d'exploits sur le réseau.
Créer un fichier de configuration du durcissement :
bashsudo nano /etc/sysctl.d/99-hardening.conf
Ajouter des paramètres complets de durcissement du noyau :
texte# Sécurité du réseau
net.ipv4.ip_forward = 0
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0
net.ipv4.conf.all.accept_redirects = 0
net.ipv4.conf.default.accept_redirects = 0
net.ipv4.conf.all.secure_redirects = 0
net.ipv4.conf.default.secure_redirects = 0
net.ipv4.conf.all.accept_source_route = 0
net.ipv4.conf.default.accept_source_route = 0
net.ipv4.icmp_echo_ignore_all = 0
net.ipv4.icmp_echo_ignore_broadcasts = 1
net.ipv4.tcp_syncookies = 1
net.ipv4.conf.all.rp_filter = 1
net.ipv4.conf.default.rp_filter = 1
Sécurité IPv6 #
net.ipv6.conf.all.disable_ipv6 = 0
net.ipv6.conf.all.forwarding = 0
net.ipv6.conf.all.accept_redirects = 0
net.ipv6.conf.default.accept_redirects = 0
Protection de la mémoire #
kernel.dmesg_restrict = 1
kernel.printk = 3 3 3 3 3
kernel.kptr_restrict = 2
kernel.core_uses_pid = 1
kernel.kexec_load_disabled = 1
fs.protected_hardlinks = 1
fs.protected_symlinks = 1
Restrictions du processus #
kernel.unprivileged_userns_clone = 0
kernel.perf_event_paranoid = 3
Appliquer le durcissement immédiatement :
bashsudo sysctl -p /etc/sysctl.d/99-hardening.conf
Ces paramètres désactivent la redirection IP (sauf si vous en avez besoin), activent les cookies SYN pour empêcher les attaques par inondation SYN, activent le filtrage par chemin inverse pour empêcher l'usurpation d'adresse IP et mettent en œuvre des protections de la mémoire contre la divulgation d'informations.
Étape 7 : Désactiver les services réseau inutiles
Chaque service en cours d'exécution représente une surface d'attaque potentielle. De nombreuses installations Debian par défaut incluent des services dont vous n'avez pas besoin : serveurs de courrier électronique, résolveurs DNS, et même Bluetooth sur les serveurs sans tête.
Identifier les services en cours d'exécution :
bashsudo systemctl list-units --type=service --state=running
Vérifiez quels sont les services qui écoutent sur les ports du réseau :
bashsudo ss -tulnp
Désactivez les services inutiles. Pour un serveur web de base, vous n'avez probablement pas besoin de :
bashsudo systemctl disable bluetooth.service
sudo systemctl disable cups.service
sudo systemctl disable avahi-daemon.service
sudo systemctl mask isc-dhcp-server
sudo systemctl mask isc-dhcp-server6
Après la désactivation, arrêtez les services :
bashsudo systemctl stop bluetooth.service
sudo systemctl stop cups.service
Documentez les services que vous avez désactivés et les raisons pour lesquelles vous l'avez fait - ce point devient essentiel lors des audits de sécurité.
Contrôle d'accès et authentification
Étape 8 : Mise en œuvre de l'authentification à deux facteurs pour SSH
L'authentification à deux facteurs (2FA) ajoute une deuxième couche de sécurité : même si quelqu'un obtient votre clé privée SSH, il ne peut pas accéder à votre serveur sans le deuxième facteur.
Installez Google Authenticator pour TOTP (Time-based One-Time Password) :
bashsudo apt update && sudo apt install libpam-google-authenticator -y
Configurez 2FA en tant qu'utilisateur (pas en tant que root) :
bashgoogle-authenticator -t -f -d -w 10 -r 3 -R 30
Cela génère un code QR à scanner avec votre application d'authentification. Conservez les codes de sauvegarde dans un endroit sûr : ils constituent votre mécanisme de récupération si vous perdez votre dispositif d'authentification.
Modifier la configuration de PAM SSH pour exiger 2FA :
bashsudo nano /etc/pam.d/sshd
Ajouter cette ligne avant @include common-auth:
texteauth requis pam_google_authenticator.so nullok
Modifier la configuration du démon SSH :
bashsudo nano /etc/ssh/sshd_config
Ajouter ou modifier :
texteChallengeResponseAuthentication oui
Méthodes d'authentification clé publique, clavier interactif
Redémarrer SSH :
bashsudo systemctl restart ssh
Testez votre configuration avec un nouveau terminal avant de fermer votre session actuelle.
L'authentification à deux facteurs sécurise l'accès au serveur Debian
Étape 9 : Renforcer les politiques relatives aux comptes d'utilisateurs
Les règles par défaut des comptes d'utilisateurs dans Debian n'ont pas de restrictions suffisantes. Sans durcissement, les politiques de mots de passe et les mécanismes de verrouillage des comptes laissent les systèmes vulnérables à la compromission des informations d'identification.
Editer /etc/login.defs pour mettre en œuvre des politiques de mot de passe plus strictes :
bashsudo nano /etc/login.defs
Modifiez ces paramètres essentiels :
texteJOURS_MAX 30
JOURS_MIN 1
PASS_WARN_AGE 7
LOGIN_RETRIES 3
LOGIN_TIMEOUT 60
FAILLOG_ENAB oui
LOG_UNKFAIL_ENAB oui
LOG_OK_LOGINS oui
SYSLOG_SU_ENAB oui
Désactiver les comptes d'utilisateurs inutiles :
bashsudo passwd -l games
sudo passwd -l news
sudo passwd -l uucp
Créer une configuration sudo forte nécessitant des mots de passe et un audit de l'utilisation de sudo :
bashsudo visudo
S'assurer de l'existence de ces lignes :
texteValeurs par défaut use_pty
Par défaut log_input, log_output
Valeurs par défaut requirepass
%sudo ALL=(ALL:ALL) ALL
Il force les commandes sudo dans un pseudo-terminal, enregistre toutes les entrées/sorties et exige l'authentification par mot de passe pour l'escalade des privilèges.
Surveillance, audit et détection des intrusions
Étape 10 : Mise en œuvre d'une journalisation complète avec Auditd
La plupart des administrateurs s'appuient uniquement sur le syslog, sans tenir compte des événements de sécurité détaillés capturés par Auditd. Auditd fournit des pistes d'audit granulaires essentielles pour les enquêtes judiciaires et la conformité.
Installer auditd :
bashsudo apt update && sudo apt install auditd audispd-plugins -y
Configurez auditd en éditant /etc/audit/rules.d/audit.rules:
bashsudo nano /etc/audit/rules.d/audit.rules
Ajouter des règles d'audit critiques :
texte# Supprimer toute règle existante
-D
# Taille du tampon
-b 8192
Mode de défaillance #
-f 2
# Vérifier les journaux d'audit
-w /var/log/audit/ -k auditlog
# Contrôler l'administration du système
-w /etc/sudoers -p wa -k sudoers
-w /etc/sudoers.d/ -p wa -k sudoers
# Audit des appels système
-a always,exit -F arch=b64 -S execve -k exec
-a always,exit -F arch=b32 -S execve -k exec
# Audit des modifications de fichiers
-w /etc/passwd -p wa -k identity
-w /etc/group -p wa -k identity
# Rendre la configuration immuable
-e 2
Charger les règles d'audit :
bashsudo systemctl restart auditd
Consulter les journaux d'audit :
bashsudo ausearch -m EXECVE --start recent
Produire des rapports d'audit :
bashsudo aureport
Auditd génère d'énormes journaux - configurez la rotation des journaux pour éviter les problèmes d'espace disque.
Étape 11 : Installer les outils de détection de rootkits et de logiciels malveillants
De nombreux administrateurs supposent que leurs systèmes sont exempts de logiciels malveillants parce que rien ne semble manifestement anormal. Les rootkits sophistiqués dissimulent leur présence tout en permettant aux attaquants d'y accéder.
Installer un chasseur de rootkit :
bashsudo apt update && sudo apt install rkhunter -y
sudo rkhunter --update
sudo rkhunter --check --skip-warning
Installez chkrootkit pour la détection des logiciels malveillants en deuxième intention :
bashsudo apt install chkrootkit -y
sudo chkrootkit
Installer AIDE (Advanced Intrusion Detection Environment) pour la surveillance de l'intégrité des fichiers :
bashsudo apt install aide aide-common -y
sudo aideinit
sudo cp /var/lib/aide/aide.db.new /var/lib/aide/aide.db
sudo aide --check
Programmer des analyses hebdomadaires via cron :
bashsudo nano /etc/cron.d/rootkit-checks
Ajouter :
texte0 2 * * 0 root /usr/bin/rkhunter --check --skip-warning 2>&1 | mail -s "Weekly rootkit check" your@email.com
0 3 * * 0 root /usr/bin/aide --check 2>&1 | mail -s "Weekly AIDE check" your@email.com
Ces outils vous avertissent de la présence de rootkits et de logiciels malveillants avant qu'ils ne deviennent persistants.
Étape 12 : Activer et surveiller les journaux du système
Les administrateurs système font souvent fonctionner le système syslog, mais ne consultent jamais les journaux. Les journaux ne sont utiles que si vous les surveillez activement.
Configurer rsyslog pour une journalisation complète :
bashsudo nano /etc/rsyslog.conf
S'assurer que les modules critiques sont activés :
textemodule(load="imuxsock")
module(load="imklog")
module(load="imtcp")
input(type="imtcp" port="514")
Configurer la rotation des journaux avec logrotate :
bashsudo nano /etc/logrotate.d/rsyslog
Assurer une rotation correcte :
texte/var/log/syslog {
    quotidien
    rotation 14
    compresser
    delaycompress
    notifempty
    créer 0640 syslog adm
    sharedscripts
    postrotate
        /usr/lib/rsyslog/rsyslog-rotate
    endscript
}
Installer et configurer logwatch pour obtenir des résumés quotidiens des journaux :
bashsudo apt install logwatch -y
sudo nano /etc/logwatch/conf/logwatch.conf
Configurer l'envoi du courrier électronique :
texteSortie = mail
Format = html
Email = your@email.com
Nom d'hôte = nom de votre serveur
Contrôle d'accès et gestion des privilèges

Étape 13 : Mise en œuvre et application du contrôle d'accès obligatoire
Les systèmes d'autorisation Linux standard (DAC) n'ont pas la granularité nécessaire pour empêcher les applications compromises d'endommager le système. AppArmor fournit un contrôle d'accès obligatoire (MAC) basé sur le profil, qui protège contre les mouvements latéraux après la compromission.
Debian inclut AppArmor par défaut mais souvent avec des profils minimaux chargés. Vérifiez qu'AppArmor est actif :
bashsudo aa-status
Installer des profils AppArmor supplémentaires :
bashsudo apt install apparmor-profiles apparmor-profiles-extra apparmor-utils -y
Profils de rechargement :
bashsudo systemctl reload apparmor
Vérifier que la protection est active :
bashsudo aa-status | grep "profiles in enforce mode" (profils en mode exécution)"
Créer des profils AppArmor personnalisés pour les applications sensibles :
bashsudo aa-genprof /usr/bin/votre-application
AppArmor limite les applications aux ressources qui leur sont destinées, empêchant les serveurs web compromis d'accéder aux fichiers système ou à la configuration des bases de données.
Étape 14 : Configuration des autorisations de fichiers sécurisés et de l'Umask
Les permissions de fichiers par défaut dans Debian autorisent des accès en lecture inutiles. Une configuration correcte de l'umask empêche les fichiers sensibles d'être lisibles par le monde entier.
Vérifier l'umask actuel :
bashmasque
Définir les valeurs par défaut de la sécurité dans /etc/profile.d/ pour tous les utilisateurs :
bashsudo nano /etc/profile.d/secure-umask.sh
Ajouter :
texteif [ $UID -ge 1000 ] ; then
    umask 0077
else
    umask 0027
fi
Le rendre exécutable :
bashsudo chmod 644 /etc/profile.d/secure-umask.sh
Vérifier les autorisations actuelles pour les fichiers sensibles lisibles par le monde entier :
bashsudo find /etc -type f -perm -444 -exec ls -l {} \ ;
sudo find /home -type f -perm -444 -exec ls -l {} \ ;
Supprimer les autorisations de lecture inutiles :
bashsudo chmod 600 /etc/ssh/sshd_config
sudo chmod 640 /etc/sudoers
Étape 15 : Désactiver les capacités inutiles du système de fichiers
Les systèmes Linux modernes accordent des capacités granulaires aux programmes au lieu d'établir des distinctions binaires root/non-root. Les capacités inutiles des binaires du système créent des voies d'escalade des privilèges.
Identifier les capacités des binaires du système :
bashgetcap -r /usr/bin 2>/dev/null
getcap -r /usr/sbin 2>/dev/null
Supprimer les capacités inutiles (exemple) :
bashsudo setcap -r /usr/bin/dumpcap
sudo setcap -r /usr/bin/chsh
Documentez les capacités qui sont nécessaires à vos applications et supprimez les autres - chacune d'entre elles représente une escalade potentielle des privilèges si elle est exploitée.
Durcissement et entretien continus
Après la mise en œuvre de ces 15 étapes de renforcement, la sécurité devient un processus continu :
Tâches mensuelles: Examiner les journaux d'audit à la recherche d'anomalies, vérifier les interdictions de Fail2ban à la recherche de modèles, mettre à jour les paramètres du noyau si nécessaire, vérifier le fonctionnement des profils AppArmor.
Tâches trimestrielles: Exécuter des analyses complètes de rootkits, examiner les règles de pare-feu pour détecter les exceptions inutiles, vérifier les comptes d'utilisateurs pour l'accès inactif, vérifier les services obsolètes qui peuvent être désactivés.
Annuellement: Réaliser des audits de sécurité complets à l'aide d'outils tels que Lynis, examiner et mettre à jour toutes les politiques de sécurité, tester les procédures de reprise après sinistre, mettre à jour les plans d'intervention en cas d'incident.
Conclusion
La différence entre un serveur Debian 12 vulnérable et un serveur renforcé réside dans l'exécution de ces 15 étapes que de nombreux administrateurs système négligent. Des mises à jour de sécurité automatisées au durcissement des clés SSH, en passant par l'ajustement des paramètres du noyau, la journalisation complète et la surveillance continue, chaque mesure s'attaque à des vecteurs d'attaque spécifiques que les attaquants sophistiqués exploitent quotidiennement.
Commencez par les étapes fondamentales : mise à jour automatique, authentification par clé SSH, configuration du pare-feu et activation du 2FA. Passez ensuite à la surveillance et à la détection des intrusions. N'essayez pas de tout mettre en œuvre simultanément ; le renforcement progressif permet d'éviter les erreurs de configuration et de comprendre chaque composant. Documentez soigneusement vos changements, testez les configurations avant de les déployer en production et maintenez des pratiques de surveillance régulières.
Votre serveur Debian 12 ne sera jamais 100% sûr - la sécurité est un voyage continu, pas une destination. Mais en mettant en œuvre ces 15 étapes de renforcement, vous éliminez les fruits à portée de main que les attaques automatisées exploitent et vous établissez des défenses suffisamment sophistiquées pour repousser tous les adversaires, à l'exception des plus déterminés et des plus riches en ressources.

 Français
Français				 English
English					           Deutsch
Deutsch					           Español
Español					           Italiano
Italiano