Un serveur Linux fraîchement installé est une passoire : SSH ouvert sur le port 22, connexion root possible, pas de pare-feu actif. Ce guide vous donne la checklist complète de durcissement que j'applique systématiquement sur tous mes déploiements en production en Afrique de l'Ouest.
# Mise à jour complète du système apt update && apt upgrade -y && apt autoremove -y # Créer un utilisateur admin non-root adduser sysadmin usermod -aG sudo sysadmin # IMPORTANT : Testez la connexion avec cet utilisateur # dans un autre terminal avant de bloquer root !
Port 2222 # Changer le port par défaut AddressFamily inet # IPv4 uniquement si IPv6 non utilisé PermitRootLogin no # Interdire la connexion root directe PasswordAuthentication no # Forcer les clés SSH uniquement PubkeyAuthentication yes MaxAuthTries 3 # Max 3 tentatives par connexion ClientAliveInterval 300 # Déconnecter après 5 min d'inactivité ClientAliveCountMax 2 AllowUsers sysadmin # Whitelist des utilisateurs autorisés X11Forwarding no PrintLastLog yes
# Sur votre poste client : ssh-keygen -t ed25519 -C "sysadmin@smanconde" ssh-copy-id -i ~/.ssh/id_ed25519.pub -p 22 sysadmin@VOTRE_IP # Puis redémarrer SSH sur le serveur : systemctl restart sshd
apt install ufw -y # Politique par défaut : bloquer tout en entrée ufw default deny incoming ufw default allow outgoing # Ouvrir uniquement les ports nécessaires ufw allow 2222/tcp # SSH sur port personnalisé ufw allow 80/tcp # HTTP (si serveur web) ufw allow 443/tcp # HTTPS # Activer et vérifier ufw enable ufw status verbose
apt install fail2ban -y # Créer la configuration locale (NE PAS modifier jail.conf) cat > /etc/fail2ban/jail.local << EOF [DEFAULT] bantime = 3600 findtime = 600 maxretry = 3 banaction = ufw ignoreip = 127.0.0.1/8 ::1 192.168.1.0/24 [sshd] enabled = true port = 2222 logpath = %(sshd_log)s backend = %(sshd_backend)s EOF systemctl enable fail2ban systemctl start fail2ban # Vérifier le statut fail2ban-client status sshd
apt install unattended-upgrades apt-listchanges -y dpkg-reconfigure -pmedium unattended-upgrades # Vérifier la configuration générée cat /etc/apt/apt.conf.d/20auto-upgrades # Devrait afficher : # APT::Periodic::Update-Package-Lists "1"; # APT::Periodic::Unattended-Upgrade "1";
Ces étapes couvrent le minimum incompressible pour tout serveur Linux en production. Pour les serveurs hébergeant des applications critiques (messagerie, base de données, ERP), ajoutez-y un audit de sécurité périodique avec Lynis, une surveillance des logs via Wazuh et un chiffrement des disques LUKS pour les données sensibles.