Archives annuelles : 2021

Kerberos

Kerberos est un service d’authentification permettant d’accéder à des ressources sur réseau, en se reposant sur un mécanisme de distribution de clés symétriques. Il est utilisé notamment par Windows pour le service d’Active Directory. Le Kerberos Consortium gère ce projet en accès libre.

Différence entre Kerberos et NTLM

NTLM était utilisé autrefois par Windows. Il fonctionnait à la façon classique d’un mot de passe, avec stockage en base du mot de passe que l’utilisateur devait fournir pour s’authentifier. La principale différence entre les deux systèmes est la vérification tierce partie et la capacité de chiffrement plus efficace de Kerberos. 

Voici le principe d’une authentification via Kerberos.

Principe de fonctionnement de Kerberos

Faut s’accrocher un peu pour comprendre. En gros, le client (C) peut se connecter au serveur (S) sans rien connaître de (S). Tout passe par une infrastructure tierce, appelée Centre de Distribution de Clés (KDC) qui comprend un serveur d’authentification et un serveur d’émission de tickets.

En termes imagées, le client va auprès d’un bureau de sécurité (le serveur d’authentification) et demande un badge ayant une durée limitée. A l’aide de ce badge, il se rend à un service d’émission de tickets (celui qui est responsable de la ressource), et demande un ticket pour accéder à la ressource. Sauf qu’à chaque étape, tout est chiffré avec des clés symétriques.

Pré-requis

Pour cela, des clés privées doivent au préalable avoir été échangées entre tiers. Ainsi :

  • La clé privée spécifique au client doit être connue du serveur d’authentification. La clé est (toujours ?) dérivée du mot de passe servant à l’authentification sur l’AS via une fonction string2key ;
  • La clé privée du serveur de tickets (TGS) doit être connue du serveur d’authentification ;
  • La clé privée du serveur ressource (S) doit être connue du serveur de tickets (TGS).

Comme autre pré-requis, le client (C) doit avoir un principal, c’est-à-dire être connu du réseau. Côté client, il faut également savoir gérer ce protocole, ce qui est le cas pour Windows (GSSAPI).

Les différentes étapes

Pour cela, voici les opérations :

  1. Le client s’authentifie auprès du serveur d’authentification (Authentication Server, AS), en général via login/mot de passe ;
  2. Le serveur d’authentification lui renvoie un ticket d’authentification (Ticket Granting Ticket, ou TGT), qui l’authentifie durant un certain temps. Ce TGT est chiffré avec la clé du serveur de tickets, et ne peut donc pas être déchiffré par le client. A côté de cela, le serveur d’authentification envoie également une clé de session à utiliser pour l’échange avec le serveur de tickets (TGS) ;
  3. Pour accéder au serveur (S), le client (C) va utiliser ces éléments : il envoie le ticket d’authentification (TGT) au serveur de tickets (TGS) en le chiffrant avec la clé de session ;
  4. Le serveur de tickets déchiffre le TGT, le vérifie, et envoie alors au client une clé d’échange finale entre le client et le serveur (en bleu), chiffrée avec la clé de session, ainsi qu’un ticket de service chiffré avec la clé du serveur ;
  5. Le ticket de service est chiffré avec la clé du serveur : le client ne peut donc ni le lire, ni le modifier.

Cache

Le ticket d’authentification (TGT) ayant une certaine durée de validité, il doit être protégé convenablement dans un cache approprié, dont Kerberos exige qu’il soit en mémoire non swappable (pour éviter qu’il soit écrit sur un disque), accessible uniquement au niveau noyau, etc.

Le protocole interdit également tout stockage du mot de passe ou du secret obtenu via string2key.

MIT Kerberos Consortium – Protocol Tutorial

Les attaques

Sources

Voir aussi

Anatomie d’un phishing (presque) ordinaire

Le phishing fait des ravages depuis longtemps, mais force est de constater qu’il évolue sans cesse afin de déjouer la vigilance des utilisateurs et des outils de sécurité en charge d’éradiquer les mails douteux. Une campagne récente (active en décembre 2020) visant le portefeuille Ledger constitue une excellente occasion de voir, par l’exemple, les techniques employées en ce moment.

Continuer la lecture

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