Remote Procedure Call (RPC) ist eine leistungsfähige Technologie, mit der Funktionen oder Prozeduren remote ausgeführt werden können. Diese Ausführung kann in einem anderen Adressraum erfolgen, was entweder auf demselben Computer oder auf einem anderen Computer im Netzwerk geschehen kann. Unter Windows spielt RPC eine zentrale Rolle in der Systemarchitektur und wird in vielen kritischen Systemkomponenten und Anwendungen verwendet. In dieser Anleitung zum Thema „RPC“ werden wir uns eingehend mit RPC unter Windows befassen, seine Funktionsweise, seine Bedeutung, typische Anwendungsfälle und Sicherheitsaspekte erläutern.

Was ist RPC?

RPC steht für Remote Procedure Call und ist eine Technik, die es einem Programm ermöglicht, eine Prozedur oder Funktion auszuführen, die sich in einem anderen Adressraum befindet. Dies kann entweder auf demselben Rechner oder über ein Netzwerk hinweg geschehen. RPC abstrahiert die Komplexität der Netzwerkkommunikation und stellt eine einfache Schnittstelle für die Interprozesskommunikation (IPC) zur Verfügung.

Funktionsweise von RPC

Die grundlegende Funktionsweise von RPC kann in folgenden Schritten zusammengefasst werden:

  1. Client-Stub: Der Client-Stub ist ein Proxy, der im selben Adressraum wie der aufrufende Client-Prozess läuft. Er verpackt den Aufruf der entfernten Prozedur und die Parameter in ein Format, das über das Netzwerk gesendet werden kann.
  2. Client-Runtime: Die Client-Runtime-Komponente übernimmt die Aufgabe, die verpackte Nachricht über das Netzwerk an den Server zu senden.
  3. Server-Runtime: Auf der Serverseite empfängt die Server-Runtime-Komponente die Nachricht und übergibt sie an den Server-Stub.
  4. Server-Stub: Der Server-Stub entpackt die Nachricht und ruft die entsprechende Prozedur auf dem Server auf. Nach der Ausführung wird das Ergebnis wieder verpackt und zurück an den Client gesendet.
  5. Ergebnisrückgabe: Das Ergebnis der entfernten Prozedur wird über die gleichen Kommunikationskanäle zurück an den Client-Stub gesendet, der es an den aufrufenden Client-Prozess weiterleitet.

RPC unter Windows

Unter Windows ist RPC tief in die Systemarchitektur integriert und wird in vielen Bereichen verwendet, einschließlich der Kommunikation zwischen Systemdiensten und Anwendungen. Die Windows-Implementierung von RPC basiert auf dem DCE (Distributed Computing Environment) RPC-Standard und bietet eine robuste und flexible Plattform für die Entwicklung verteilter Anwendungen.

Komponenten von RPC unter Windows

  • RPC Runtime: Die Runtime-Bibliothek stellt die grundlegenden Funktionen für die Kommunikation und die Verwaltung von RPCs zur Verfügung.
  • RPC Stubs: Stubs werden durch IDL-Dateien (Interface Definition Language) definiert und generiert. Sie fungieren als Vermittler zwischen den Anwendungen und der RPC Runtime.
  • Protocol Sequences: Protokollsequenzen definieren die Transportprotokolle, die für die Kommunikation verwendet werden, wie z.B. TCP/IP, Named Pipes oder LPC (Local Procedure Call).
  • Binding Handles: Binding Handles sind Datenstrukturen, die Informationen über die Verbindungsparameter enthalten und zur Identifikation und Authentifizierung von RPC-Verbindungen dienen.

RPC Anpassungen unter Windows

Der RPC-Client ist standardmäßig in den meisten Windows-Versionen integriert und benötigt in der Regel keine separate Installation. RPC (Remote Procedure Call) ist eine Kernkomponente des Windows-Betriebssystems, die viele systeminterne Funktionen und Dienste unterstützt. Es gibt jedoch Situationen, in denen bestimmte Dienste oder Anwendungen, die auf RPC angewiesen sind, manuell aktiviert oder konfiguriert werden müssen. Hier sind die Schritte, um sicherzustellen, dass der RPC-Client auf Ihrem Windows-System korrekt installiert und konfiguriert ist:

RPC Dienste Windows

Schritt 1: Überprüfen der RPC-Dienste

  • Öffnen Sie die Windows Dienste-Verwaltung. Drücken Sie Windowstaste + R, um das Ausführen-Dialogfeld zu öffnen.
  • Geben Sie „services.msc“ ein und drücken Sie Enter.
  • Suchen Sie in der Liste der Dienste nach „Remoteprocedureaufruf (RPC)„, „RPC-Endpunktzuordnung“ und „Remote Locator„. Der Remoteprocedureaufruf wird auch „rpc procedure call“ genannt.
  • Stellen Sie sicher, dass die beiden erst genannten Dienste gestartet sind und der Starttyp auf „Automatisch“ gesetzt ist.

Schritt 2: Aktivieren von RPC für bestimmte Anwendungen

Einige Anwendungen oder Dienste, die RPC verwenden, müssen möglicherweise manuell aktiviert werden. Dies geschieht häufig über die Systemsteuerung oder spezifische Verwaltungswerkzeuge.

  • Drücken Sie Windows + X und wählen Sie Systemsteuerung aus dem Menü.
  • Navigieren Sie zu Programme > Programme und Features > Windows-Features aktivieren oder deaktivieren.
  • Überprüfen Sie die Liste der Windows-Features und stellen Sie sicher, dass alle erforderlichen Komponenten, die RPC verwenden, aktiviert sind. Dies könnte z.B. „SMB Direct“ oder andere Netzwerkdienste umfassen.

Schritt 3: Konfigurieren der Firewall

Die Windows-Firewall muss so konfiguriert sein, dass sie RPC-Kommunikation zulässt.

  • Gehen Sie in der Systemsteuerung zu System und Sicherheit > Windows Defender Firewall.
  • Klicken Sie auf Eine App oder ein Feature durch die Windows Defender Firewall zulassen.
  • Stellen Sie sicher, dass Remote Procedure Call (RPC) in der Liste der erlaubten Anwendungen enthalten ist und sowohl für private als auch für öffentliche Netzwerke aktiviert ist.

Schritt 4: Testen der RPC-Funktionalität

Um sicherzustellen, dass der RPC-Client korrekt funktioniert, können Sie einige grundlegende Tests durchführen:

  • Stellen Sie sicher, dass Ihr Computer mit dem Netzwerk verbunden ist und dass keine Netzwerkprobleme bestehen.
  • Es gibt verschiedene Tools und Befehle, die zur Überprüfung der RPC-Funktionalität verwendet werden können, wie z.B. „rpcping„. Dieses Tool kann verwendet werden, um die Erreichbarkeit eines RPC-Servers zu testen. Es gehört zum Windows Standardumfang und ist genauso wie der Ping Befehl jederzeit abrufbar.
   rpcping -s <ServerName> -e 135 -u <UserName> -p <Password>

Ersetzen Sie <ServerName>, <UserName> und <Password> durch die entsprechenden Werte für Ihre Umgebung.

RPCPing

Durch das Befolgen dieser Schritte stellen Sie sicher, dass der RPC-Client auf Ihrem Windows-System korrekt installiert und konfiguriert ist. Sollte es dennoch Probleme geben, kann es hilfreich sein, spezifische Fehlermeldungen zu recherchieren oder die Windows-Dokumentation zu Rate zu ziehen.

Schritt 5: Konfigurieren von DCOM (Distributed Component Object Model)

RPC-Server unter Windows verwenden oft DCOM, um entfernte Objekte zu verwalten. Stellen Sie sicher, dass DCOM korrekt konfiguriert ist.

  1. Öffnen Sie die DCOM-Konfiguration:
    • Drücken Sie Windows + R, um das Ausführen-Dialogfeld zu öffnen.
    • Geben Sie dcomcnfg ein und drücken Sie Enter.
  2. Konfigurieren Sie die DCOM-Einstellungen:
    • Navigieren Sie zu Komponentendienste > Computer > Arbeitsplatz.
    • Klicken Sie mit der rechten Maustaste auf Arbeitsplatz und wählen Sie Eigenschaften.
    • Unter dem Tab Standardprotokolle stellen Sie sicher, dass die erforderlichen Protokolle (wie TCP/IP) aktiviert sind.
    • Unter dem Tab Standardkomponenten und Sicherheit können Sie die Standardauthentifizierungs- und Impersonationsebenen einstellen.

RPC Ports

Hier ist eine Tabelle der RPC-Ports, die unter Windows häufig verwendet werden:

PortnummerBeschreibungVerwendung
135RPC Endpoint MapperInitiale Verbindung, um dynamische Ports zuzuweisen
1024-65535Dynamische PortsKommunikation zwischen RPC-Client und -Server
593RPC over HTTPKommunikation über HTTP, häufig für Internet-Verbindungen
135DCOM (Distributed Component Object Model)Initiale Verbindung für DCOM
1024-65535Dynamische Ports für DCOMKommunikation für DCOM-Objekte
RPC Registry

Details zu den Ports:

  • Port 135 (RPC Endpoint Mapper): Der Endpoint Mapper-Dienst auf diesem Port weist RPC-Clients dynamische Ports zu, die für die Kommunikation mit RPC-Servern erforderlich sind.
  • Dynamische Ports (1024-65535): Nachdem der RPC Endpoint Mapper die initiale Verbindung über Port 135 hergestellt hat, werden dynamische Ports aus diesem Bereich für die tatsächliche RPC-Kommunikation verwendet. Diese Ports sind ephemer und werden bei Bedarf zugewiesen.
  • Port 593 (RPC over HTTP): Dieser Port wird verwendet, wenn RPC über HTTP transportiert wird, was häufig bei Verbindungen über das Internet oder durch Firewalls hindurch notwendig ist.
  • Ports für DCOM: DCOM verwendet ebenfalls Port 135 für die initiale Verbindung und dynamische Ports im Bereich 1024-65535 für die Kommunikation. DCOM ist auf RPC aufgebaut und nutzt daher ähnliche Portmechanismen.

Konfiguration und Einschränkung der dynamischen Ports:

Administratoren können den Bereich der dynamischen Ports für RPC durch Bearbeiten der Windows-Registrierung einschränken. Hierzu werden folgende Registrierungseinträge angepasst unter:

HKEY_LOCAL_MACHINE\Software\Microsoft\Rpc\Internet
  • Ports: Definiert eine Liste von Ports oder Portbereichen (z.B. „5000-5100“).
  • PortsInternetAvailable: Setzt diesen Wert auf Y, um zu bestätigen, dass die spezifizierten Ports für RPC verfügbar sind.
  • UseInternetPorts: Setzt diesen Wert auf Y, um die Verwendung der angegebenen Ports zu aktivieren.

Durch das Anpassen dieser Einstellungen kann der Administrator die Portnutzung von RPC besser kontrollieren und die Kommunikation entsprechend den Sicherheitsanforderungen konfigurieren.

RPC Fehlermeldungen

Die Fehlermeldungen „RPC-Server nicht verfügbar“ oder die WMIC RPC Fehlermeldung 0x800706ba können, wenn der RPC-Dienst auf dem Zielrechner nicht läuft oder deaktiviert ist, Netzwerkprobleme die Kommunikation zwischen dem Client und dem Server unterbrechen, die Windows-Firewall oder andere Sicherheitssoftware die erforderlichen Ports blockieren, oder die Registrierungseinstellungen fehlerhaft sind. Zudem können falsche DNS-Einstellungen oder Namensauflösungsprobleme dazu führen, dass der Client den Server nicht findet.

Wann müssen RPC Einstellungen verändert werden?

Änderungen an RPC-Einstellungen unter Microsoft Windows sind in verschiedenen Situationen erforderlich, um die Leistung, Sicherheit und Zuverlässigkeit des Systems zu optimieren. Eine der Hauptursachen für Änderungen sind erhöhte Sicherheitsanforderungen. Beispielsweise können neue Unternehmensrichtlinien oder regulatorische Anforderungen eine Anpassung der Authentifizierungs- und Autorisierungsmethoden notwendig machen. Dies könnte bedeuten, dass von NTLM zu Kerberos gewechselt wird, um stärkere Authentifizierungsmechanismen zu implementieren. Ebenso erfordert die Übertragung sensibler oder vertraulicher Daten über RPC möglicherweise die Aktivierung oder Verbesserung von Verschlüsselungsmechanismen, um die Vertraulichkeit und Integrität der Daten zu gewährleisten.

Leistungsoptimierungen sind ein weiterer häufiger Grund für Änderungen an RPC-Einstellungen. Bei hoher Netzwerkbelastung kann es notwendig sein, die RPC-Protokollsequenzen anzupassen oder Kompressionstechniken zu implementieren, um die Effizienz der Datenübertragung zu steigern. Zudem können Anpassungen an den Server- und Client-Konfigurationen erforderlich sein, um die Systemleistung zu optimieren, insbesondere in Umgebungen mit hohem Datenverkehr.

Netzwerkarchitekturänderungen sind ebenfalls ein häufiger Anlass für Anpassungen der RPC-Einstellungen. Wenn beispielsweise neue Firewalls eingeführt oder Netzwerksicherheitsrichtlinien geändert werden, müssen möglicherweise die RPC-Port- und Protokolleinstellungen angepasst werden, um eine reibungslose Kommunikation zu gewährleisten.

Auch bei der Anwendungsentwicklung und -bereitstellung können Änderungen an den RPC-Einstellungen notwendig werden. Bei der Entwicklung neuer Anwendungen, die RPC nutzen, müssen die RPC-Einstellungen möglicherweise angepasst werden, um die spezifischen Anforderungen der neuen Anwendungen zu unterstützen. Ebenso können bei der Fehlerbehebung und Debugging von Problemen in der RPC-Kommunikation Anpassungen erforderlich sein, wie etwa das Aktivieren detaillierter Protokollierungen oder das Anpassen von Timeout-Werten.

Compliance und Audit-Anforderungen sind ein weiterer Faktor, der Änderungen an RPC-Einstellungen bedingen kann. Zur Erfüllung von regulatorischen Anforderungen kann es notwendig sein, die Protokollierungs- und Auditeinstellungen für RPC zu ändern, um sicherzustellen, dass alle relevanten Aktivitäten überwacht und aufgezeichnet werden.

Schließlich können auch Skalierungsanforderungen Anlass für Anpassungen sein. Wenn die IT-Infrastruktur erweitert wird, beispielsweise durch das Hinzufügen neuer Server oder Clients, müssen möglicherweise die RPC-Einstellungen angepasst werden, um eine optimale Funktionalität zu gewährleisten.

Insgesamt gibt es viele Umstände, die Änderungen an den RPC-Einstellungen unter Windows erfordern können. Die Anpassung dieser Einstellungen trägt dazu bei, die Sicherheit, Leistung und Zuverlässigkeit des Systems zu verbessern und auf sich ändernde Anforderungen und Bedingungen zu reagieren.

Fazit

RPC unter Windows ist eine leistungsfähige Technologie, die eine nahtlose Kommunikation zwischen Prozessen ermöglicht, sei es auf demselben Rechner oder über ein Netzwerk hinweg. Durch die Abstraktion der Netzwerkkommunikation und die Bereitstellung einer einfachen Schnittstelle erleichtert RPC die Entwicklung verteilter Anwendungen und verbessert die Interprozesskommunikation.

Mit den richtigen Sicherheitsvorkehrungen und Best Practices können Entwickler und Administratoren die Vorteile von RPC voll ausschöpfen und gleichzeitig die Sicherheit und Zuverlässigkeit ihrer Systeme gewährleisten. Ob in der Systemverwaltung, der Entwicklung verteilter Anwendungen oder der Implementierung von Client-Server-Architekturen – RPC ist ein unverzichtbares Werkzeug in der Windows-Welt.

– Port 80 – Aufgabe und Funktion