Présentation
Le durcissement (ou hardening) d’une machine Linux consiste à renforcer sa sécurité pour limiter les risques d’exploitation, d’intrusion ou d’erreurs critiques.
C’est une démarche proactive, indispensable pour les systèmes exposés en réseau ou manipulés par plusieurs utilisateurs.
Objectifs du durcissement
- Réduire la surface d’attaque
- Protéger les données et services critiques
- Prévenir les exécutions non autorisées
- Isoler les composants sensibles
1. Nettoyer le système
Supprimer les services inutiles :
systemctl list-units --type=service
sudo systemctl disable nom_du_service
sudo systemctl disable nom_du_service
Supprimer les paquets superflus :
sudo apt autoremove
# ou
sudo dnf remove paquet
# ou
sudo dnf remove paquet
2. Mettre à jour régulièrement
Les mises à jour corrigent des failles de sécurité :
sudo apt update && sudo apt upgrade
# ou
sudo dnf update
# ou
sudo dnf update
Automatiser avec unattended-upgrades (Debian/Ubuntu).
3. Sécuriser les comptes
- Désactiver l’accès root en SSH
- Utiliser sudo au lieu de se connecter en root
- Supprimer les utilisateurs inutilisés
- Utiliser des mots de passe robustes
4. Configurer un pare-feu
Utiliser ufw ou nftables :
sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw allow ssh
sudo ufw enable
sudo ufw default allow outgoing
sudo ufw allow ssh
sudo ufw enable
Ou pour un contrôle plus fin :
sudo nft add table inet filter
sudo nft add chain inet filter input { type filter hook input priority 0 \; }
sudo nft add rule inet filter input ct state established,related accept
sudo nft add rule inet filter input iifname lo accept
sudo nft add rule inet filter input tcp dport ssh accept
sudo nft add rule inet filter input drop
sudo nft add chain inet filter input { type filter hook input priority 0 \; }
sudo nft add rule inet filter input ct state established,related accept
sudo nft add rule inet filter input iifname lo accept
sudo nft add rule inet filter input tcp dport ssh accept
sudo nft add rule inet filter input drop
5. Configurations sensibles
/etc/sysctl.conf pour le noyau :
net.ipv4.ip_forward = 0
net.ipv4.conf.all.accept_source_route = 0
net.ipv4.conf.all.accept_source_route = 0
/etc/login.defs pour la politique des mots de passe.
/etc/ssh/sshd_config :
- Désactiver root : PermitRootLogin no
- Forcer les clés : PasswordAuthentication no
6. Sécuriser les permissions et services
Vérifier les fichiers SUID :
find / -perm -4000 -type f 2>/dev/null
- Utiliser chmod, chown, ls -l pour ajuster les permissions
- Mettre en place AppArmor ou SELinux pour renforcer l’isolation
7. Surveillance et audit
- Installer un IDS comme AIDE, OSSEC, ou Fail2Ban
- Auditer les connexions SSH, sudo, root :
journalctl -u ssh
sudo lastlog
sudo lastlog
8. Autres bonnes pratiques
- Désactiver les modules inutiles (/etc/modprobe.d/blacklist.conf)
- Monter /tmp et /var/tmp avec les options noexec,nosuid,nodev
- Utiliser des partitions séparées : /home, /var, /srv, etc.
- Activer la journalisation (rsyslog, logrotate)