Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Lagen die compatibel zijn met IPsec
Om volledig compatibel te zijn met de Windows-implementatie van IPsec die begint met Windows Vista en Windows Server 2008, moet een bijschriftstuurprogramma worden geregistreerd bij een van de volgende runtimefilterlagen:
TCP-pakketfiltering
Streamlagen:
FWPS_LAYER_STREAM_V4
FWPS_LAYER_STREAM_V6
filtering van niet-TCP- en niet-fout-ICMP-pakketten
Datagram-Datalagen:
FWPS_LAYER_DATAGRAM_DATA_V4
FWPS_LAYER_DATAGRAM_DATA_V6
FWPS_LAAG_DATAGRAM_GEGEVENS_V4_VERWERP
FWPS_LAYER_DATAGRAM_DATA_V6_DISCARD
Behalve in het geval dat binnenkomende pakketten opnieuw moeten worden opgebouwd voordat ze ontvangen-geïnjecteerd worden vanuit een datagram-gegevenslaag, zijn callout-stuurprogramma's die bij deze gegevenslagen zijn geregistreerd compatibel met IPsec.
Lagen die niet compatibel zijn met IPsec
Netwerk- en doorstuurlagen zijn niet compatibel met IPsec omdat op deze lagen IPsec-verkeer nog niet is ontsleuteld of geverifieerd. IPsec-beleid wordt afgedwongen op de transportlaag, die plaatsvindt na een netwerklaag-classificatiebewerking.
De volgende runtimefilterlagen zijn niet compatibel met IPsec, omdat IPsec-verwerking in Windows plaatsvindt onder de volgende lagen:
FWPS_LAYER_INBOUND_IPPACKET_V4
FWPS_LAYER_INBOUND_IPPACKET_V6
FWPS_LAYER_INBOUND_IPPACKET_V4_DISCARD
FWPS_LAYER_INBOUND_IPPACKET_V6_DISCARD (Binnenkomend IP-pakket V6 Verwerpen)
FWPS_LAYER_OUTBOUND_IPPACKET_V4
FWPS_LAYER_OUTBOUND_IPPACKET_V6
FWPS_LAYER_OUTBOUND_IPPACKET_V4_DISCARD
FWPS_LAYER_OUTBOUND_IPPACKET_V6_DISCARD (Uitgaande IP-pakket V6 Verworpen)
Speciale overwegingen voor transportlagen
Om een stuurprogramma te maken dat is geregistreerd bij een transportlaag (FWPS_LAYER_XXX_TRANSPORT_V4 of _V6) en compatibel is met IPsec, volgt u deze richtlijnen:
Registreer de callout bij ALE-autorisatie ontvangen/accepteren lagen (FWPS_LAYER_ALE_AUTH_RECV_ACCEPT_V4 of FWPS_LAYER_ALE_AUTH_RECV_ACCEPT_V6) naast de transportlagen (FWPS_LAYER_XXX_TRANSPORT_V4 of _V6).
Om interferentie met interne Windows IPsec-verwerking te voorkomen, registreert u de callout bij een sublaag met een lager gewicht dan FWPM_SUBLAYER_UNIVERSAL. Gebruik de functie FwpmSubLayerEnum0 om het gewicht van de sublaag te bepalen. Zie de documentatie Windows Filtering Platform in de Microsoft Windows SDK voor meer informatie over deze functie.
Een binnenkomend transportpakket waarvoor ALE-classificatie is vereist, moet worden geïnspecteerd bij de ALE-autorisatielagen voor ontvangst/accepteren (FWPS_LAYER_ALE_AUTH_RECV_ACCEPT_V4 of FWPS_LAYER_ALE_AUTH_RECV_ACCEPT_V6). Een dergelijk pakket moet worden toegestaan vanuit binnenkomende transportlagen. Gebruik vanaf Windows Vista met Service Pack 1 (SP1) en Windows Server 2008 de FWPS_METADATA_FIELD_ALE_CLASSIFY_REQUIRED metadata-vlag om te bepalen of het binnenkomende pakket aangegeven zal worden aan de FWPM_LAYER_ALE_AUTH_RECV_ACCEPT_V4 en FWPM_LAYER_ALE_AUTH_RECV_ACCEPT_V6 filterlagen. Deze metagegevensvlag vervangt de FWP_CONDITION_FLAG_REQUIRES_ALE_CLASSIFY voorwaardevlag die is gebruikt in Windows Vista.
Om interferentie met interne Windows IPsec-verwerking te voorkomen, onderschept u IPsec-tunnelmodusverkeer niet op transportlagen als het IPsec-verkeer nog niet is gedetunneld. In het volgende codevoorbeeld ziet u hoe u dergelijke pakketten kunt omzeilen.
FWPS_PACKET_LIST_INFORMATION0 packetInfo = {0}; FwpsGetPacketListSecurityInformation0( layerData, FWPS_PACKET_LIST_INFORMATION_QUERY_IPSEC | FWPS_PACKET_LIST_INFORMATION_QUERY_INBOUND, &packetInfo ); if (packetInfo.ipsecInformation.inbound.isTunnelMode && !packetInfo.ipsecInformation.inbound.isDeTunneled) { classifyOut->actionType = FWP_ACTION_PERMIT; goto Exit; }Nadat een met IPsec beveiligd pakket is ontsleuteld en geverifieerd op de transportlaag, blijft de AH/ESP-header in de IP-header. Als een dergelijk pakket opnieuw moet worden geïnjecteerd in de TCP/IP-stack, moet de IP-header opnieuw worden opgebouwd om de AH/ESP-header te verwijderen. Vanaf Windows Vista met SP1 en Windows Server 2008 kunt u dit doen door het pakket te klonen en de FwpsConstructIpHeaderForTransportPacket0-functie aan te roepen met de headerIncludeHeaderSize parameter ingesteld op de IP-headergrootte van het gekloonde pakket.
Bij de ALE-ontvang-/acceptlaag kan een callout IPsec-beveiligd verkeer detecteren door te controleren of de vlag FWP_CONDITION_FLAG_IS_IPSEC_SECURED is ingesteld. Bij transportlagen kan een call-out IPsec-beveiligd verkeer detecteren door de functie FwpsGetPacketListSecurityInformation0 aan te roepen en te controleren of de vlag FWPS_PACKET_LIST_INFORMATION0 is ingesteld in de parameter queryFlags.
Werken met IPsec ESP-pakketten
Wanneer de engine aangeeft dat ESP-pakketten (Encapsulating Security Payload) zijn ontsleuteld, worden ze ingekort om overtollige ESP-gegevens uit te sluiten. Vanwege de manier waarop de engine dergelijke pakketten verwerkt, weerspiegelen de MDL-gegevens in de NET_BUFFER-structuur niet de juiste pakketlengte. De juiste lengte kan worden verkregen met behulp van de NET_BUFFER_DATA_LENGTH macro om de gegevenslengte van de NET_BUFFER structuur op te halen.