|
|
|
Microsoft IPSec als Paketfilter einsetzen
Hinweis bzgl. Windows Server 2003
Um die Übersicht einigermaßen zu wahren wurden Informationen zur Filterung mittels IPSec auf Windows Server 2003 Plattformen auf eine separate Seite verlagert:
Dies war insbesondere dadurch notwendig, da die Syntax zur kommandozeilenbasierten IPSec-Filter-Generierung gegenüber Windows 2000/XP komplett geändert wurde.
Allgemeines
Die IP Security Protocol (IPsec) Implementierung von
Microsoft kann neben der verschlüsselten Netzwerkkommunikation als
Paketfilter eingesetzt werden -- was insbesondere für Windows 2000 von
Interesse sein kann, da dort im Gegensatz zu Windows XP standardmäßig
kein weiterer Paketfilter zur Verfügung steht (sieht man von der nur
bedingt konfigurierbaren Filterung in den Eigenschaften der
TCP/IP-Konfiguration ab). Eine Filterung auf IPSec-Basis kann auch
ohne Zertifikat und PKI erfolgen (auch auf alleinstehenden
Systemen, die sich in keiner Domäne befinden).
Schwachstellen des IPSec-Paketfilters
Bestimmter IP-Netzverkehr kann nicht mittels des IPSec-Filters unter
Windows 2000 gesichert werden:
- Broadcast-Verkehr
Netzverkehr von und zu Broadcast-Adressen
(z.B. 192.168.1.255 für das Subnetz 192.168.1.0/24) kann
nicht gefiltert werden und passiert den Filter stets. (Abhilfe ist
lediglich bei Windows (.NET) Server 2003 möglich, siehe unten).
- Multicast
Netzverkehr von und zu den Multicast-Adressen
(224.0.0.0-239.255.255.255) kann nicht gefiltert werden kann. (Abhilfe ist
lediglich bei Windows Server 2003 möglich, siehe unten).
- Resource Reservation Protocol (RSVP)
RSVP-Netzverkehr verwendet IP-Protokoll 46 und wird bei Windows 2000
zur Bereitstellung von Quality of Service (QoS)
eingesetzt. Standardmäßig kann dieser Netzverkehr nicht mittels IPSec
gesichert werden (siehe unten für Abhilfe).
- Internet Security Association and Key Management Protocol (ISAKMP)
Das für Internet Key Exchange (IKE) verwendete Protokoll
ISAKMP (UDP-Ziel- und Quellport 500) kann nicht über IPsec-Policies
gefiltert werden.
- Kerberos
Das Authentifizierungsprotokoll Kerberos wird standardmäßig von
Windows 2000 nicht gefiltert, wodurch Anfragen mit UDP/TCP
Ziel-/Quellport 88 standardmäßig ungefiltert bleiben (Abhilfe ist
möglich, siehe unten).
Diese Einschränkungen haben zur Folge, dass Schwachstellen, die über
Broadcast bzw. Multicast ausgenutzt werden können (z.B. in der
SNMP-Implementierung) mit IPSec-Policies als Paketfilter nicht
ausreichend geschützt werden. Der IPSec-Paketfilter bietet alleine
keinen ausreichenden Schutz, kann aber eine weitere Hürde darstellen.
Zusätzlicher Schutz vor Multicast- bzw. Broadcast-Verkehr kann
durch entsprechende Konfiguration der vorgelagerten Router erfolgen.
Für Broadcast- und Multicast-Verkehr können die entsprechenden
Adressen gefiltert werden, und auf Cisco IOS kann zusätzlich mittels
"no ip directed-broadcast" (siehe Secure
IOS Template von Rob Thomas) die Umsetzung von IP-Broadcasts in
Ethernet-Broadcasts unterbunden werden. Diese Maßnahmen schränken
zumindest Angriffe über Broadcast/Multicast auf das Subnetz ein.
Kerberos und RSVP mit IPSec-Filtern
Seit dem Service Pack 1 für Windows 2000 besteht durch Änderung eines Registry-Wertes die Möglichkeit, Kerberos und RSVP mittels IPSec-Regeln zu filtern.
Registry-Key: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\IPSEC
Value Name: NoDefaultExempt (Der Name ist case sensitive)
Data Type: REG_DWORD
Data Value: 0 exempt Kerberos, RSVP, and multicast/broadcast
Data Value: 1 exempt multicast/broadcast only
Data Value: 2 exempt Kerberos and RSVP only (nur (.NET) Server 2003)
Data Value: 3 no exemptions (nur Server 2003)
Wobei der Wert "0" den Standardeinstellungen (bei Windows 2000 incl. SP3 sowie Windows XP incl. SP1) entspricht.
Durch den Wert "1" wird RSVP und Kerberos nicht länger
ausgenommen (d.h. RSVP und Kerberos können mittels eines
IPSec-Paketfilters gefiltert werden). Nach Angaben von Microsoft ist geplant, für Windows 2000 SP4 und Windows XP SP2, die Standardeinstellung auf Wert "1" zu ändern. Microsoft Windows Server 2003 unterstützen fernen die Werte "2" und "3", wodurch eine Filterung von Multicast/Broadcast durch IPSec erfolgen kann.
Kommandozeilenwerkzeug IPSecPol (Windows 2000) bzw. IPSecCMD (Windows XP)
Neben dem grafischen "IP Security Policies"-Frontend stellt Microsoft
ein Kommandozeilenwerkzeug namens "IPSecPol" für Windows 2000 zur
Verfügung. Das Werkzeug kann über folgende Webseite kostenlos bezogen
werden:
Für Windows XP Prof. befindet sich ein Kommandozeilenwerkzeug namens "IPSecCMD" in den Support-Tools auf der Windows-XP-CD (Support/Tools).
Verschiedenes
- Mittels des Kommandozeilenwerkzeugs
netdiag (Bestandteil der Windows 2000 Support-Tools, die sich auf der Windows-CD unter Support\Tools befinden) lassen sich die aktiven IPSec-Regeln ausgeben (z.B. netdiag /test:ipsec /v /debug)
Kurzübersicht zu IPSecPol/IPSecCMD
Nachfolgend eine Kurzübersicht der wichtigsten Parameter des Kommandozeilenwerkzeugs IPSecPol an einem Beispiel:
IPSecPol -x -w REG -p "Name" -r "Regelname" -n BLOCK -f 129.69.50.0/255.255.255.0+0:80:TCP
-w REG speichert die Regel in der Registry
-p "NAME" spezifiziert den Policy-Namen
-r "Regelname" spezifiziert den Namen der Regel
-n BLOCK|PASS|INPASS spezifiziert Aktion (in diesem Beispiel Block)
-f SourceIP/SourceNetmask:Port=DestinationIP/DestinationNetmask:Port:Protocol spezifiziert die Filterliste (wobei "*" für beliebige IPs und "0" für die eigene IP verwendet werden kann. Wird Anstelle von "=" ein "+" verwendet, so wird die Regel gespiegelt (d.h. Filterung in beide Richtungen). Werden Bereiche nicht spezifiziert, (z.B. keine Port oder Protokollangabe, so gilt die Regel für alle Möglichkeiten (also z.B. alle Ports/Protokolle). Für das obige Beispiel wird der Netzverkehr des Class-C-Netzes 129.69.50.0/24 (von beliebigem Port) auf die eigene IP-Adresse (TCP-Port 80) blockiert.
-x aktiviert die Regel, mittels -y würde die Regel deaktiviert und mittels -o gelöscht
Auf Windows XP muss anstelle des IPSecPol-Werkzeugs IPSecCMD verwendet werden. Dieses weist weitgehend dieselben Parameterübergaben auf (zumindest für die hier vorgestellten Befehle kann IPSecPol durch IPSecCMD ersetzt werden). Bei (.NET) Servern 2003 erfolgt die Filterung mittels IPSec über "netsh", welche jedoch eine zu IPSecPol verschiedene Syntax aufweist und deshalb in einem getrennten Dokument behandelt wird.
Beispiele
Nachfolgend einige Beispiele für IPSec-Paketfilterregeln, die mittels
des ipsecpol/ipseccmd-Kommandozeilenwerkzeugs
gesetzt werden können. Alternativ können auch die Templates
(.ipsec-Dateien) dem IPSec-GUI hinzugefügt werden. Die
Templates finden Sie auf dem RUS-CERT-Webserver hier. Importieren können Sie diese
Vorlagen über das MMC-Snap-In "IP Security Policies" und Auswahl von
"All Tasks|Import Policies".
Hinweis: Die nachfolgenden Regeln sind nicht dazu geeignet per Cut&Paste übernommen zu werden (insbesondere durch die Problematik der Zeilenumbrüche).
- HTTP/HTTPS-Webserver
Durch folgenden IPSec-Paketfilter sind nur noch Anfragen an TCP-Port
80 und 443 (HTTP/HTTPS) erlaubt, alle weiteren Verbindungen (auch
ausgehend) werden geblockt. Bedenken Sie, dass auch Terminal-Server-Verbindungen bzw. Domänenauthentifizierung durch diesen Filter geblockt werden. Die letzte Zeile mit "-x" aktiviert den Regelsatz.
(Die IPSecPol-Aufrufe
müssen jeweils in einer Zeile eingegeben werden.)
IPSecPol -w REG -p "Secure Web Server Policy"
IPSecPol -w REG -p "Secure Web Server Policy"
-r "Block All Ports" -n BLOCK -f *+0
IPSecPol -w REG -p "Secure Web Server Policy"
-r "Allow Http (80) Inbound" -n PASS -f *:*+0:80:TCP
IPSecPol -w REG -p "Secure Web Server Policy"
-r "Allow Https (443) Inbound" -n PASS -f *:*+0:443:TCP
IPSecPol -x -w REG -p "Secure Web Server Policy"
- SMB-Sperre
Nachfolgende IPSec-Regeln sperren den Zugriff auf die typischen
NetBIOS-Ports (445/TCP (NetBIOS over TCP/IP) seit Windows 2000,
TCP-Port 139 (NetBIOS Session Service), UDP-Port 137 (NetBIOS Name
Service), TCP/UDP-Port 135 (RPC DCOM)). Die IPSecPol-Aufrufe
müssen jeweils in einer Zeile eingegeben werden.
IPSecPol -w REG -p "SMB Block Policy"
IPSecPol -x -w REG -p "SMB Block Policy"
-r "Block 593/TCP" -n BLOCK -f *:*+0:593:TCP
IPSecPol -x -w REG -p "SMB Block Policy"
-r "Block 445/TCP" -n BLOCK -f *:*+0:445:TCP
IPSecPol -x -w REG -p "SMB Block Policy"
-r "Block 445/UDP" -n BLOCK -f *:*+0:445:UDP
IPSecPol -x -w REG -p "SMB Block Policy"
-r "Block 139/TCP" -n BLOCK -f *:*+0:139:TCP
IPSecPol -x -w REG -p "SMB Block Policy"
-r "Block 137/UDP" -n BLOCK -f *:*+0:137:UDP
IPSecPol -x -w REG -p "SMB Block Policy"
-r "Block 135/TCP" -n BLOCK -f *:*+0:135:TCP
IPSecPol -x -w REG -p "SMB Block Policy"
-r "Block 135/UDP" -n BLOCK -f *:*+0:135:UDP
- Terminal Server auf IP-Range einschränken
Nachfolgende IPSec-Regeln schränken die Zugriffe auf den Terminal
Server ein (nur noch von dem Class-B-Netzsegment 129.69.0.0/16
erreichbar) und schalten den Terminal Server für DNS- und
HTTP-Anfragen frei. Alle weiteren ein- und ausgehenden Verbindungen
werden geblockt. (Die IPSecPol-Aufrufe müssen jeweils in
einer Zeile eingegeben werden.)
IPSecPol -w REG -p "Terminal Server"
IPSecPol -w REG -p "Terminal Server" -r "Block All Ports"
-n BLOCK -f *+0
IPSecPol -w REG -p "Terminal Server"
-r "Allow Incoming Terminal Server Connects from 129.69.0.0/16"
-n PASS -f 129.69.0.0/255.255.0.0:*+0:3389:TCP
IPSecPol -w REG -p "Terminal Server" -r "Allow Outgoing DNS over UDP"
-n PASS -f 0+*:53:UDP
IPSecPol -w REG -p "Terminal Server" -r "Allow Outgoing DNS over TCP"
-n PASS -f 0+*:53:TCP
IPSecPol -w REG -p "Terminal Server"
-r "Allow Outgoing HTTP (TCP-Port 80)"
-n PASS -f 0+*:80:TCP
IPSecPol -x -w REG -p "Terminal Server"
- Beispiel Server-Blacklist
Nachfolgend einige Beispiele zur Realisierung eines
Blacklist-IPSec-Paketfilters zum Schutz kritischer Dienste. Zugriff wird
bei diesen Beispielen dem Class-C-Netzsegment 129.69.16.0/24 gewährt. Beachten Sie, dass in dem nachfolgenden Beispiel die Regelsätze durch die Option "-x" sofort aktiviert werden, wodurch ggf. Netzwerkverbindungen (z.B. Terminal-Server-Verbindung) nicht mehr möglich sind.
(Die IPSecPol-Aufrufe müssen jeweils in einer Zeile eingegeben
werden.)
IPSecPol -w REG -p "Blacklist"
IPSecPol -x -w REG -p "Blacklist" -r "BLOCK SQL-Server TCP-Port 1433"
-n BLOCK -f *:*+0:1433:TCP
IPSecPol -x -w REG -p "Blacklist" -r "Allow SQL-Server TCP-Port 1433 for
129.69.16.0/24" -n PASS -f 129.69.16.0/255.255.255.0:*+0:1433:TCP
IPSecPol -x -w REG -p "Blacklist" -r "BLOCK SQL-Server TCP-Port 1434"
-n BLOCK -f *:*+0:1434:TCP
IPSecPol -x -w REG -p "Blacklist" -r "Allow SQL-Server TCP-Port 1434 for
129.69.16.0/24" -n PASS -f 129.69.16.0/255.255.255.0:*+0:1434:TCP
IPSecPol -x -w REG -p "Blacklist" -r "BLOCK SQL-Server UDP-Port 1434"
-n BLOCK -f *:*+0:1434:UDP
IPSecPol -x -w REG -p "Blacklist" -r "Allow SQL-Server UDP-Port 1434 for
129.69.16.0/24" -n PASS -f 129.69.16.0/255.255.255.0:*+0:1434:UDP
IPSecPol -x -w REG -p "Blacklist" -r "BLOCK Terminal-Server TCP-Port 3389"
-n BLOCK -f *:*+0:3389:TCP
IPSecPol -x -w REG -p "Blacklist" -r "Allow Terminal-Server for
129.69.16.0/24" -n PASS -f 129.69.16.0/255.255.255.0:*+0:3389:TCP
IPSecPol -x -w REG -p "Blacklist" -r "BLOCK LDAP TCP-Port 389"
-n BLOCK -f *:*+0:389:TCP
IPSecPol -x -w REG -p "Blacklist" -r "Allow LDAP TCP-Port 389 for
129.69.16.0/24" -n PASS -f 129.69.16.0/255.255.255.0:*+0:389:TCP
IPSecPol -x -w REG -p "Blacklist" -r "BLOCK LDAP UDP-Port 389"
-n BLOCK -f *:*+0:389:UDP
IPSecPol -x -w REG -p "Blacklist" -r "Allow LDAP UDP-Port 389 for
129.69.16.0/24" -n PASS -f 129.69.16.0/255.255.255.0:*+0:389:UDP
IPSecPol -x -w REG -p "Blacklist" -r "BLOCK LDAP-SSL TCP-Port 636"
-n BLOCK -f *:*+0:636:TCP
IPSecPol -x -w REG -p "Blacklist" -r "Allow LDAP-SSL TCP-Port 636 for
129.69.16.0/24" -n PASS -f 129.69.16.0/255.255.255.0:*+0:636:TCP
IPSecPol -x -w REG -p "Blacklist" -r "BLOCK LDAP GC TCP-Port 3268"
-n BLOCK -f *:*+0:3268:TCP
IPSecPol -x -w REG -p "Blacklist"
-r "Allow LDAP GC TCP-Port 3268 for 129.69.16.0/24"
-n PASS -f 129.69.16.0/255.255.255.0:*+0:3268:TCP
PSecPol -x -w REG -p "Blacklist" -r "BLOCK LDAP GC SSL TCP-Port 3269"
-n BLOCK -f *:*+0:3269:TCP
IPSecPol -x -w REG -p "Blacklist"
-r "Allow LDAP GC SSL TCP-Port 3269 for 129.69.16.0/24"
-n PASS -f 129.69.16.0/255.255.255.0:*+0:3269:TCP
IPSecPol -x -w REG -p "Blacklist" -r "BLOCK SMB TCP-Port 445"
-n BLOCK -f *:*+0:445:TCP
IPSecPol -x -w REG -p "Blacklist" -r "Allow SMB TCP-Port 445 for
129.69.16.0/24" -n PASS -f 129.69.16.0/255.255.255.0:*+0:445:TCP
IPSecPol -x -w REG -p "Blacklist" -r "BLOCK SMB Port 139"
-n BLOCK -f *:*+0:139
IPSecPol -x -w REG -p "Blacklist" -r "Allow SMB Port 139 for
129.69.16.0/24" -n PASS -f 129.69.16.0/255.255.255.0:*+0:139
IPSecPol -x -w REG -p "Blacklist" -r "BLOCK SMB Port 138"
-n BLOCK -f *:*+0:138
IPSecPol -x -w REG -p "Blacklist" -r "Allow SMB Port 138 for
129.69.16.0/24" -n PASS -f 129.69.16.0/255.255.255.0:*+0:138
IPSecPol -x -w REG -p "Blacklist" -r "BLOCK SMB Port 137"
-n BLOCK -f *:*+0:137
IPSecPol -x -w REG -p "Blacklist" -r "Allow SMB Port 137 for
129.69.16.0/24" -n PASS -f 129.69.16.0/255.255.255.0:*+0:137
IPSecPol -x -w REG -p "Blacklist" -r "BLOCK SMB Port 136"
-n BLOCK -f *:*+0:136
IPSecPol -x -w REG -p "Blacklist" -r "Allow SMB Port 136 for
129.69.16.0/24" -n PASS -f 129.69.16.0/255.255.255.0:*+0:136
IPSecPol -x -w REG -p "Blacklist" -r "BLOCK SMB Port 135"
-n BLOCK -f *:*+0:135
IPSecPol -x -w REG -p "Blacklist" -r "Allow SMB Port 135 for
129.69.16.0/24" -n PASS -f 129.69.16.0/255.255.255.0:*+0:135
Eine derartige Blacklist ist inbesondere dann sinnvoll, wenn
ein FTP-Server betrieben werden muß und das System auch noch
übers Netz gewartet werden soll
(für die passiven FTP-Daten-Verbindungen müssen die
TCP-Ports ab 1024 freigeschaltet werden).
Weitere Information
|
|