Firewall-Regeln für Windows Domain Controller
(und diesbezügliche Erfahrungen mit Vista)
Walter Selos
Da öfters der Wunsch besteht, den Domain Controller hinter einen Firewall
zu stellen, um ihn sowohl von außen, wie auch vor den Domain Members zu
schützen, haben wir im Zuge der Vista-Betatests eine Konfiguration getestet,
bei der der Domain Controller hinter einem "bridging Firewall" (siehe Seite
32) betrieben wird.
Die folgenden Hinweise gelten sowohl für Windows 2000/2003 Domains als
auch für die Betaversion von Vista.
Zuerst müssen
folgende Ports des Domain Controllers erreichbar sein:
Port
|
Protokoll
|
Name
|
135
|
tcp
|
rpc-portmapper
|
389
|
tcp + udp
|
ldap
|
636
|
tcp
|
ldap ssl
|
3268
|
tcp
|
ldap gc
|
326
|
tcp
|
ldap gc ssl
|
53
|
tcp + udp
|
dns
|
88
|
tcp + udp
|
kerberos
|
445
|
tcp
|
smb
|
137-139
|
tcp + udp
|
(smb für Windows NT)
|
Für Remotemanagement u.a.m. (DCOM) müssten außerdem alle UDP-Ports geöffnet
werden (sie werden dynamisch vergeben). Das ist natürlich für eine Firewall-Konfiguration untragbar. Eine gewisse Abhilfe schafft ein Registry-Eintrag
am Server :
-
HKEY_LOCAL_MACHINE\Software\Microsoft\Rpc
-
Key "Internet" erstellen
-
Values:
Ports: REG_MULTI_SZ: 5000-5100
PortsInternetAvailable: REG_SZ: Y
UseInternetPorts:
REG_SZ: Y
Damit ist der Portrange auf 100 Ports beschränkt, bei kleineren Domänen
kann man auch weniger angeben.
Dann braucht man nur diesen UDP-Portrange am Firewall zulassen. Auch das
Protokoll icmp muss zugelassen sein.
Bei der Beta-Version von Vista war es damit allerdings nicht getan.
Das Domain-Logon von einem Vista Member zu einem Vista Domain Controller
funktionierte nicht, von Windows XP Members zu ebendiesem Domain Controller
allerdings schon.
Das lag daran, dass die beiden Vista-Maschinen den UDP-Transfer mit oben
genannten dynamisch vergebenen Ports via IPv6 bewerkstelligen, welcher
Transfer über das IPv4-Protokoll 41 getunnelt wird, also muss am Firewall
noch das IP-Protokoll 41 zugelassen werden.
Das ist zwar eine schönere Lösung als die Portranges, man sollte sich
aber dessen bewusst sein und weitere sicherheitsmäßige Implikationen berücksichtigen.
Tests mit Sniffern haben auch ergeben, dass Vista versucht, mit Routern
über IPv6 Kontakt aufzunehmen. Das sind alles keine Sicherheitslücken,
solange man es weiss und die Router das Protokoll nicht können. Zukünftige
Hacker und Virenprogrammierer könnten allerdings jenen, die das nicht wissen,
das Leben schwerer machen, vor allem was die Verteilung von Viren und Backdoors
zwischen Rechnern anbelangt, welche nicht durch Firewalls geschützt oder
durch nicht IPv6-fähige Router getrennt sind. Es ist zu hoffen, dass bei
der Produktionsversion von Vista die Paketfilter des systemeigenen Firewalls
auch IPv6 voll berücksichtigen werden.
Hier noch eine Beispielkonfiguration für den "bridging Firewall" mit iptables:
iptables-Beispiel für funktionierende win2003/vista-Domain:
(in diesem Beispiel ist 128.131.36.49 der Domaincontroller, Zugriffe sind nur vom Subnetz 128.131.36.0 erlaubt, dazwischen ist der Firewall )
Chain FORWARD (policy DROP)
target prot opt source destination
ACCEPT 41 -- 128.131.36.0/24 128.131.36.49
ACCEPT tcp -- 128.131.36.0/24 128.131.36.49 tcp dpts:137:139
ACCEPT udp -- 128.131.36.0/24 128.131.36.49 udp dpts:5000:5100
ACCEPT tcp -- 128.131.36.0/24 128.131.36.49 tcp dpt:3389
ACCEPT icmp -- 128.131.36.0/24 128.131.36.49
ACCEPT tcp -- 128.131.36.0/24 128.131.36.49 tcp dpt:445
ACCEPT tcp -- 128.131.36.0/24 128.131.36.49 tcp dpt:88
ACCEPT udp -- 128.131.36.0/24 128.131.36.49 udp dpt:88
ACCEPT udp -- 128.131.36.0/24 128.131.36.49 udp dpt:53
ACCEPT tcp -- 128.131.36.0/24 128.131.36.49 tcp dpt:53
ACCEPT tcp -- 128.131.36.0/24 128.131.36.49 tcp dpt:3269
ACCEPT tcp -- 128.131.36.0/24 128.131.36.49 tcp dpt:3268
ACCEPT tcp -- 128.131.36.0/24 128.131.36.49 tcp dpt:636
ACCEPT udp -- 128.131.36.0/24 128.131.36.49 udp dpt:389
ACCEPT tcp -- 128.131.36.0/24 128.131.36.49 tcp dpt:389
ACCEPT tcp -- 128.131.36.0/24 128.131.36.49 tcp dpt:135
ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 PHYSDEV match -physdev-is-bridged state RELATED,ESTABLISHED
ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 PHYSDEV match --physdev-in eth1 --physdev-out eth0 state NEW
ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 PHYSDEV match --physdev-in eth2 --physdev-out eth0 state NEW
REJECT tcp -- 0.0.0.0/0 0.0.0.0/0 PHYSDEV match -physdev-in eth0 tcp dpt:113 reject-with icmp-port-unreachable
REJECT udp -- 0.0.0.0/0 0.0.0.0/0 PHYSDEV match --physdev-in eth0 udp dpt:113 reject-with icmp-port-unreachable