>_ DevTrendsfr

Langue

Accueil

Langages

Sections

Frontend Backend Mobile DevOps AI / ML GameDev Blockchain Embarqué Sécurité
Shell

Comment empêcher votre serveur de devenir une proie facile avec les scripts de durcissement de konstruktoid

Imaginez que vous venez de déployer une nouvelle instance Ubuntu. Tout fonctionne, SSH est ouvert, les paquets sont mis à jour. Vous vous sentez en sécurité—jusqu'à ce que vous consultiez les logs et voyiez des tentatives de connexion par force brute sans fin,,来自全球各地。 Les paramètres par défaut des distributions Linux privilégient la commodité plutôt que la sécurité, le durcissement d'un système nécessite donc des heures de configuration SSH, de pare-feu et de restrictions des permissions de services.

L'auteur du dépôt sous le pseudonyme konstruktoid a décidé de simplifier cette routine et a assemblé des scripts pour le durcissement automatique d'Ubuntu. Ce n'est pas juste un ensemble de commandes—c'est une stratégie entière pour transformer un OS ordinaire en forteresse numérique, avec systemd comme pierre angulaire du contrôle.

Ce que fait exactement ce script

L'idée centrale du projet est de minimiser autant que possible la surface d'attaque. Si un service n'est pas nécessaire, il doit être désactivé. Si un service est en cours d'exécution, il doit avoir exactement les permissions requises pour accomplir sa tâche.

Le script vérifie le système par rapport à une liste complète de critères, dont beaucoup sont issus des recommandations CIS (Center for Internet Security). Voici quelques domaines où il apporte de l'ordre :

  • Configuration des paramètres du noyau via sysctl. Cela inclut le blocage du transfert de paquets (IP forwarding), la protection contre l'usurpation d'identité et la restriction de l'accès aux fonctions de débogage du noyau.
  • Durcissement des permissions des fichiers système. Le script vérifie les permissions sur /etc/shadow, /etc/gshadow et d'autres fichiers de configuration critiques afin que les utilisateurs ordinaires ou les applications web compromises ne puissent pas les lire.
  • Restriction des services systemd. C'est peut-être la partie la plus intéressante. Le script utilise les fonctionnalités d'isolation modernes de systemd, telles que PrivateTmp, NoNewPrivileges et ProtectSystem.
  • Gestion des modules du noyau. Les protocoles rarement utilisés (comme DCCP ou SCTP) et les systèmes de fichiers qui deviennent souvent des sources de vulnérabilités sont désactivés.

Comment cela fonctionne en pratique

Le projet est écrit en Shell, ce qui le rend transparent pour l'audit. Vous pouvez simplement lire le code avant de l'exécuter et comprendre exactement ce qui changera dans votre système. Pour commencer, il suffit de cloner le dépôt et d'exécuter le script principal en tant que root.

git clone https://github.com/konstruktoid/hardening.git
cd hardening
sudo bash ubuntu.sh

En passant, l'auteur dispose d'une version séparée pour Debian, mais ce dépôt se concentre spécifiquement sur Ubuntu (versions 20.04, 22.04 et 24.04). Le script ne se contente pas de modifier les configurations—il installe également des outils de sécurité supplémentaires, par exemple auditd pour la journalisation approfondie des appels système.

Personnalisation selon vos besoins

Exécuter le script directement sur un système de production actif est une démarche risquée. Le durcissement est toujours un compromis entre sécurité et fonctionnalité. Si vous désactivez la possibilité de charger certains modules du noyau, Docker ou certains matériels réseau pourraient cesser de fonctionner.

Le projet inclut un fichier de configuration où vous pouvez écraser les variables. Par exemple, si vous avez absolument besoin d'IPv6 (que le script essaie de restreindre par défaut), vous pouvez ajuster cela dans les paramètres. Je vous recommande d'exécuter d'abord le script sur une machine virtuelle de test qui réplique entièrement votre pile technique de production.

Pourquoi vous devriez prêter attention à l'édition systemd

De nombreux guides de sécurité Linux plus anciens recommandent encore de modifier des dizaines de fichiers dans /etc/. L'approche de konstruktoid est plus moderne : elle utilise activement la modularité de systemd. Au lieu de réécrire le fichier d'unité de service principal, des fichiers drop-in sont créés. Cela permet de mettre à jour les paquets via apt sans conflits de configuration, tout en conservant vos personnalisations de sécurité.

Le script vérifie également les paquets compromis et suggère la suppression de logiciels qui deviennent souvent une faille de sécurité, comme les anciennes implémentations de rsh ou telnet.

Qui trouvera ce projet utile

Si vous administrez quelques serveurs pour des projets personnels, ce dépôt deviendra une excellente liste de contrôle. Vous n'êtes pas obligé d'exécuter l'ensemble du script—vous pouvez reprendre de bonnes solutions pour configurer les paramètres ufw ou sysctl.

Pour les administrateurs système en entreprise, c'est une base prête à l'emploi pour créer votre propre image maître corporate. Au lieu de réinventer la roue, vous pouvez prendre le travail de konstruktoid et l'adapter à vos exigences de conformité.

Cependant, n'oubliez pas : la sécurité est un processus. Exécuter le script aujourd'hui ne garantit pas une protection contre une vulnérabilité qui émerge demain. Mais cela élève definitely the bar for a potential attacker so high that they'll most likely go look for easier prey.

Par où commencer l'apprentissage

  1. Consultez le fichier ubuntu.sh. C'est le point d'entrée à partir duquel les autres modules sont appelés.
  2. Explorez le dossier scripts/. La logique est divisée par catégorie : réseau, système de fichiers, permissions.
  3. Assurez-vous de lire la section sur les variables d'environnement dans le README pour comprendre comment contrôler le comportement du script sans modifier son code.

Le projet est vivant et régulièrement mis à jour pour les nouvelles versions d'Ubuntu et intègre les dernières recommandations de sécurité. C'est un excellent exemple de la façon dont l'automatisation transforme des heures de travail fastidieux en une tâche qui prend quelques minutes.

Projets similaires