Un serveur connecté à Internet sans protection est compromis en moyenne en moins de 15 minutes. Ce guide ne se contente pas des bases : nous allons transformer votre Debian/Ubuntu en forteresse numérique en appliquant les bonnes pratiques de l'industrie (Hardening).
1. La Règle d'Or : Bannir Root
Se connecter en root est la première vulnérabilité exploitée. Nous allons créer un utilisateur administrateur dédié.
# Création de l'utilisateur (remplacez 'leo' par votre pseudo)
adduser leo
# Installation de sudo si nécessaire
apt update && apt install sudo -y
# Ajout de l'utilisateur au groupe sudo (Admin)
usermod -aG sudo leo
Maintenant, déconnectez-vous et reconnectez-vous avec ce nouvel utilisateur. Nous ne toucherons plus jamais au compte root directement.
2. Blindage du service SSH
Le SSH est la porte d'entrée principale. Nous allons la changer de place et changer la serrure.
A. Clés SSH (Authentification sans mot de passe)
Sur votre ordinateur local (pas le serveur), générez une paire de clés si ce n'est pas déjà fait :
ssh-keygen -t ed25519 -C "mon-email@exemple.com"
Envoyez la clé publique vers le serveur :
ssh-copy-id -i ~/.ssh/id_ed25519.pub leo@VOTRE_IP
B. Configuration du Daemon SSH
Modifions le fichier de configuration du serveur :
sudo nano /etc/ssh/sshd_config
Modifiez ou ajoutez les lignes suivantes pour désactiver les mots de passe et changer le port :
# 1. Changer le port standard (Sécurité par l'obscurité) Port 2255 # 2. Interdire totalement la connexion en Root PermitRootLogin no # 3. Interdire l'authentification par mot de passe (Clés uniquement) PasswordAuthentication no ChallengeResponseAuthentication no # 4. Limiter l'accès aux utilisateurs précis AllowUsers leo
ssh -p 2255 leo@VOTRE_IP. Si ça marche, vous pouvez redémarrer le service : sudo service ssh restart.
3. Pare-feu strict avec UFW
UFW (Uncomplicated Firewall) est une interface simplifiée pour iptables. La stratégie est simple : on ferme tout, et on ouvre au cas par cas.
# Installation sudo apt install ufw -y # 1. Politique par défaut : On refuse tout ce qui entre sudo ufw default deny incoming # 2. On laisse sortir le trafic (mises à jour, curl...) sudo ufw default allow outgoing # 3. IMPORTANT : Ouvrir le nouveau port SSH sudo ufw allow 2255/tcp # 4. Ouvrir les ports Web (si serveur web) sudo ufw allow 80/tcp sudo ufw allow 443/tcp # Activation sudo ufw enable
4. Protection active avec Fail2Ban
Fail2Ban analyse les logs (journaux) en temps réel. Si une IP fait trop d'erreurs (mauvais mot de passe, scan d'URL...), elle est bannie via le pare-feu.
sudo apt install fail2ban -y
Créez une configuration locale pour protéger SSH (ne touchez pas au fichier jail.conf direct) :
sudo nano /etc/fail2ban/jail.local
Collez ceci :
[sshd] enabled = true port = 2255 logpath = %(sshd_log)s backend = %(sshd_backend)s maxretry = 3 bantime = 3600 # Bannissement pendant 1h
Redémarrez le service : sudo systemctl restart fail2ban.
5. Protection du Kernel (Sysctl)
C'est ici que l'on reconnaît un serveur bien configuré. Nous allons modifier les paramètres du noyau Linux pour empêcher certaines attaques réseaux (IP Spoofing, MITM...).
sudo nano /etc/sysctl.conf
Décommentez ou ajoutez ces lignes :
# Ignorer les ping (ICMP Echo Request) - Optionnel mais furtif net.ipv4.icmp_echo_ignore_all = 1 # Protection contre l'IP Spoofing net.ipv4.conf.all.rp_filter = 1 net.ipv4.conf.default.rp_filter = 1 # Ignorer les redirections ICMP (Empêche les attaques MITM) net.ipv4.conf.all.accept_redirects = 0 net.ipv6.conf.all.accept_redirects = 0 net.ipv4.conf.all.send_redirects = 0 # Loguer les paquets suspects (Martians) net.ipv4.conf.all.log_martians = 1
Appliquez les changements immédiatement : sudo sysctl -p.
6. Mises à jour automatiques
La faille de sécurité la plus dangereuse est souvent un paquet non mis à jour. Automatisons les correctifs de sécurité.
sudo apt install unattended-upgrades -y sudo dpkg-reconfigure --priority=low unattended-upgrades
Répondez "Oui" à la création automatique du fichier de configuration. Votre serveur installera désormais les correctifs de sécurité critiques tout seul chaque nuit.
Conclusion
Votre serveur est maintenant bien plus sécurisé que 99% des machines par défaut. Pour aller plus loin, je vous conseille d'installer un outil d'audit comme Lynis ou de mettre en place une authentification double facteur (2FA) sur le SSH.