Freigeben über


RPC-Schnittstelleneinschränkung

Der RPC-Dienst (Remote Procedure Call) macht RPC-Schnittstellen standardmäßig sicher, um Angriffe zu reduzieren. Mit dem Registrierungsschlüssel RestrictRemoteClients können Sie das Verhalten aller RPC-Schnittstellen auf dem System ändern und mit einigen Ausnahmen den anonymen Remotezugriff auf RPC-Schnittstellen auf dem System beseitigen. Sie können andere Schnittstellensteuerelemente mithilfe des Registrierungsschlüssels EnableAuthEpResolution anwenden, der in diesem Artikel behandelt wird. Sowohl RPC-Anwendungsentwickler als auch Systemadministratoren können RPC-Schnittstelleneinschränkungen konfigurieren.

Voraussetzungen

Bei Verwendung von RestrictRemoteClients auf Ihrem Server:

  • Ihre RPC-Clients müssen RPC-Sicherheit verwenden, wenn Sie sich an Ihre Serveranwendungen wenden. Dies ist die beste Methode, um Sicherheitsbedrohungen zu mindern.

  • Nehmen Sie Ihre RPC-Einstellung von der erforderlichen Authentifizierung aus, indem Sie bei der Registrierung das Flag RPC_IF_ALLOW_CALLBACKS_WITH_NO_AUTH festlegen. Dadurch wird RPC so konfiguriert, dass anonyme Verbindungen zu Ihren Anwendungen zugelassen werden.

Bedrohungsminderung mit RestrictRemoteClients

Die Aktivierung von RestrictRemoteClients ist nützlich für die Abwehr von Würmern, die auf ausnutzbaren Pufferüberläufen basieren und remote über anonyme Verbindungen aufgerufen werden können. RPC-Anwendungen, die erwarten, dass Anrufe von anonymen RPC-Remoteclients empfangen werden, werden bei Verwendung dieses Features möglicherweise nicht ordnungsgemäß ausgeführt. Daher funktionieren Anwendungen, die DCOM (Distributed Component Object Model) nutzen, möglicherweise nicht ordnungsgemäß, wenn dieser Wert festgelegt ist.

RPC-Aufrufe mit verbindungslosen Protokollen schlagen fehl, wenn dieser Schlüssel aktiviert ist. Sichere RPC-Aufrufe über verbindungslose Protokolle, z. B. UDP (User Datagram Protocol) und IPX (Internetwork Packet Exchange), verwenden eine niedrigere Sicherheitsstufe im Vergleich zu verbindungsorientierten Protokollen. ncadg_ip_udp und ncadg_ipx gelten als besonders unsicher. Für diese Richtlinie gelten diese Aufrufe immer als unsicher.

Um RPC-Clientaufrufe mit verbindungslosen Protokollen zuzulassen, legen Sie den Wert RestrictRemoteClients auf Deaktiviert fest.

Einschränkungen für RPC-Clients

Wenn eine Schnittstelle mithilfe von RpcServerRegisterIf registriert wird, ermöglicht RPC der Serveranwendung, den Zugriff auf die Schnittstelle über einen Sicherheitsrückruf einzuschränken. Der Registrierungsschlüssel RestrictRemoteClients zwingt RPC, zusätzliche Sicherheitsüberprüfungen für alle Schnittstellen durchzuführen, auch wenn die Schnittstelle keinen registrierten Sicherheitsrückruf aufweist.

RPC-Clients, die die Named Pipe-Protokollsequenz (ncacn_np) verwenden, sind von allen Einschränkungen ausgenommen, die in diesem Abschnitt erläutert werden. Die Named Pipe-Protokollsequenz kann aufgrund erheblicher Probleme in Bezug auf die Abwärtskompatibilität nicht eingeschränkt werden.

RestrictRemoteClients can also be controlled programmatically In rpcdce.h API (Application Programming Interface) header.

Konfigurieren von RestrictRemoteClients

So bearbeiten Sie diese Richtlinien mit dem GPO-Editor (Group Policy Objekt, Gruppenrichtlinienobjekt)

  1. Wählen Sie Start>, tippen Sie gpedit.msc> und drücken Sie Enter, um den Editor für lokale Gruppenrichtlinien zu öffnen.

  2. Um die Entsprechung der Einstellungen RestrictRemoteClients zu aktivieren, navigieren Sie zu Computerkonfiguration\Administrative Vorlagen\System\Remoteprozeduraufruf\Einschränkungen für nicht authentifizierte RPC-Clients, und wählen Sie dann eine der folgenden Optionen aus:

    • Deaktiviert – Diese Einstellung ist der Standardwert für Server-SKUs. Entspricht dem Wert RPC_RESTRICT_REMOTE_CLIENT_NONE in "rpcdce.h", und es liegt in der Verantwortung der Serveranwendung, geeignete RPC-Einschränkungen zu erzwingen.
    • Authentifiziert – Entspricht dem Wert RPC_RESTRICT_REMOTE_CLIENT_DEFAULT in "rpcdce.h". Mit dieser Option wird nur authentifizierten RPC-Clients gestattet, sich mit RPC-Servern zu verbinden, die auf dem Computer ausgeführt werden, auf den die Richtlinieneinstellung angewendet wird. RPC-Laufzeit lehnt anonyme Aufrufe ab. Wenn eine Schnittstelle einen Sicherheitsrückruf registriert und das Flag RPC_IF_ALLOW_CALLBACKS_WITH_NO_AUTH angibt, gilt diese Einschränkung nicht für diese Schnittstelle.
    • Authentifiziert ohne Ausnahmen1 – Entspricht dem Wert RPC_RESTRICT_REMOTE_CLIENT_HIGH in rpcdce.h. Mit dieser Option wird nur authentifizierten RPC-Clients gestattet, sich mit RPC-Servern zu verbinden, die auf dem Computer ausgeführt werden, auf den die Richtlinieneinstellung angewendet wird. Keine Ausnahmen sind zulässig, wenn dieser Wert festgelegt ist, da das System keine anonymen Remoteaufrufe über RPC empfangen kann.

Alle Änderungen an diesen Einstellungen erfordern einen Systemneustart, um wirksam zu werden.

Achtung

¹Verwenden Sie diesen Wert nicht ohne signifikante Tests. Weitere Informationen finden Sie unter Restrictions for Unauthenticated RPC Clients (Einschränkungen für nicht authentifizierte RPC-Clients).

EnableAuthEpResolution

Der EnableAuthEpResolution Schlüssel ermöglicht es der RPC-Clientlaufzeit, NTLM (NT LAN Manager) zu verwenden, um sich bei aktivierter Endpunktzuordnung beim Endpoint-Mapping zu authentifizieren. Diese authentifizierte Abfrage wird nur durchgeführt, wenn der tatsächliche RPC-Clientaufruf die RPC-Authentifizierung verwendet.

RPC-Clients führen Aufrufe an einen RPC-Server durch, der einen registrierten dynamischen Endpunkt mit aktivierter Clientauthentifizierung für die RPC-Endpunktzuordnung hat. Diese Aufrufe werden im Auftrag authentifizierter Anrufe mithilfe der NTLM-Authentifizierung abgefragt.

RPC-Clients, die versuchen, einen Anruf mithilfe eines dynamischen Endpunkts zu tätigen, fragt den RPC-Endpunkt-Mapper auf dem Server ab, um zu bestimmen, mit welchem Endpunkt eine Verbindung hergestellt werden soll. Diese Abfrage wird anonym ausgeführt, auch wenn der RPC-Clientaufruf selbst mithilfe von RPC-Sicherheit ausgeführt wird. Auf die RPC-Endpunktzuordnungsschnittstelle kann nicht anonym zugegriffen werden, wenn die RestrictRemoteClients Einstellung aktiviert ist.

Konfigurieren von EnableAuthEpResolution

So bearbeiten Sie diese Richtlinien mit dem GPO-Editor (Group Policy Objekt, Gruppenrichtlinienobjekt)

  1. Wählen Sie Start>, geben Sie gpedit.msc> ein und drücken Sie die Enter-Taste, um den Editor für lokale Gruppenrichtlinien zu öffnen.

  2. Um die Entsprechung der EnableAuthEpResolution-Einstellungen zu aktivieren, navigieren Sie zu Computerkonfiguration\Administrative Vorlagen\System\Remoteprozeduraufruf\RPC-Endpunktzuordnungs-Clientauthentifizierung aktivieren, und wählen Sie dann eine der beiden verfügbaren Einstellungen aus:

    • Deaktiviert – Diese Einstellung ist die Standardeinstellung. RPC-Clients authentifizieren sich nicht beim Endpunktzuordnungsdienst, sie können jedoch mit dem Endpunktzuordnungsdienst unter Windows NT4 Server kommunizieren.
    • Aktiviert – PC-Clients authentifizieren sich über den Endpoint Mapper-Dienst für Anrufe, die Authentifizierungsinformationen enthalten. Clients, die solche Anrufe tätigen, können nicht mit dem Windows NT4 Server Endpoint Mapper Service kommunizieren.

Alle Änderungen an diesen Einstellungen erfordern einen Systemneustart, um wirksam zu werden.

Wichtig

Die folgenden Gruppenrichtlinieneinstellungen in "Computerkonfiguration\Windows-Einstellungen\Sicherheitseinstellungen\Lokale Richtlinien\Sicherheitsoptionen" können nicht verwendet werden:EnableAuthEpResolution

  • Netzwerksicherheit: Beschränken von NTLM: Eingehender NTLM-Datenverkehr: Alle Konten ablehnen
  • Netzwerksicherheit: Beschränken von NTLM: Ausgehender NTLM-Datenverkehr zu Remoteservern: Alle ablehnen

Es wird empfohlen, sich von NTLM zu entfernen, um Ihre Umgebung besser zu schützen. Wenn Sie vor der Wahl zwischen der Einschränkung von NTLM und der Verwendung von EnableAuthEpResolution stehen, wird empfohlen, NTLM in Ihrer Umgebung einzuschränken.

Andere Flags für die RPC-Schnittstellenregistrierung

Diese Schnittstellenregistrierungskennzeichnungen werden erstellt, um es einem Anwendungsentwickler zu erleichtern, eine RPC-Schnittstelle zu sichern:

  • RPC_IF_ALLOW_CALLBACKS_WITH_NO_AUTH
    Wenn dieses Flag registriert wird, ruft die RPC-Laufzeit den registrierten Sicherheitsrückruf für alle Aufrufe auf, unabhängig von den Sicherheitseinstellungen für den Aufruf. Ohne dieses Flag lehnt RPC alle nicht authentifizierten Aufrufe ab, bevor sie den Sicherheitsrückruf erreichen. Dieses Flag funktioniert nur, wenn ein Sicherheitsrückruf registriert wird.

  • RPC_IF_SEC_NO_CACHE
    Ein Sicherheitsrückruf wird für eine Schnittstelle registriert, um den Zugriff einzuschränken. Normalerweise gibt sich der Sicherheitsrückruf als der Client aus, um zu überprüfen, ob der Client über ausreichende Rechte verfügt, um einen Aufruf der Schnittstelle zu machen. Sobald eine bestimmte Clientidentität den Sicherheitsrückruf übergibt, übergibt sie in der Regel denselben Sicherheitsrückruf bei nachfolgenden Versuchen.

    Die RPC-Laufzeit nutzt dieses Muster, indem sie sich merken, wenn eine einzelne Clientidentität einen Sicherheitsrückruf übergibt. Anschließend wird der Sicherheitsrückruf für nachfolgende Aufrufe von diesem Client an dieselbe Schnittstelle übersprungen. Dieses Feature wird als Zwischenspeicherung von Sicherheitsrückrufen bezeichnet und ist seit der Microsoft Windows 2000-Betriebssystemfamilie vorhanden. Sie können das Flag RPC_IF_SEC_NO_CACHE verwenden, um die Zwischenspeicherung von Sicherheitsrückrufen für eine bestimmte Schnittstelle zu deaktivieren. Dies ist nützlich, wenn sich die Sicherheitsüberprüfung ändern kann und möglicherweise eine zuvor zulässige Clientidentität abgelehnt wird.

  • RPC_IF_LOCAL_ONLY
    Wenn eine Schnittstelle mit diesem Flag registriert ist, lehnt RPC Anrufe von Remote-RPC-Clients ab. Darüber hinaus werden lokale Aufrufe für alle Protokollsequenzen vom Typ ncadg_* und alle Protokollsequenzen vom Typ ncacn_* (mit Ausnahme von Named Pipes, die ncacn_np verwenden) ebenfalls abgelehnt. Wenn ein Aufruf für ncacn_np erfolgt, lässt der RPC den Aufruf nur zu, wenn er nicht von SRV (Service Location Protocol) stammt, da dadurch alle Remoteaufrufe herausgefiltert werden. Ncalrpc Anrufe sind immer zulässig.

Die Verwendung dieser Flags liegt im Ermessen der Anwendungsentwickler*innen. Entwickler von RPC-Anwendungen werden zusätzliche Sicherheitstools bereitgestellt, um ihre RPC-Schnittstelle zu sichern, da diese Flags keine vorhandene Anwendung ändern oder dazu führen, dass sie falsch ausgeführt werden.

Siehe auch