RUS  - CERT Computer Emergency Response Team - Zuständig für die Rechner- und Netzwerksicherheit an der Universität Stuttgart
kontakt sitemap impressum e-mail-abo
home
aktuelle_meldungen
betriebssysteme
 microsoft
 linux
 solaris
 mac_os_x
 cisco_ios
themen
dienste
projekte
archive
jobs
Universität Stuttgart
Rechenzentrum
 
Druckversion
 
 
   

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

   
2007-05-29
Copyright © 2010 RUS-CERT, Universität Stuttgart
Die Universität Stuttgart übernimmt keinerlei Haftung für den Inhalt dieser Seite.