RPC-Firewall
Wer einem Windows Server schon mal mit NetMon 3 oder Wireshark/Ethereal auf die Finger geschaut hat, wird gesehen haben, dass neben klassischen Protokollen wie DNS, WINS, NTP sehr viel über "RPC" abgewickelt wird. Windows nutzt diese z.B. für "Remote Registry", Druckdienste, Backup, Eventlog, Taskplaner und auch Outlook/Exchange bedient sich der Dienste des "Portmappers" um die aktuellen Ports für die gewünschten Dienste zu erhalten.
Um die Sicherheit zu steigern werden nun aber immer mehr Firewalls auch innerhalb von Firmen eingesetzt, z.B. Um verschiedene Abteilungen gegeneinander abzusichern und damit stellt sich natürlich die Frage, wie die Sicherheit und unterscheidung bei solchen Diensten weiterhin zu gewährleisten ist.
Strategie | Sicherheit | Beschreibung |
---|---|---|
HighPorts öffnen |
|
Wer sich das Leben einfache machen will, kann die Server einfach für alle High-Ports erreichbar machen. Je nach Betriebssystem ist das 1025-65535 oder auch nur ein sehr viel kleinerer Bereich. (Siehe auch 65535 Port-Limit). Sicher ist das allerdings nicht und stellt die Notwendigkeit einer Firewall stark in Frage. |
feste Ports zuweisen |
|
Wenn DNS, WINS, TELNET, SMTP, HTTP, FTP und viele andere Dienste sich mit festen "well-known" Ports betreiben lassen, dann kann dies für RPC-Dienste doch nur billig sein. Durch den Wechsel von dynamischen Ports auf feste Ports kann eine portbasierte Firewall etwas enger konfiguriert werden. für einige Umgebungen sind feste Ports sogar sinnvoll, z.B. wenn anhand der Ports mit QoS Priorisierung, Loadbalancern WAN-Optimiereren gearbeitet werden soll. Es ist aber auch eine aufwändige Konfigurationsarbeit auf allen beteiligten Systemen und oft gibt es dann doch vielleicht Dienste, die sich gar nichtfestzurren lassen. Dennoch bliebt natürlich auch das Restrisiko, dass eine andere "schnellere" Anwendung den Port dynamisch schon belegt hat oder dieser erlaubte Port in der Firewall nicht von anderen Diensten genutzt wird. |
Ports erkennen |
|
Gerade beim Einsatz von "RPC" mit den dynamischen Ports wird gerne übersehen, dass die RPC-Abfrage über den Portmapper spezifiziert ist, der Client vom Server über eine eindeutige ID den gewünschten Dienst nachfragt und der Portmapper darauf mit einer "lesbaren" Antwort antwortet. Eine Firewall kann entsprechend die Port 135-Anfrage und die Antwort sehen und dann sogar auf Applikationsebene die Folgekommunikation zulassen. |
In Zeiten der immer komplexeren Angriffsmuster ist eine Firewall, die Pakete nur anhand von Quell-IP:Port und Ziel-IP:Port behandelt, nicht mehr auf dem aktuellen Stand. So genannte Next Generation Firewalls investieren viel Energie in die Ermittlung der tatsächlich genutzten Dienste und Applikationen, damit auch wirklich nur die gewünschte Nutzung möglich ist. Eine solche Firewall ist natürlich auch ein besserer Schutz für Exchange und Windows im Allgemeinen. Gerade ein Windows Server kann sehr viele Dienste anbieten, die alle über den Portmapper (Port 135) angefragt und dann direkt angesprochen werden. Und nicht immer ist es vielleicht gewünscht, dass alle RPC-Dienste von Windows von allen Clients auch tatsächlich angesprochen werden.
Daher ist es schon sehr interessant hier auf Ebene einer vorgelagerten Schutzinstanz diese Port 135-Anfragen zu identifizieren und nur erlaubte Dienste überhaupt erst an den Server weiter zu reichen und dann die passenden Ports für den nachfragenden Client zu öffnen. Das Microsoft Thread Management Gateway 2010 (TMG) kann z.B. RPCs verstehen und auf Applikationslevel zulassen.
Aber auch TMG muss "gepflegt" werden. Nur "Exchange RPC" gibt es als vordefinierte Gruppe. Alle anderen UUIDs müssen Sie schon selbst in der jeweiligen Regel beim Protokollfilter addieren.
- RPC Filter and "Enable
strict RPC compliance"
http://blogs.technet.com/b/isablog/archive/2007/05/16/rpc-filter-and-enable-strict-rpc-compliance.aspx
Häufig werden von Herstellern hierzu unterschiedliche Bezeichnungen verwendet wie z.B. "RPC UUID filtering" oder "DCE-RPC Enforcement"
Aber selbst für anderen Protokolle und Dienste sind solche "Depp Inspection"-Ansätze interessant. Wer sagt denn, dass über Port 25 immer nur SMTP gesprochen wird oder über HTTP oder den HTTP-Proxy immer nur "gesurft" wird ?. Alle modernen Anwendungen (u.a. VoIP wie Skype, Fernwartungen etc.) können mittlerweile durch HTTP "tunneln". Eine gute Firewall versteht daher auch HTTP und kann bewerten, was tatsächlich stattfindet und kann sogar URLs, GET, POST und Formulardaten auf Schadcode oder unerwünschte Nutzung bewerten. Die Firewall kann sogar die Zugriffe auf einen Proxy umleiten oder selbst Proxy sein um den Schutz zu erhöhen und Bandbreite zu sparen, selbst wenn der Anwender keinen Proxy in seinem Browser eingetragen hat. Erst mit dem Einsatz von SSL oder IPSec wird es schwer für eine Firewall noch die Inhalte zu sehen, wenn Sie nicht als "Man in the Middle" die Verschlüsselung aufbrechen kann.
Portmapper und UUID als Schlüssel zum Dienst
Damit bleibt natürlich die Frage, wie ein Client den passenden Port zu einem Dienst findet. Microsoft nutzt dazu den RPC-Portmapper, der aber ursprünglich wohl von SUN initiiert wurde und daher in der ETC/Services oft auch als SunRPC gelistet wird. man umgeht damit die Problematik, dass ein Server nur 65535 Ports hat und damit nicht jede Serveranwendung ihren "eigenen" Port garantiert nutzen kann. Konflikte sind dann unvermeidbar. Daher kann ein Client eine Anfrage an den Portmapper über 135/TCP senden und eine eindeutige UUID übermitteln, die der Hersteller sich reserviert hat. Die UUID ist dabei lang genug, dass selbst zufälliger Festlegung ein Konflikt mit anderen Diensten nahezu ausgeschlossen ist. Eine zentrale Registry solcher UUIDs würde ja ein Fehlerrisiko haben, das sogar höher ist. Bei Windows wird auch oft der Begriff "GUID" genutzt.
UUID im RPC-Paket
Wie das auf dem Kabel aussieht, können Sie einfach mit NetMon 3 oder Wireshark/Ethereal ermitteln. Nach dem 3-Wege Handshake auf Port 135 und dem "Bind" mit Authentifizierung versucht hier Outlook den ersten Exchange Service (MS Exchange Directory RFR) zu ermitteln.
Die Antwort folgt auf dem Fuße:
Der Server sagt dem Client, dass der angefragte Dienste aktuell auf dem Port 378652 Verbindungen annimmt.
In der Antwort ist auch die IP-Adresse des Hosts hinterlegt. Diese wird von Outlook und den meisten anderen Diensten aber ignoriert. Der Client bleibt in der Regel bei der IP-Adresse, die er per DNS/WINS oder andere Konfigurationseinstellungen schon aufgelöst hat. Damit ist dieser Wert auch nicht von Belang, wenn der Client z.B. über einen Load Balancer auf einem Server landet. Der Server kennt ja nicht die virtuelle IP-Adresse des Load Balancers.
Die in dem Beispiel angezeigten UUIDs sind real und finden sich auch in der folgenden Tabelle wieder.
UUID ermitteln mit RPCDump
Das Programm RPCDump ist Bestandteil des Windows 2000 Resource Kit. Ein RPC-Ping auf einen Windows 2008 Domaincontroller liefert eine stattliche Liste von RPC-Diensten getrennt nach den verschiedenen Protokollen.
rpcdump /s <server> /i Querying Endpoint Mapper Database... 71 registered endpoints found. ncacn_http(Connection-oriented TCP/IP using Microsoft Internet Information Server as HTTP proxy.) SRV01[49158] [b25a52bf-e5dd-4f4a-aea6-8ca7272a0e86] KeyIso :NOT_PINGED SRV01[49158] [12345678-1234-abcd-ef00-01234567cffb] :NOT_PINGED SRV01[49158] [12345778-1234-abcd-ef00-0123456789ac] :NOT_PINGED SRV01[49158] [12345778-1234-abcd-ef00-0123456789ab] :NOT_PINGED SRV01[49158] [f5cc5a18-4264-101a-8c59-08002b2f8426] MS NT Directory NSP Interface :NOT_PINGED SRV01[49158] [e3514235-4b06-11d1-ab04-00c04fc2dcd2] MS NT Directory DRS Interface :NOT_PINGED ncacn_np(Connection-oriented named pipes) SRV01[\PIPE\InitShutdown] [d95afe70-a6d5-4259-822e-2c84da1ddb0d] :NOT_PINGED SRV01[\PIPE\InitShutdown] [76f226c3-ec14-4325-8a99-6a46348418af] :NOT_PINGED SRV01[\pipe\eventlog] [3c4728c5-f0ab-448b-bda1-6ce01eb0a6d6] DHCPv6 Client LRPC Endpoint :NOT_PINGED SRV01[\pipe\eventlog] [3c4728c5-f0ab-448b-bda1-6ce01eb0a6d5] DHCP Client LRPC Endpoint :NOT_PINGED SRV01[\pipe\eventlog] [30adc50c-5cbc-46ce-9a0e-91914789e23c] NRP server endpoint :NOT_PINGED SRV01[\pipe\eventlog] [f6beaff7-1e19-4fbb-9f8f-b89e2018337c] Event log TCPIP :NOT_PINGED SRV01[\PIPE\srvsvc] [30b044a5-a225-43f0-b3a4-e060df91f9c1] :NOT_PINGED SRV01[\PIPE\atsvc] [30b044a5-a225-43f0-b3a4-e060df91f9c1] :NOT_PINGED SRV01[\PIPE\srvsvc] [c9ac6db5-82b7-4e55-ae8a-e464ed7b4277] Impl friendly name :NOT_PINGED SRV01[\PIPE\atsvc] [c9ac6db5-82b7-4e55-ae8a-e464ed7b4277] Impl friendly name :NOT_PINGED SRV01[\PIPE\srvsvc] [552d076a-cb29-4e44-8b6a-d15e59e2c0af] IP Transition Configuration endpoint :NOT_PINGED SRV01[\PIPE\atsvc] [552d076a-cb29-4e44-8b6a-d15e59e2c0af] IP Transition Configuration endpoint :NOT_PINGED SRV01[\PIPE\srvsvc] [a398e520-d59a-4bdd-aa7a-3c1e0303a511] IKE/Authip API :NOT_PINGED SRV01[\PIPE\atsvc] [a398e520-d59a-4bdd-aa7a-3c1e0303a511] IKE/Authip API :NOT_PINGED SRV01[\PIPE\atsvc] [98716d03-89ac-44c7-bb8c-285824e51c4a] XactSrv service :NOT_PINGED SRV01[\PIPE\atsvc] [86d35949-83c9-4044-b424-db363231fd0c] :NOT_PINGED SRV01[\PIPE\atsvc] [378e52b0-c0a9-11cf-822d-00aa0051e40f] :NOT_PINGED SRV01[\PIPE\atsvc] [1ff70682-0a51-30e8-076d-740be8cee98b] :NOT_PINGED SRV01[\PIPE\W32TIME_ALT] [3473dd4d-2e88-4006-9cba-22570909dd10] WinHttp Auto-Proxy Service :NOT_PINGED SRV01[\pipe\efsrpc] [b25a52bf-e5dd-4f4a-aea6-8ca7272a0e86] KeyIso :NOT_PINGED SRV01[\PIPE\protected_storage] [b25a52bf-e5dd-4f4a-aea6-8ca7272a0e86] KeyIso :NOT_PINGED SRV01[\pipe\lsass] [b25a52bf-e5dd-4f4a-aea6-8ca7272a0e86] KeyIso :NOT_PINGED SRV01[\PIPE\protected_storage] [12345678-1234-abcd-ef00-01234567cffb] :NOT_PINGED SRV01[\pipe\lsass] [12345678-1234-abcd-ef00-01234567cffb] :NOT_PINGED SRV01[\PIPE\protected_storage] [12345778-1234-abcd-ef00-0123456789ac] :NOT_PINGED SRV01[\pipe\lsass] [12345778-1234-abcd-ef00-0123456789ac] :NOT_PINGED SRV01[\PIPE\protected_storage] [12345778-1234-abcd-ef00-0123456789ab] :NOT_PINGED SRV01[\pipe\lsass] [12345778-1234-abcd-ef00-0123456789ab] :NOT_PINGED SRV01[\PIPE\protected_storage] [f5cc5a18-4264-101a-8c59-08002b2f8426] MS NT Directory NSP Interface :NOT_PINGED SRV01[\pipe\lsass] [f5cc5a18-4264-101a-8c59-08002b2f8426] MS NT Directory NSP Interface :NOT_PINGED SRV01[\PIPE\protected_storage] [e3514235-4b06-11d1-ab04-00c04fc2dcd2] MS NT Directory DRS Interface :NOT_PINGED SRV01[\pipe\lsass] [e3514235-4b06-11d1-ab04-00c04fc2dcd2] MS NT Directory DRS Interface :NOT_PINGED SRV01[\pipe\WinsPipe] [811109bf-a4e1-11d1-ab54-00a0c91e9b45] :NOT_PINGED SRV01[\pipe\WinsPipe] [45f52c28-7f9f-101a-b52b-08002b2efabe] :NOT_PINGED ncacn_ip_tcp(Connection-oriented TCP/IP) SRV01[49153] [3c4728c5-f0ab-448b-bda1-6ce01eb0a6d6] DHCPv6 Client LRPC Endpoint :NOT_PINGED SRV01[49153] [3c4728c5-f0ab-448b-bda1-6ce01eb0a6d5] DHCP Client LRPC Endpoint :NOT_PINGED SRV01[49153] [30adc50c-5cbc-46ce-9a0e-91914789e23c] NRP server endpoint :NOT_PINGED SRV01[49153] [f6beaff7-1e19-4fbb-9f8f-b89e2018337c] Event log TCPIP :NOT_PINGED SRV01[49154] [30b044a5-a225-43f0-b3a4-e060df91f9c1] :NOT_PINGED SRV01[49154] [c9ac6db5-82b7-4e55-ae8a-e464ed7b4277] Impl friendly name :NOT_PINGED SRV01[49154] [552d076a-cb29-4e44-8b6a-d15e59e2c0af] IP Transition Configuration endpoint :NOT_PINGED SRV01[49154] [a398e520-d59a-4bdd-aa7a-3c1e0303a511] IKE/Authip API :NOT_PINGED SRV01[49154] [98716d03-89ac-44c7-bb8c-285824e51c4a] XactSrv service :NOT_PINGED SRV01[49154] [86d35949-83c9-4044-b424-db363231fd0c] :NOT_PINGED SRV01[49159] [b25a52bf-e5dd-4f4a-aea6-8ca7272a0e86] KeyIso :NOT_PINGED SRV01[49155] [b25a52bf-e5dd-4f4a-aea6-8ca7272a0e86] KeyIso :NOT_PINGED SRV01[49159] [12345678-1234-abcd-ef00-01234567cffb] :NOT_PINGED SRV01[49155] [12345678-1234-abcd-ef00-01234567cffb] :NOT_PINGED SRV01[49159] [12345778-1234-abcd-ef00-0123456789ac] :NOT_PINGED SRV01[49155] [12345778-1234-abcd-ef00-0123456789ac] :NOT_PINGED SRV01[49155] [12345778-1234-abcd-ef00-0123456789ab] :NOT_PINGED SRV01[49155] [f5cc5a18-4264-101a-8c59-08002b2f8426] MS NT Directory NSP Interface :NOT_PINGED SRV01[49155] [e3514235-4b06-11d1-ab04-00c04fc2dcd2] MS NT Directory DRS Interface :NOT_PINGED SRV01[51796] [811109bf-a4e1-11d1-ab54-00a0c91e9b45] :NOT_PINGED SRV01[51796] [45f52c28-7f9f-101a-b52b-08002b2efabe] :NOT_PINGED SRV01[51802] [5b821720-f63b-11d0-aad2-00c04fc324db] :NOT_PINGED SRV01[51802] [6bffd098-a112-3610-9833-46c3f874532d] :NOT_PINGED SRV01[51804] [a00c021c-2be2-11d2-b678-0000f87a8f8e] PERFMON SERVICE :NOT_PINGED SRV01[51804] [d049b186-814f-11d1-9a3c-00c04fc9b232] NtFrs API :NOT_PINGED SRV01[51804] [f5cc59b4-4264-101a-8c59-08002b2f8426] NtFrs Service :NOT_PINGED SRV01[51808] [367abb81-9844-35f1-ad32-98f038001003] :NOT_PINGED SRV01[51812] [12345678-1234-abcd-ef00-0123456789ab] IPSec Policy agent endpoint :NOT_PINGED SRV01[51812] [6b5bdd1e-528c-422c-af8c-a4079be4fe48] Remote Fw APIs :NOT_PINGED SRV01[51813] [50abc2a4-574d-40b3-9d66-ee4fd5fba076] :NOT_PINGED SRV01[49152] [d95afe70-a6d5-4259-822e-2c84da1ddb0d] :NOT_PINGED rpcdump completed sucessfully after 1 seconds
Mit dem Parameter "/i" werden alle Dienste auch einmal angesprochen, was aber dann einige Zeit dauert. In dem Beispiel waren es dann ca. 140 Sekunden.
Dienste, Ports und UUID
Bei einigen Firewalls können Sie aus einer vordefinierten Liste von UUIDs auswählen. Bei anderen müssen Sie selbst fehlende UUIDs pflegen. Daher habe ich aus verschiedenen Quellen einmal UUIDs zusammen gesucht. Sie werden aber auch so schon sehen, dass schon Exchange alleine eigene ganze Menge von UUIDs nutzt, die auch von der Exchange Version abhängig sind. Sehr viele Dienste kann man auch von der dynamischen Portrange auf "Statische Ports" umstellen.
832017 Service overview and
network port requirements für Windows
Dieser KB-Artikel fasst die meisten Windows
Dienste zusammen und enthält Hinweise auf die
Konfiguration mit statischen Ports.
Ein Firewall Admin, der auf Sicherheit wert legt, wird nicht auf Verdacht eine UUID zulassen, sondern z.B. mit RPCPING die erforderlichen ermitteln oder einfach sehen, welche Zugriffe noch geblockt werden und dann nachsteuern.
Dienst | Port | UUID |
---|---|---|
RPC Portmapper |
135 statisch |
e1af8308-5d1f-11c9-91a4-08002b14a0fa |
MS Exchange Directory RFR |
Dynamisch |
1544F5E0-613C-11D1-93DF-00C04FD7BD09 |
MS NT Directory NSP |
Dynamisch |
f5cc5a18-4264-101a-8c59-08002b2f8426 |
Exchange Server STORE EMSMDB |
Dynamisch |
A4F1DB00-CA47-1067-B31F-00DD010662DA |
Exchange 2000 Store admin |
Dynamisch |
99E64010-B032-11D0-97A4-00C04FD6551D |
Exchange 2000 MTA |
Dynamisch |
9E8EE830-4459-11CE-979B-00AA005FFEBE |
Exchange Directory NSP |
Dynamisch |
F5CC5A18-4264-101A-8C59-08002B2F8426 |
Exchange Directory XDS |
|
F5CC5A7C-4264-101A-8C59-08002B2F8426 |
Exchange Directory DRS |
|
F5CC59B4-4264-101A-8C59-08002B2F8426 |
Exchange Database |
|
1A190310-BB9C-11CD-90F8-00AA00466520 |
MTA QAdmin |
|
38A94E72-A9BC-11D2-8FAF-00C04fA378FF |
Exchange Information Store |
|
0E4A0156-DD5D-11D2-8C2F-00C04FB6BCDE |
Ex2003 System Attendant Cluster |
|
F930C514-1215-11D3-99A5-00A0C9B61B04 |
Ex2003 System Attendant Private |
|
83D72BF0-0D89-11CE-B13F-00AA003BAC6C |
Ex2003 System Attendant Public Interface |
|
469D6EC0-0D87-11CE-B13F-00AA003BAC6C |
MS-WINS |
|
|
Microsoft Active Directory Backup and
Restore Services |
|
ecec0d70-a603-11d0-96b1-00a0c91ece30 |
Microsoft Active Directory
Replication Service |
|
e3514235-4b06-11d1-ab04-00c04fc2dcd2 |
Microsoft Active Directory
DSROLE Service |
|
1cbcad78-df0b-4934-b558-87839ea501c9 |
Microsoft Active Directory Setup
Service |
|
3919286a-b10c-11d0-9ba8-00c04fd92ef5 |
Microsoft Distributed
Transaction Coordinator Service |
|
906b0ce0-c70b-1067-b317-00dd010662da |
Microsoft Exchange Database
Service |
|
1a190310-bb9c-11cd-90f8-00aa00466520 |
Microsoft Exchange Directory
Service |
|
f5cc5a18-4264-101a-8c59-08002b2f8426 |
Microsoft Exchange Information
Store Service |
|
0e4a0156-dd5d-11d2-8c2f-00c04fb6bcde |
Microsoft Exchange MTA Service |
|
9e8ee830-4459-11ce-979b-00aa005ffebe |
Microsoft Exchange Store Service |
|
99e66040-b032-11d0-97a4-00c04fd6551d |
Microsoft Exchange System
Attendant Service |
|
67df7c70-0f04-11ce-b13f-00aa003bac6c
f930c514-1215-11d3-99a5-00a0c9b61b04 |
Microsoft File Replication
Service |
|
f5cc59b4-4264-101a-8c59-08002b2f8426 |
Microsoft Internet Information Server
COM GUID/UUID Service |
|
70b51430-b6ca-11d0-b9b9-00a0c922e750 |
Microsoft Internet Information Server
IMAP4 Service |
|
2465e9e0-a873-11d0-930b-00a0c90ab17c |
Microsoft Internet Information
Server INETINFO Service |
|
82ad4280-036b-11cf-972c-00aa006887b0 |
Microsoft Internet Information Server
NNTP Service |
|
4f82f460-0e21-11cf-909e-00805f48a135 |
Microsoft Internet Information Server
POP3 Service |
|
1be617c0-31a5-11cf-a7d8-00805f48a135 |
Microsoft Internet Information Server
SMTP Service |
|
8cfb5d70-31a4-11cf-a7d8-00805f48a135 |
Microsoft Inter-site Messaging
Service |
|
68dcd486-669e-11d1-ab0c-00c04fc2dcd2 |
Microsoft Messenger Service |
|
17fdd703-1827-4e34-79d4-24a55c53bb37 |
Microsoft Windows Message Queue
Management Service |
|
fdb3a030-065f-11d1-bb9b-00a024ea5525 |
Microsoft Netlogon Service |
|
12345678-1234-abcd-ef00-01234567cffb |
Microsoft Scheduler Service |
|
1ff70682-0a51-30e8-076d-740be8cee98b |
Microsoft Windows DNS Server |
|
50abc2a4-574d-40b3-9d66-ee4fd5fba076 |
Microsoft WINS Service |
|
45f52c28-7f9f-101a-b52b-08002b2efabe |
Weitere Links
- 65535 Port-Limit
- Outlook RPC
- 832017 Service overview and network port requirements für Windows
- 319553 How to restrict FRS replication traffic to a specific static port
- 178517 TCP ports, UDP ports, and RPC ports that are used by Message Queuing.
- Protecting Windows RPC Traffic
http://technet.microsoft.com/en-us/library/cc751166.aspx - 304948 RPC Interfaces That Are Exposed by Secure Mail Publishing in ISA Server 2000
- Universally unique Identifier
http://de.wikipedia.org/wiki/Universally_Unique_Identifier - RPC over Firewall
http://techjambu.blogspot.de/2012/03/rpc-over-firewall.html#!/2012/03/rpc-over-firewall.html - Juniper KB12057 MS-RPC UUID Mappings
http://kb.juniper.net/InfoCenter/index?page=content&id=KB12057