Linux & Open Source

Renforcez votre infrastructure : Guide complet pour la sécurité et la durcissement des serveurs Linux

Dans le paysage moderne du cloud computing et des systèmes distribués, la sécurité de votre serveur Linux n'est pas seulement une bonne pratique ; c'est une exigence fondamentale pour la continuité des activités et l'intégrité des données. En tant que développeurs intermédiaires à avancés, nous nous concentrons souvent fortement sur la logique applicative et les performances, négligeant parfois la sécurité de l'hôte sous-jacent. Cependant, une seule mauvaise configuration peut exposer des données sensibles ou fournir à un attaquant un accès root. Cet article explore les couches essentielles de défense requises pour durcir un environnement Linux, en passant des contrôles de périmètre réseau à l'audit système approfondi.

Sécuriser le point d'entrée distant : Durcissement de SSH

Le Shell Sécurisé (SSH) est la méthode principale d'administration à distance, ce qui en fait la première cible des attaques par force brute automatisées. Les configurations par défaut sont rarement suffisamment sécurisées pour les environnements de production. La première étape consiste à désactiver entièrement l'authentification par mot de passe, en imposant l'utilisation de paires de clés cryptographiques. Modifiez le fichier de configuration du démon SSH, généralement situé dans /etc/ssh/sshd_config, et appliquez les directives suivantes :
PermitRootLogin no
PasswordAuthentication no
PubkeyAuthentication yes
X11Forwarding no
AllowUsers admin user1
Après avoir apporté ces modifications, redémarrez le service SSH pour appliquer les nouvelles règles. Cette configuration garantit que seuls des utilisateurs spécifiques peuvent se connecter via SSH, que root ne peut pas être accédé directement, et que seule la cryptographie à clé publique est utilisée pour l'authentification, neutralisant ainsi efficacement les attaques par devinette de mot de passe.

Contrôle d'accès obligatoire : SELinux et AppArmor

Le contrôle d'accès discrétionnaire (DAC) traditionnel repose sur les permissions de fichiers, qui peuvent être contournées si un processus obtient les privilèges root. Les systèmes de Contrôle d'Accès Obligatoire (MAC) tels que SELinux (Security-Enhanced Linux) et AppArmor fournissent une couche de sécurité supplémentaire en appliquant des politiques qui restreignent ce que les applications peuvent faire, indépendamment des permissions de fichiers. SELinux est la valeur par défaut sur les distributions basées sur RHEL, tandis qu'AppArmor est souvent présent sur les systèmes Debian et Ubuntu. Si vous n'êtes pas sûr que votre système prend en charge ces technologies, vous pouvez vérifier avec la commande suivante :
sestatus  # Pour SELinux
sudo apparmor_status # Pour AppArmor
Lorsqu'elles sont activées, les systèmes MAC fonctionnent soit en mode « Enforcing » (appliqué) soit en mode « Permissive » (permissif). Commencez toujours en mode Permissif pour générer des journaux des violations potentielles de politique sans bloquer le trafic légitime. Une fois que vous avez ajusté les politiques pour autoriser le comportement nécessaire des applications, passez en mode Enforcing pour refuser activement les actions non autorisées. Cette compartimentation garantit que si un serveur web comme Nginx est compromis, l'attaquant ne peut pas facilement accéder à d'autres parties du système ou à des données sensibles en dehors de la racine du site web.

Périmètre réseau et prévention des intrusions

Un pare-feu robuste est la première ligne de défense contre les menaces externes. Sous Linux, iptables (héritage) ou son successeur, nftables, sont des outils puissants pour le filtrage des paquets. Pour de nombreux administrateurs, UFW (Uncomplicated Firewall) offre une interface plus simple tout en exploitant ces technologies sous-jacentes.
sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw allow ssh
sudo ufw allow http
sudo ufw allow https
sudo ufw enable
Cette configuration de base refuse tout le trafic entrant par défaut et autorise uniquement les connexions sortantes, ainsi que SSH, HTTP et HTTPS. Pour se protéger contre les attaques automatisées persistantes, l'intégration de Fail2Ban est cruciale. Fail2Ban analyse les fichiers journaux à la recherche de motifs malveillants, tels que des tentatives de connexion échouées répétées, et met à jour les règles du pare-feu pour bannir les adresses IP coupables.

Audit et intégrité du système

La sécurité ne consiste pas seulement à prévenir ; elle consiste aussi à détecter et à assurer la responsabilité. Le système d'audit Linux (auditd) vous permet de surveiller et d'enregistrer des appels système spécifiques et des événements d'accès aux fichiers. En définissant des règles pour les répertoires sensibles ou les binaires critiques, vous pouvez suivre les modifications non autorisées ou les activités suspectes.
sudo auditctl -w /etc/passwd -p wa -k identity_changes
Cette commande surveille le fichier /etc/passwd pour tout changement d'écriture ou d'attribut, en marquant l'événement avec « identity_changes » pour faciliter l'analyse des journaux. La révision régulière de ces journaux garantit que vous êtes informé de toute anomalie en temps réel.

Conclusion

Sécuriser un serveur Linux est un processus continu, et non une configuration ponctuelle. En combinant des configurations SSH durcies, le Contrôle d'Accès Obligatoire, des règles de pare-feu strictes, des outils de prévention des intrusions comme Fail2Ban et un audit complet, vous créez une stratégie de défense en profondeur. Cette approche en couches garantit que même si un contrôle est contourné, d'autres restent en place pour protéger votre infrastructure. Les mises à jour régulières, la gestion des correctifs et la surveillance continue doivent faire partie intégrante de votre flux de travail opérationnel pour maintenir un environnement résilient et sécurisé.
Share: