Archives de catégorie : Sécurisation

La catégorie Sécurisation contient différents principes permettant de sécuriser un objet informatique, de façon théorique (par rapport à un concept) ou pratique (en réponse à une actualité).

Active Directory

Un Active Directory est un annuaire de type LDAP pour Windows, avec deux fonctions principales : identifier des façon unique les ressources (matérielles ou humaines) et les authentifier.

Structure

Une classe est un ensemble d’objets ayant les mêmes attributs. Cela peut être un ordinateur, un utilisateur, une organisation, etc. Parmi les objets nécessaires, les unités d’organisations sont indispensables pour une administration efficace.

Un schéma contient la définition de toutes les classes et de tous les attributs disponibles et autorisés au sein de votre annuaire. C’est un élément dont toute modification est critique, d’où l’existence d’administrateurs spécifique (de schémas).

La base de données de l’AD est divisée en trois partitions :

  • La partition de schéma (définition des classes et objets, unique dans une forêt) ;
  • La partition de configuration (topologie de la forêt, à savoir les informations sur les domaines, les liens entre les contrôleurs de domaines, les sites, etc. ; elle est également unique au sein d’une forêt) ;
  • La partition de domaine (base de données pour un domaine, chaque domaine ayant sa partition propre).

Différence entre WORKGROUP et domaine

Un WORKGROUP permet de relier des ordinateurs dans un groupe de travail mais sans aucune centralisation ou administration. Les ordinateurs d’un même WORKGROUP se parlent mais c’est tout. Dans un WORKGROUP, chaque machine dispose de sa base d’utilisateurs (base SAM) non partagée.

A l’inverse, dans un domaine, la base des utilisateurs et des objets est centralisée, permettant un gestion efficace et centralisée des objets. Chaque contrôleur de domaine contient une copie de l’annuaire et s’assure de la synchronisation de celui-ci.

Contrôleur de domaine

Le serveur sur lequel on crée un domaine devient le premier contrôleur du domaine, contenant la base de données NTDS.dit. Une bonne gestion implique d’ajouter des contrôleurs supplémentaires à ce domaine, les contrôleurs de domaine répliquant les informations entre eux à intervalle régulier (avec versionnage, pour gérer les problèmes de synchronisation). Le dossier partagé SYSVOL sert à distribuer les stratégies de groupe et les scripts de connexion.

Arbres et forêts

De façon assez intuitive, un arbre est une hiérarchie de domaines (chaque feuille étant un sous-domaine de son supérieur), et une forêt est un ensemble d’arbres. La différence majeure est que dans une forêt, chaque arbre est indépendant, même en étant groupés dans une même structure. L’idée est garder cette indépendance tout en gardant un schéma d’annuaire commun, d’avoir un catalogue global et de simplifier l’administration.

cours-active-directory-9
Schéma d’une forêt simple (IT-Connect)

Domaine fonctionnel

Un domaine fonctionnel est grosso modo la version de l’OS ou de l’AD (ex : Windows Server 2012). Dans une forêt, on peut trouver des domaines ayant des domaines fonctionnels différents (ça fonctionne), mais alors la forêt (qui a aussi un domaine fonctionnel).

Ainsi, plus la version est élevée (récente), plus on aura de fonctionnalités. Par contre, au niveau de la forêt, le domaine fonctionnel est la version minimale supportée par l’ensemble des arbres. Logique : il ne peut pas avoir plus de fonctionnalités qu’un de ses membres. Cela implique aussi que pour augmenter le domaine fonctionnel d’une forêt, il faut que tous les arbres supportent au moins la même chose, et un upgrade devra être réalisé si besoin.

Protocoles

Pour fonctionner, un AD utilise divers protocoles. Les plus importants sont LDAP, DNS et Kerberos.

L’annuaire LDAP est l’annuaire de l’AD à proprement parler, comprenant l’ensemble des données. Chaque entrée de LDAP est un objet unique ayant des attributs spécifiques (dont un GUID et un nom unique appelé Distinguished Name).

Le DNS est également indispensable car il permet de retrouver dans le réseau les objets, notamment les plus importants (Primary Domain Controller, catalogue global, KDC, contrôleurs de domaines, etc.).

Kerberos est un service d’authentification, et qui ne sert qu’à cela (il n’intervient pas dans le LDAP ou le DNS). Le gros avantage de Kerberos est de permettre qu’un client C puisse accéder à un serveur (ressource) S sans rien connaître de S. Tout passe par des serveurs tiers.

Moyens d’authentification

Source : https://sparrow365.de/index.php/en/2024/04/22/all-roads-to-entra-id-sso/

Sources

Active Directory Federation Services

Outils

Voir aussi

Sécurité des conteneurs

Le technologie des conteneurs est en plein expansion ces jours-ci. Parmi les plus connus, il y a Docker qui est à la mode dans la mouvance DevOps, et qui permet de gains de productivité et d’agilité incontestables. Toutefois, la technologie n’est pas forcément mature pour les grosses entreprises et l’industrialisation à grande échelle, en termes de stabilité et de sécurité. Certains éditeurs comme aquasec proposent des solutions pour aider à la sécurisation de ce type d’architecture.

Fondements de l’architecture Docker

Docker est un système de conteneurs, qui permet de faire tourner sur un même OS plusieurs applications en parallèle et de façon relativement isolée.

Les conteneurs Docker s’appuient sur l’OS et la virtualisation (l’isolation) ne concerne que le système de fichiers, les configurations et les zones d’état du système (comme la base de registres sous Windows par exemple)1. Notez bien : il n’y a pas d’isolation au niveau de la mémoire de travail (RAM).

Si cela représente d’indéniables avantages sur l’urbanisation et l’optimisation des ressources, cela implique que sur une machine donnée, tous les conteneurs doivent être basés sur le même kernel. Ainsi, si on peut faire tourner différents Linux sur une machine hôte Linux, il est impossible de faire tourner un conteneur Windows sur un hôte Linux, et réciproquement : in fine, le conteneur appellera toujours le noyau de l’hôte.

Un exemple de solution : Aqua

Leur approche repose sur un outil, Aqua, qui met l’accent sur 5 axes2 permettant d’inclure la sécurité dans le cycle de vie des DevOps :

  • Gestion des vulnérabilités dans les images (des containers) ;
  • Réduction de la surface d’attaque du container ;
  • Renforcement du Contrôle d’Accès Utilisateur ;
  • Durcissement de la machine hôte ;
  • Automatisation de l’ensemble du process.

Gestion des vulnérabilités

Comme toute architecture fortement automatisée se basant sur des modèles, la sécurisation des modèles servant de base aux équipes de développement est une nécessité incontournable. Cependant, avec Docker, le rythme de modification des images de base augmente considérablement, ce qui va demander une validation quasi continue des images, et donc l’appréciation continue du niveau de sécurité des images utilisées.

Réduction de la surface d’attaque

Cette approche est classique pour tout environnement informatique, mais la sécurisation de conteneur est largement moins mature que celle de systèmes Linux, par exemple.

De plus, la communication entre conteneurs doit faire aussi l’objet de toutes les attentions : il est impératif de minimiser les communications entre conteneurs, en les rationalisant (pas d’ouverture de ports incontrôlés ni de droits trop ouverts sur l’OS), ce qui relève le plus souvent d’une démarche des développeurs et architectes.

Renforcement du contrôle d’accès des utilisateurs

Les premières versions de Docker imposaient l’utilisation du niveau root pour fonctionner, sans alternative possible. Cela ne pouvait pas perdurer si Docker voulait passer les portes des entreprises…

Les versions récentes sont beaucoup plus adaptées et permettent de gérer plus finement les droits, avec tous les gains associés en terme de ségrégation des rôles et de traçabilité. Il est incontournable de gérer alors ces droits de façon centralisée.

Durcissement de la machine hôte

Il s’agit principalement de s’assurer de l’isolation effective des conteneurs, ce qui est réalisé au niveau de l’OS. Or il faut que cette étape soit outillée et vérifiable, car comme plusieurs conteneurs peuvent s’exécuter sur le même OS, toute erreur de configuration peut conduire à des débordements !

Automatisation

L’automatisation est la raison d’être du DevOps, permettant l’agilité et la souplesse. L’automatisation de l’ensemble des processus doit inclure la sécurité, laquelle doit donc elle aussi être outillée et automatisée, afin que les DevOps et que les professionnels de la sécurité y trouvent leur compte.

Au niveau de Docker

Du fait que Docker s’appuie sur le système lui-même, les risques de débordement de ressources d’un conteneur à l’autre sont présents. Docker en a bien conscience, et ajoute des briques partout où c’est possible, mais le choix de la technologie LXC de Linux puis libcontainer3 laissera toujours planer le risque de lecture et/ou d’écriture par un conteneur cannibale (concurrent)4. Même avec des environnements de virtualisation ultra-rodés côté sécurité, le risque d’évasion de machine virtuelle est à considérer ; alors avec les conteneurs de type Docker, dont l’isolation est moins forte, ce risque est donc important et à prendre en compte lors que l’utilisation de ce type de technologie. 

Les risques

Image compromise

Le premier risque est d’utiliser une image contenant des composantes malveillantes. Avec l’explosion du minage sauvage de cryptomonnaies depuis 2017, toutes les techniques sont bonnes pour faire de l’argent, et incorporer un logiciel de minage dans des images couramment utilisées peut se révéler très lucratif5 pour les petits malins.

Autres sources