Delen via


RPC-interfacebeperking

De RPC-service (Remote Procedure Call) maakt RPC-interfaces standaard beveiligd om aanvallen te verminderen. Met de RestrictRemoteClients registersleutel kunt u het gedrag van alle RPC-interfaces op het systeem wijzigen en kan worden gebruikt om externe anonieme toegang tot RPC-interfaces op het systeem te elimineren, met enkele uitzonderingen. U kunt andere interfacebesturingselementen toepassen met behulp van de EnableAuthEpResolution registersleutel die in dit artikel wordt behandeld. Zowel ontwikkelaars van RPC-toepassingen als systeembeheerders kunnen RPC-interfacebeperkingen configureren.

Prerequisites

Wanneer u op uw server gebruikt RestrictRemoteClients :

  • Uw RPC-clients zijn vereist voor het gebruik van RPC-beveiliging bij het contact opnemen met uw servertoepassingen. Dit is de beste methode om beveiligingsrisico's te beperken.

  • Sluit uw RPC-instelling af van verificatie door de RPC_IF_ALLOW_CALLBACKS_WITH_NO_AUTH vlag in te stellen tijdens de registratie. Hiermee configureert u RPC om anonieme verbindingen met uw toepassingen toe te staan.

Beperken van bedreigingen voor RestrictRemoteClients

Het inschakelen RestrictRemoteClients is handig bij het beperken van wormen die afhankelijk zijn van exploiteerbare bufferoverschrijdingen die op afstand kunnen worden aangeroepen via anonieme verbindingen. RPC-toepassingen die verwachten dat ze oproepen ontvangen van externe anonieme RPC-clients, worden mogelijk niet correct uitgevoerd wanneer u deze functie gebruikt. Als gevolg hiervan werken toepassingen die gebruikmaken van DCOM (Distributed Component Object Model) mogelijk niet correct als deze waarde is ingesteld.

RPC-aanroepen met behulp van verbindingsloze protocollen mislukken als deze sleutel is ingeschakeld. Beveiligde RPC-aanroepen via verbindingsloze protocollen, zoals UDP (User Datagram Protocol) en IPX (Internetwork Packet Exchange), gebruiken een lager beveiligingsniveau in vergelijking met verbindingsgeoriënteerde protocollen. ncadg_ip_udp en ncadg_ipx worden met name beschouwd als minder veilig. Voor deze beleidsregels worden deze aanroepen altijd beschouwd als onbeveiligd.

Als u RPC-clientaanroepen wilt toestaan met behulp van verbindingsloze protocollen, houdt RestrictRemoteClients u de waarde ingesteld op Uitgeschakeld.

Beperkingen voor RPC-clients

Wanneer een interface is geregistreerd met behulp van RpcServerRegisterIfRPC, kan de servertoepassing de toegang tot de interface beperken via een beveiligingsaanroep. De RestrictRemoteClients registersleutel dwingt RPC extra beveiligingscontroles uit te voeren voor alle interfaces, zelfs als de interface geen geregistreerde terugbeloproep voor beveiliging heeft.

RPC-clients die gebruikmaken van de benoemde pijpprotocolreeks (ncacn_np) zijn vrijgesteld van alle beperkingen die in deze sectie worden besproken. De benoemde pijpprotocolreeks kan niet worden beperkt vanwege aanzienlijke compatibiliteitsproblemen met eerdere versies.

RestrictRemoteClients kan ook programmatisch worden beheerd in de header rpcdce.h API (Application Programming Interface).

RestrictRemoteClients configureren

Ga als volgt te werk om deze beleidsregels te bewerken met behulp van de groepsbeleidsobjecteditor ( Groepsbeleidsobject):

  1. Selecteer Starttype>gpedit.msc> druk op Enter om de editor voor lokaal groepsbeleid te openen.

  2. Als u het equivalent van RestrictRemoteClients instellingen wilt inschakelen, gaat u naar Computerconfiguratie\Beheersjablonen\System\Remote Procedure Call\Restrictions for Unauthenticated RPC Clients en selecteert u een van de volgende opties:

    • Uitgeschakeld : deze instelling is de standaardwaarde voor server-SKU's. Komt overeen met de waarde RPC_RESTRICT_REMOTE_CLIENT_NONE in rpcdce.h en het is de verantwoordelijkheid van de servertoepassing om de juiste RPC-beperkingen op te leggen.
    • Geverifieerd : komt overeen met de waarde RPC_RESTRICT_REMOTE_CLIENT_DEFAULT in rpcdce.h. Hiermee kunnen alleen geverifieerde RPC-clients verbinding maken met RPC-servers die worden uitgevoerd op de computer waarop de beleidsinstelling wordt toegepast. RPC-runtime weigert anonieme aanroepen. Als een interface een beveiligingsaanroep registreert en de vlag RPC_IF_ALLOW_CALLBACKS_WITH_NO_AUTH biedt, is deze beperking niet van toepassing op die interface.
    • Geverifieerd zonder uitzonderingen1 : komt overeen met de waarde RPC_RESTRICT_REMOTE_CLIENT_HIGH in rpcdce.h. Hiermee kunnen alleen geverifieerde RPC-clients verbinding maken met RPC-servers die worden uitgevoerd op de computer waarop de beleidsinstelling wordt toegepast. Er zijn geen uitzonderingen toegestaan wanneer deze waarde is ingesteld omdat het systeem geen externe anonieme oproepen kan ontvangen met RPC.

Voor wijzigingen in een van deze instellingen moet het systeem opnieuw worden opgestart .

Caution

¹Gebruik deze waarde niet zonder significante tests. Zie Beperkingen voor niet-geverifieerde RPC-clients voor meer informatie.

EnableAuthEpResolution

Met de EnableAuthEpResolution sleutel kan de RPC-clientruntime NTLM (NT LAN Manager) gebruiken om zich te authenticeren bij de eindpunt-mapper wanneer dit is ingeschakeld. Deze geverifieerde query vindt alleen plaats als de werkelijke RPC-clientoproep gebruikmaakt van RPC-verificatie.

RPC-clients voeren aanroepen naar een RPC-server met een geregistreerd dynamisch eindpunt waarvoor RPC Endpoint Mapper-clientverificatie is ingeschakeld. Deze aanroepen worden opgevraagd namens geverifieerde aanroepen met behulp van NTLM-verificatie.

RPC-clients die proberen een aanroep te doen met behulp van een dynamisch eindpunt, vraagt de RPC Endpoint Mapper op de server om te bepalen met welk eindpunt verbinding moet worden gemaakt. Deze query wordt anoniem uitgevoerd, zelfs als de RPC-clientoproep zelf wordt uitgevoerd met RPC-beveiliging. De RPC Endpoint Mapper-interface is niet anoniem toegankelijk als de RestrictRemoteClients instelling is ingeschakeld.

EnableAuthEpResolution configureren

Ga als volgt te werk om deze beleidsregels te bewerken met behulp van de groepsbeleidsobjecteditor ( Groepsbeleidsobject):

  1. Selecteer Starttype>gpedit.msc> druk op Enter om de editor voor lokaal groepsbeleid te openen.

  2. Als u het equivalent van EnableAuthEpResolution instellingen wilt inschakelen, gaat u naar Computerconfiguratie\Beheersjablonen\System\Remote Procedure Call\Enable RPC Endpoint Mapper Client Authentication en selecteert u vervolgens een van de twee beschikbare instellingen:

    • Uitgeschakeld : deze instelling is de standaardinstelling. RPC-clients verifiëren niet bij de Endpoint Mapper-service, maar ze kunnen wel communiceren met de Endpoint Mapper-service op Windows NT4 Server.
    • Ingeschakeld : pc-clients verifiëren via de Endpoint Mapper-service voor aanroepen die verificatiegegevens bevatten. Clients die dergelijke aanroepen doen, kunnen niet communiceren met de Windows NT4 Server Endpoint Mapper-service.

Voor wijzigingen in een van deze instellingen moet het systeem opnieuw worden opgestart .

Important

De volgende groepsbeleidsinstellingen gevonden in Computerconfiguratie\Windows-instellingen\Beveiligingsinstellingen\Lokaal beleid\Beveiligingsopties kunnen niet worden gebruikt met EnableAuthEpResolution:

  • Netwerkbeveiliging: NTLM beperken: binnenkomend NTLM-verkeer – 'Alle accounts weigeren'
  • Netwerkbeveiliging: NTLM beperken: uitgaand NTLM-verkeer naar externe servers : 'Alles weigeren'

Het wordt aangemoedigd om van NTLM weg te gaan om uw omgeving beter te beveiligen. Als u wordt geconfronteerd met een keuze tussen het beperken van NTLM en het gebruik EnableAuthEpResolution, is de aanbevolen benadering dat u NTLM in uw omgeving beperkt.

Andere markeringen voor RPC-interfaceregistratie

Deze interfaceregistratievlagmen worden gemaakt om het voor een toepassingsontwikkelaar gemakkelijker te maken om een RPC-interface te beveiligen:

  • RPC_IF_ALLOW_CALLBACKS_WITH_NO_AUTH
    Wanneer deze vlag is geregistreerd, roept de RPC-runtime de geregistreerde beveiligingsaanroep aan voor alle aanroepen, ongeacht de beveiligingsinstellingen voor aanroepen. Zonder deze vlag weigert RPC alle niet-geverifieerde aanroepen voordat ze de terugbelactie voor beveiliging bereiken. Deze vlag werkt alleen wanneer een beveiligingsaanroep is geregistreerd.

  • RPC_IF_SEC_NO_CACHE
    Een beveiligingscallback wordt voor een interface geregistreerd om de toegang te beperken. Normaal gesproken imiteert de beveiligingsaanroep de client om te controleren of de client voldoende rechten heeft om een aanroep naar de interface te maken. Zodra een bepaalde clientidentiteit slaagt voor de beveiligingsaanroep, slaagt deze meestal ook bij volgende pogingen.

    De RPC-runtime maakt gebruik van dit patroon door te onthouden wanneer een afzonderlijke clientidentiteit een beveiligingscallback doorstaat. Vervolgens wordt het overslaan van de beveiligingscallback toegepast voor volgende aanroepen door die client naar dezelfde interface. Deze functie wordt de caching van beveiligingsaanroepen genoemd en bestaat sinds de Microsoft Windows 2000-familie van besturingssystemen. U kunt de vlag RPC_IF_SEC_NO_CACHE gebruiken om caching van beveiligingsoproepen voor een bepaalde interface uit te schakelen. Dit is handig als de beveiligingscontrole kan veranderen, waardoor mogelijk een clientidentiteit wordt geweigerd die eerder was toegestaan.

  • RPC_IF_LOCAL_ONLY
    Wanneer een interface is geregistreerd met deze vlag, weigert RPC aanroepen die worden gedaan door externe RPC-clients. Daarnaast worden lokale aanroepen over alle ncadg_* protocolreeksen en alle ncacn_* protocolreeksen (met uitzondering van benoemde pijpen, met behulp van ncacn_np) ook geweigerd. Als een aanroep wordt gedaan op ncacn_np, staat RPC de aanroep alleen toe als deze niet afkomstig is van SRV (Service Location Protocol), waardoor alle externe oproepen worden gefilterd. Ncalrpc gesprekken zijn altijd toegestaan via.

Het gebruik van deze vlaggen is naar eigen goeddunken van de toepassingsontwikkelaar. Ontwikkelaars van RPC-toepassingen worden voorzien van extra beveiligingshulpprogramma's om hun RPC-interface te beveiligen, omdat deze vlaggen geen bestaande toepassing wijzigen of dat ze onjuist worden uitgevoerd.

Zie ook