Freigeben über


Manuelle SA

Das IPsec-Richtlinienszenario manual Security Association (SA) ermöglicht Es Anrufern, die integrierten IPsec-Schlüsselmodule (IKE und AuthIP) zu umgehen, indem sie direkt IPsec-SAs angeben, um den Netzwerkdatenverkehr zu schützen.

Ein Beispiel für ein mögliches manuelles SA-Szenario ist "Hinzufügen eines IPsec SA-Paares zum Sichern des gesamten Unicastdatenverkehrs zwischen IP-Adressen 1.1.1.1 & 2.2.2, außer ICMP, im IPsec-Transportmodus."

Hinweis

Die folgenden Schritte müssen auf beiden Computern mit entsprechend festgelegten IP-Adressen ausgeführt werden.

Verwenden Sie die folgende WFP-Konfiguration, um dieses Beispiel programmgesteuert zu implementieren.

Richten Sie bei FWPM_LAYER_INBOUND_TRANSPORT_V{4|6} Eingehende Filterregeln pro Paket ein.

  1. Fügen Sie einen Filter mit den folgenden Eigenschaften hinzu.

    Filter-Eigenschaft Wert
    FWPM_CONDITION_IP_LOCAL_ADDRESS_TYPE Filterbedingung NlatUnicast
    FWPM_CONDITION_IP_LOCAL_ADDRESS Die entsprechende lokale Adresse (1.1.1.1 oder 2.2.2.2.2).
    FWPM_CONDITION_IP_REMOTE_ADDRESS Die entsprechende Remoteadresse (1.1.1.1 oder 2.2.2.2.2).
    action.type FWP_ACTION_CALLOUT_TERMINATING
    action.calloutKey FWPM_CALLOUT_IPSEC_INBOUND_TRANSPORT_V{4|6}
  2. Befreien Sie DEN ICMP-Datenverkehr von IPsec, indem Sie einen Filter mit den folgenden Eigenschaften hinzufügen.

    Filter-Eigenschaft Wert
    FWPM_CONDITION_IP_LOCAL_ADDRESS_TYPE Filterbedingung NlatUnicast
    FWPM_CONDITION_IP_PROTOCOL Filterbedingung **IPPROTO_ICMP{V6}**Diese Konstanten werden in winsock2.h definiert.
    action.type FWP_ACTION_PERMIT
    weight FWPM_WEIGHT_RANGE_IKE_EXEMPTIONS

Richten Sie FWPM_LAYER_OUTBOUND_TRANSPORT_V{4|6}-Filterregeln für ausgehenden Datenverkehr ein.

  1. Fügen Sie einen Filter mit den folgenden Eigenschaften hinzu.

    Filter-Eigenschaft Wert
    FWPM_CONDITION_IP_LOCAL_ADDRESS_TYPE Filterbedingung NlatUnicast
    FWPM_CONDITION_IP_LOCAL_ADDRESS Filterbedingung Die entsprechende lokale Adresse (1.1.1.1 oder 2.2.2.2.2).
    FWPM_CONDITION_IP_REMOTE_ADDRESS Filterbedingung Die entsprechende Remoteadresse (1.1.1.1 oder 2.2.2.2.2).
    action.type FWP_ACTION_CALLOUT_TERMINATING
    action.calloutKey FWPM_CALLOUT_IPSEC_OUTBOUND_TRANSPORT_V{4|6}
  2. Befreien Sie DEN ICMP-Datenverkehr von IPsec, indem Sie einen Filter mit den folgenden Eigenschaften hinzufügen.

    Filter-Eigenschaft Wert
    FWPM_CONDITION_IP_LOCAL_ADDRESS_TYPE Filterbedingung NlatUnicast
    FWPM_CONDITION_IP_PROTOCOL Filterbedingung **IPPROTO_ICMP{V6}**Diese Konstanten werden in winsock2.h definiert.
    action.type FWP_ACTION_PERMIT
    weight FWPM_WEIGHT_RANGE_IKE_EXEMPTIONS

Einrichten eingehender und ausgehender Sicherheitszuordnungen

  1. Rufen Sie IPsecSaContextCreate0 auf, wobei der outboundTraffic-Parameter die IP-Adressen 1.1.1.1 & 2.2.2.2 und ipsecFilterId als LUID des oben hinzugefügten IPsec-Legendenfilters für ausgehende Transportebene enthält.
  2. Rufen Sie IPsecSaContextGetSpi0 auf, wobei der ID-Parameter die von IPsecSaContextCreate0 zurückgegebene Kontext-ID und den getSpi-Parameter mit den IP-Adressen 1.1.1.1 & 2.2.2.2 und ipsecFilterId als LUID des oben hinzugefügten IPsec-Legendenfilters für eingehende Transportebene enthält. Der zurückgegebene SPI-Wert soll vom lokalen Computer als eingehender SA-SPI und vom entsprechenden Remotecomputer als ausgehender SA-SPI verwendet werden. Beide Computer müssen einige Out-of-Band-Mittel verwenden, um die SPI-Werte auszutauschen.
  3. Rufen Sie IPsecSaContextAddInbound0 auf, wobei der Id-Parameter die von IPsecSaContextCreate0 zurückgegebene Kontext-ID enthält, und den parameter inboundBundle , der die Eigenschaften des eingehenden SA-Pakets beschreibt (z. B. der eingehende SA-SPI, transformationstyp, Algorithmustypen, Schlüssel usw.).
  4. Rufen Sie IPsecSaContextAddOutbound0 auf, wobei der Id-Parameter die von IPsecSaContextCreate0 zurückgegebene Kontext-ID enthält, und dem outboundBundle-Parameter , der die Eigenschaften des ausgehenden SA-Pakets beschreibt (z. B. die ausgehende SA-SPI, transformationstyp, Algorithmustypen, Schlüssel usw.).

Beispielcode: Manuelle SA-Keying

Integrierte Legendenbezeichner

Filtern von Ebenenbezeichnern

FWPM_ACTION0