Un VPS Ubuntu ou Debian fraîchement installé est ouvert par défaut. En quelques minutes après la mise en ligne, des bots automatisés scannent les mots de passe SSH faibles, les ports ouverts et les services non patchés. Cette checklist couvre les étapes essentielles de durcissement pour un serveur de production.
Prérequis
- Ubuntu 22.04 LTS ou Debian 12 (installation fraîche)
- Accès root ou sudo
- Un utilisateur non-root déjà créé
1. Durcissement SSH
L'étape la plus importante — désactiver l'authentification par mot de passe et la connexion root :
# Éditer la configuration SSH
sudo nano /etc/ssh/sshd_configModifier ou ajouter ces lignes :
PermitRootLogin no
PasswordAuthentication no
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
X11Forwarding no
AllowTcpForwarding no
MaxAuthTries 3
LoginGraceTime 30# Redémarrer SSH (gardez la session courante ouverte !)
sudo systemctl restart sshd
# Vérifiez que votre clé fonctionne dans un NOUVEAU terminal avant de fermer l'actuelNe fermez jamais votre seule session SSH avant d'avoir vérifié que la nouvelle fonctionne.
2. Pare-feu avec UFW
# Installer UFW
sudo apt install ufw -y
# Refuser tout le trafic entrant, autoriser le sortant
sudo ufw default deny incoming
sudo ufw default allow outgoing
# Autoriser SSH (utilisez votre port personnalisé si modifié)
sudo ufw allow 22/tcp
# Autoriser le trafic web si nécessaire
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
# Activer le pare-feu
sudo ufw enable
# Vérifier l'état
sudo ufw status verbose3. Fail2Ban — Protection contre le brute force
sudo apt install fail2ban -y
# Créer la config locale (ne jamais modifier /etc/fail2ban/jail.conf directement)
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
sudo nano /etc/fail2ban/jail.localModifier la section [sshd] :
[sshd]
enabled = true
port = ssh
filter = sshd
logpath = /var/log/auth.log
maxretry = 3
bantime = 3600
findtime = 600sudo systemctl enable fail2ban
sudo systemctl start fail2ban
# Vérifier les IPs bannies
sudo fail2ban-client status sshd4. Mises à jour de sécurité automatiques
sudo apt install unattended-upgrades -y
sudo dpkg-reconfigure --priority=low unattended-upgradesÉditer /etc/apt/apt.conf.d/50unattended-upgrades :
Unattended-Upgrade::Allowed-Origins {
"${distro_id}:${distro_codename}-security";
};
Unattended-Upgrade::Remove-Unused-Dependencies "true";
Unattended-Upgrade::Automatic-Reboot "false"; // Mettre true uniquement si acceptable
Unattended-Upgrade::Mail "vous@exemple.com";5. Durcissement du noyau avec sysctl
sudo nano /etc/sysctl.d/99-hardening.conf# Désactiver le transfert IP (sauf si c'est un routeur)
net.ipv4.ip_forward = 0
# Ignorer les broadcasts ICMP
net.ipv4.icmp_echo_ignore_broadcasts = 1
# Protection contre les attaques SYN flood
net.ipv4.tcp_syncookies = 1
# Désactiver le source routing
net.ipv4.conf.all.accept_source_route = 0
net.ipv6.conf.all.accept_source_route = 0
# Journaliser les paquets martiens
net.ipv4.conf.all.log_martians = 1
# Désactiver IPv6 si non utilisé
net.ipv6.conf.all.disable_ipv6 = 1sudo sysctl -p /etc/sysctl.d/99-hardening.conf6. Supprimer les services inutiles
# Lister les services en écoute
sudo ss -tlnp
# Désactiver les services inutilisés
sudo systemctl disable --now avahi-daemon
sudo systemctl disable --now cups
sudo systemctl disable --now bluetooth
# Supprimer les paquets inutiles
sudo apt autoremove --purge7. Intégrité des fichiers avec auditd
sudo apt install auditd -y
sudo systemctl enable auditd
# Surveiller les modifications de fichiers sensibles
sudo auditctl -w /etc/passwd -p wa -k identity
sudo auditctl -w /etc/sudoers -p wa -k sudoers
sudo auditctl -w /etc/ssh/sshd_config -p wa -k sshd_config
# Consulter le journal d'audit
sudo ausearch -k sshd_configChecklist de durcissement
- [ ] SSH : auth par clé uniquement, pas de connexion root,
MaxAuthTries 3 - [ ] UFW : refus par défaut, seuls les ports nécessaires ouverts
- [ ] Fail2ban : activé sur SSH avec
maxretry 3 - [ ] Mises à jour automatiques : mises à jour de sécurité appliquées automatiquement
- [ ] sysctl : SYN cookies, pas de transfert IP, pas de source routing
- [ ] Services inutiles : désactivés et supprimés
- [ ] auditd : surveillance de
/etc/passwd,/etc/sudoers, config SSH - [ ] Dernière étape : exécuter
lynis audit systempour un rapport de score
# Optionnel : outil d'audit de sécurité Lynis
sudo apt install lynis -y
sudo lynis audit system