Durcissement de serveur sur Ubuntu : Réduire la surface d’attaque
Durcissement de serveur sous Ubuntu : réduire la surface d'attaque
Cet article explique comment durcir un serveur Ubuntu en désactivant les services inutiles, en minimisant les droits et en configurant le pare-feu. Il est destiné aux administrateurs système qui souhaitent mettre en place un serveur de production de manière sécurisée.
Prérequis
- Ubuntu Server 22.04 LTS ou 24.04 LTS (installation neuve) - Accès root ou un utilisateur disposant des droits sudo - Connaissances de base de la ligne de commande Linux - Optionnel : abonnement Ubuntu Pro pour des fonctionnalités de sécurité supplémentaires
Étapes
1. Mettre à jour le système vers les dernières versions de sécurité
Une installation Ubuntu neuve peut contenir des paquets obsolètes. Mettez tout à jour avant d'apporter d'autres modifications.
sudo apt update && sudo apt upgrade -y
2. Inventorier les services et ports inutilisés
Avant de désactiver quoi que ce soit, vous devez savoir ce qui tourne. Vérifiez quels services sont actifs et quels ports sont ouverts.
systemctl list-units --type=service --state=running
ss -tulpnFaites une liste des services dont vous n'avez pas besoin pour la fonction du serveur. Pensez à des services comme `cups`, `avahi-daemon` ou `bluetooth` sur un serveur dédié.
3. Désactiver et supprimer les services superflus
Désactivez chaque service superflu et empêchez son chargement au démarrage. Remplacez `dienstnaam` par le nom réel du service de l'étape 2.
sudo systemctl stop dienstnaam
sudo systemctl disable dienstnaamSi vous souhaitez supprimer complètement le service, utilisez `apt purge`. Cela supprime également les fichiers de configuration.
sudo apt purge dienstnaam -y
4. Appliquer des droits minimaux avec sudo et les comptes utilisateurs
Créez un utilisateur séparé pour les tâches quotidiennes au lieu de root. Cet utilisateur ne reçoit que les droits nécessaires.
sudo adduser beheerder
sudo usermod -aG sudo beheerderTestez le nouvel utilisateur en vous connectant et en exécutant une commande avec sudo. N'utilisez root qu'en cas d'urgence.
5. Vérifier et renforcer les permissions des fichiers
Vérifiez les permissions des fichiers système critiques. Les commandes suivantes donnent un aperçu de qui peut lire, modifier ou exécuter quoi.
ls -la /etc/passwd /etc/shadow /etc/ssh/sshd_config
sudo chmod 644 /etc/passwd
sudo chmod 640 /etc/shadowDéfinissez un umask par défaut sécurisé pour les nouveaux fichiers. Ajoutez ceci à `/etc/profile` :
echo "umask 027" | sudo tee -a /etc/profile
6. Configurer le pare-feu avec ufw
Activez l'Uncomplicated Firewall et n'autorisez que les ports dont le serveur a réellement besoin. Remplacez `22` par le port de votre service SSH si vous l'avez modifié.
sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw allow 22/tcp
sudo ufw enableVérifiez l'état du pare-feu pour confirmer que les règles sont actives.
sudo ufw status verbose
7. Appliquer le durcissement SSH
Modifiez la configuration SSH pour désactiver les méthodes d'accès faibles. Éditez `/etc/ssh/sshd_config` et modifiez ou ajoutez les lignes suivantes :
sudo nano /etc/ssh/sshd_config
Dans ce fichier, placez :
PermitRootLogin no
PasswordAuthentication no
PubkeyAuthentication yes
MaxAuthTries 3Redémarrez le service SSH pour appliquer les modifications.
sudo systemctl restart sshd
Attention : ne passez `PasswordAuthentication` à `no` qu'après avoir configuré et testé vos clés SSH. Sinon, vous vous enfermerez dehors.
8. Activer Ubuntu Pro pour le patch automatisé
Ubuntu Pro offre des fonctionnalités de sécurité supplémentaires comme livepatch et des mises à jour de sécurité étendues. Activez le service avec les informations de votre abonnement.
sudo pro attach jouw-contract-token
Vérifiez ensuite quels services de sécurité sont actifs.
sudo pro status
Vérification
Effectuez ces contrôles pour confirmer que le durcissement a été correctement appliqué :
sudo ufw status verbose
systemctl list-units --type=service --state=running
ss -tulpn | grep LISTEN
sudo pro statusLe pare-feu doit être actif avec uniquement les ports autorisés. La liste des services en cours d'exécution ne doit contenir que les services nécessaires. Ubuntu Pro doit afficher les services de sécurité comme actifs.
Problèmes fréquents
Je me suis enfermé dehors après avoir modifié les paramètres SSH
Redémarrez le serveur via la console de votre hébergeur. Connectez-vous via la console et remettez `PasswordAuthentication` à `yes`. Vérifiez ensuite que votre clé SSH est correctement configurée avant de modifier à nouveau le paramètre.
ufw bloque ma connexion SSH
Ajoutez d'abord la règle SSH avant d'activer le pare-feu. Si votre connexion est déjà interrompue, utilisez la console de votre hébergeur pour désactiver le pare-feu avec `sudo ufw disable`. Ajoutez ensuite la règle appropriée et réactivez le pare-feu.
Un service dont j'ai besoin ne démarre plus après l'avoir désactivé
Vérifiez si vous avez désactivé le bon service avec `systemctl status dienstnaam`. Redémarrez le service avec `sudo systemctl start dienstnaam` et consultez les journaux avec `journalctl -u dienstnaam` pour en trouver la cause.
Le hardening n’est pas une action ponctuelle ; de nouvelles vulnérabilités apparaissent dès que votre système tourne, et chaque modification de la configuration peut introduire de nouvelles faiblesses. Prévoyez donc des contrôles périodiques et répétez ces étapes après chaque changement majeur du système.