Manual SA

O cenário de política IPsec de SA (Associação de Segurança Manual) permite que os chamadores ignorem os módulos de chave IPsec internos (IKE e AuthIP) especificando diretamente os SAs IPsec para proteger qualquer tráfego de rede.

Um exemplo de um possível cenário de SA Manual é "Adicionar um par de SA IPsec para proteger todo o tráfego de dados unicast entre endereços IP 1.1.1.1 & 2.2.2.2, exceto ICMP, usando o modo de transporte IPsec".

Observação

As etapas a seguir devem ser executadas em ambos os computadores com endereços IP definidos adequadamente.

Para implementar este exemplo programaticamente, use a configuração do WFP a seguir.

Às FWPM_LAYER_INBOUND_TRANSPORT_V{4|6} configurar regras de filtragem por pacote de entrada

  1. Adicione um filtro com as propriedades a seguir.

    Propriedade Filter Valor
    FWPM_CONDITION_IP_LOCAL_ADDRESS_TYPE condição de filtragem NlatUnicast
    FWPM_CONDITION_IP_LOCAL_ADDRESS O endereço local apropriado (1.1.1.1 ou 2.2.2.2).
    FWPM_CONDITION_IP_REMOTE_ADDRESS O endereço remoto apropriado (1.1.1.1 ou 2.2.2.2).
    action.type FWP_ACTION_CALLOUT_TERMINATING
    action.calloutKey FWPM_CALLOUT_IPSEC_INBOUND_TRANSPORT_V{4|6}
  2. Isente o tráfego ICMP do IPsec adicionando um filtro com as propriedades a seguir.

    Propriedade Filter Valor
    FWPM_CONDITION_IP_LOCAL_ADDRESS_TYPE condição de filtragem NlatUnicast
    FWPM_CONDITION_IP_PROTOCOL condição de filtragem **IPPROTO_ICMP{V6}**Essas constantes são definidas em winsock2.h.
    action.type FWP_ACTION_PERMIT
    weight FWPM_WEIGHT_RANGE_IKE_EXEMPTIONS

Às FWPM_LAYER_OUTBOUND_TRANSPORT_V{4|6} regras de filtragem de saída por pacote

  1. Adicione um filtro com as propriedades a seguir.

    Propriedade Filter Valor
    FWPM_CONDITION_IP_LOCAL_ADDRESS_TYPE condição de filtragem NlatUnicast
    FWPM_CONDITION_IP_LOCAL_ADDRESS condição de filtragem O endereço local apropriado (1.1.1.1 ou 2.2.2.2).
    FWPM_CONDITION_IP_REMOTE_ADDRESS condição de filtragem O endereço remoto apropriado (1.1.1.1 ou 2.2.2.2).
    action.type FWP_ACTION_CALLOUT_TERMINATING
    action.calloutKey FWPM_CALLOUT_IPSEC_OUTBOUND_TRANSPORT_V{4|6}
  2. Isente o tráfego ICMP do IPsec adicionando um filtro com as propriedades a seguir.

    Propriedade Filter Valor
    FWPM_CONDITION_IP_LOCAL_ADDRESS_TYPE condição de filtragem NlatUnicast
    FWPM_CONDITION_IP_PROTOCOL condição de filtragem **IPPROTO_ICMP{V6}**Essas constantes são definidas em winsock2.h.
    action.type FWP_ACTION_PERMIT
    weight FWPM_WEIGHT_RANGE_IKE_EXEMPTIONS

Configurar associações de segurança de entrada e saída

  1. Chame IPsecSaContextCreate0, com o parâmetro outboundTraffic contendo os endereços IP como 1.1.1.1 & 2.2.2.2 e ipsecFilterId como o LUID do filtro de texto explicativo IPsec da camada de transporte de saída adicionado acima.
  2. Chame IPsecSaContextGetSpi0, com o parâmetro id que contém a ID de contexto retornada de IPsecSaContextCreate0 e o parâmetro getSpi que contém os endereços IP como 1.1.1.1 & 2.2.2.2 e ipsecFilterId como o LUID do filtro de texto explicativo IPsec da camada de transporte de entrada adicionado acima. O valor de SPI retornado deve ser usado como o SA SPI de entrada pelo computador local e como a SPI SA de saída pelo computador remoto correspondente. Ambos os computadores devem usar alguns meios fora de banda para trocar os valores de SPI.
  3. Chame IPsecSaContextAddInbound0, com o parâmetro id que contém a ID de contexto retornada de IPsecSaContextCreate0 e o parâmetro inboundBundle que descreve as propriedades do pacote SA de entrada (como o SA SPI de entrada, tipo de transformação, tipos de algoritmo, chaves etc).
  4. Chame IPsecSaContextAddOutbound0, com o parâmetro id que contém a ID de contexto retornada de IPsecSaContextCreate0 e o parâmetro outboundBundle que descreve as propriedades do pacote SA de saída (como o SA SPI de saída, tipo de transformação, tipos de algoritmo, chaves etc. ).

Código de exemplo: Chave sa manual

Identificadores de texto explicativo internos

Filtrando identificadores de camada

FWPM_ACTION0