Imitatieniveaus
Als imitatie slaagt, betekent dit dat de client akkoord is gegaan met het toestaan van de server als de client in zekere mate. De verschillende mate van imitatie wordt imitatieniveausgenoemd en geven aan hoeveel autoriteit aan de server wordt gegeven wanneer deze de client nabootst.
Er zijn momenteel vier imitatieniveaus: anonieme, identificeren, imiteren en gedelegeerde. In de volgende lijst wordt elk imitatieniveau kort beschreven:
-
anoniem (RPC_C_IMP_LEVEL_ANONYMOUS)
-
De client is anoniem voor de server. Het serverproces kan de client imiteren, maar het imitatietoken bevat geen informatie over de client. Dit niveau wordt alleen ondersteund via het lokale communicatietransport tussen processen. Alle andere transporten bevorderen dit niveau op de achtergrond om te identificeren.
-
identificeren (RPC_C_IMP_LEVEL_IDENTIFY)
-
Het standaardniveau van het systeem. De server kan de identiteit van de client verkrijgen en de server kan de client imiteren om ACL-controles uit te voeren.
-
imitatie (RPC_C_IMP_LEVEL_IMPERSONATE)
-
De server kan de beveiligingscontext van de client imiteren terwijl deze namens de client handelt. De server heeft toegang tot lokale resources als de client. Als de server lokaal is, heeft deze toegang tot netwerkbronnen als de client. Als de server extern is, heeft deze alleen toegang tot resources die zich op dezelfde computer als de server bevinden.
-
gedelegeerde (RPC_C_IMP_LEVEL_DELEGATE)
-
Het krachtigste imitatieniveau. Wanneer dit niveau is geselecteerd, kan de server (lokaal of extern) de beveiligingscontext van de client imiteren terwijl deze namens de client handelt. Tijdens imitatie kunnen de referenties van de client (zowel lokaal als netwerk) worden doorgegeven aan een willekeurig aantal computers.
Voor imitatie moet aan de volgende vereisten worden voldaan om te kunnen imiteren op het niveau van de gemachtigde:
- De client moet het imitatieniveau instellen op RPC_C_IMP_LEVEL_DELEGATE.
- Het clientaccount mag niet worden gemarkeerd als 'Account is gevoelig en kan niet worden gedelegeerd' in de Active Directory-service.
- Het serveraccount moet worden gemarkeerd met het kenmerk Vertrouwde voor delegatie in de Active Directory-service.
- De computers waarop de client, de server en eventuele downstreamservers worden gehost, moeten allemaal worden uitgevoerd in een domein.
Door het imitatieniveau te kiezen, vertelt de client de server hoe ver deze kan gaan bij het imiteren van de client. De client stelt het imitatieniveau in op de proxy die wordt gebruikt om met de server te communiceren.
Het imitatieniveau instellen
Er zijn twee manieren om het imitatieniveau in te stellen:
- De client kan het procesomvattend instellen via een aanroep naar CoInitializeSecurity.
- Een client kan beveiliging op proxyniveau instellen op een interface van een extern object via een aanroep naar IClientSecurity::SetBlanket (of de helperfunctie CoSetProxyBlanket).
U stelt het imitatieniveau in door een juiste RPC_C_IMP_LEVEL_xxx waarde door te geven aan CoInitializeSecurity of CoSetProxyBlanket via de parameter dwImpLevel.
Verschillende verificatieservices ondersteunen imitatie op gemachtigde niveau in verschillende mate. NTLMSSP biedt bijvoorbeeld ondersteuning voor crossthread- en cross-process delegate-level imitatie, maar niet voor meerdere computers. Aan de andere kant ondersteunt het Kerberos-protocol imitatie op het niveau van gedelegeerden over computergrenzen, terwijl Schannel geen imitatie op het niveau van de gemachtigde ondersteunt. Als u een proxy op imitatieniveau hebt en u het imitatieniveau wilt instellen op delegeren, moet u SetBlanket- aanroepen met behulp van de standaardconstanten voor elke parameter behalve het imitatieniveau. COM kiest lokaal NTLM en het Kerberos-protocol op afstand (wanneer het Kerberos-protocol werkt).
Verwante onderwerpen