Поделиться через


Ручное sa

Сценарий политики IPsec для ассоциации безопасности вручную позволяет вызывающим пользователям обойти встроенные модули ключей IPsec (IKE и AuthIP), напрямую указав SPsec для защиты любого сетевого трафика.

Пример сценария СА вручную— "Добавление пары SA IPsec для защиты всего трафика данных одноадресной рассылки между IP-адресами 1.1.1.1.1 и 2.2.2, кроме ICMP, с помощью режима транспорта IPsec".

Примечание.

Следующие шаги должны выполняться на обоих компьютерах с СООТВЕТСТВУЮЩИМи IP-адресами.

Чтобы реализовать этот пример программным способом, используйте следующую конфигурацию МПП.

При настройке правил фильтрации входящих пакетов FWPM_LAYER_INBOUND_TRANSPORT_V{4|6}

  1. Добавьте фильтр со следующими свойствами.

    Свойство filter Значение
    условие фильтрации FWPM_CONDITION_IP_LOCAL_ADDRESS_TYPE NlatUnicast
    FWPM_CONDITION_IP_LOCAL_ADDRESS Соответствующий локальный адрес (1.1.1.1 или 2.2.2.2.2).
    FWPM_CONDITION_IP_REMOTE_ADDRESS Соответствующий удаленный адрес (1.1.1.1 или 2.2.2.2.2).
    action.type FWP_ACTION_CALLOUT_TERMINATING
    action.calloutKey FWPM_CALLOUT_IPSEC_INBOUND_TRANSPORT_V{4|6}
  2. Исключите трафик ICMP из IPsec, добавив фильтр со следующими свойствами.

    Свойство filter Значение
    условие фильтрации FWPM_CONDITION_IP_LOCAL_ADDRESS_TYPE NlatUnicast
    условие фильтрации FWPM_CONDITION_IP_PROTOCOL **IPPROTO_ICMP{V6}**Эти константы определяются в winsock2.h.
    action.type FWP_ACTION_PERMIT
    weight FWPM_WEIGHT_RANGE_IKE_EXEMPTIONS

В FWPM_LAYER_OUТБOUND_TRANSPORT_V{4|6} настройте правила фильтрации исходящего трафика на пакеты

  1. Добавьте фильтр со следующими свойствами.

    Свойство filter Значение
    условие фильтрации FWPM_CONDITION_IP_LOCAL_ADDRESS_TYPE NlatUnicast
    условие фильтрации FWPM_CONDITION_IP_LOCAL_ADDRESS Соответствующий локальный адрес (1.1.1.1 или 2.2.2.2.2).
    условие фильтрации FWPM_CONDITION_IP_REMOTE_ADDRESS Соответствующий удаленный адрес (1.1.1.1 или 2.2.2.2.2).
    action.type FWP_ACTION_CALLOUT_TERMINATING
    action.calloutKey FWPM_CALLOUT_IPSEC_OUТБOUND_TRANSPORT_V{4|6}
  2. Исключите трафик ICMP из IPsec, добавив фильтр со следующими свойствами.

    Свойство filter Значение
    условие фильтрации FWPM_CONDITION_IP_LOCAL_ADDRESS_TYPE NlatUnicast
    условие фильтрации FWPM_CONDITION_IP_PROTOCOL **IPPROTO_ICMP{V6}**Эти константы определяются в winsock2.h.
    action.type FWP_ACTION_PERMIT
    weight FWPM_WEIGHT_RANGE_IKE_EXEMPTIONS

Настройка сопоставлений безопасности для входящих и исходящих подключений

  1. Вызовите IPsecSaContextCreate0 с параметром outboundTraffic, содержащим IP-адреса как 1.1.1.1.1 и 2.2.2.2, и ipsecFilterId в качестве LUID исходящего транспортного слоя IPsec, добавленного выше.
  2. Вызовите IPsecSaContextGetSpi0 с параметром идентификатора идентификатора контекста, возвращаемого из IPsecSaContextCreate0, и параметр getSpi, содержащий IP-адреса, как 1.1.1.1 и 2.2.2.2, и ipsecFilterId в качестве LUID входящего фильтра выноски IPsec, добавленного выше. Возвращаемое значение SPI предназначено для использования в качестве входящего SA SPI на локальном компьютере и в качестве исходящего sa SPI соответствующим удаленным компьютером. Оба компьютера должны использовать некоторые внеполосные средства для обмена значениями SPI.
  3. Вызовите IPsecSaContextAddInbound0 с параметром идентификатора идентификатора контекста, возвращаемого из IPsecSaContextCreate0, и параметр inboundBundle, описывающий свойства входящего пакета SA (например, входящий SA SPI, тип преобразования, типы алгоритмов, ключи и т. д.).
  4. Вызовите IPsecSaContextAddOutbound0 с параметром идентификатора идентификатора контекста, возвращенным из IPsecSaContextCreate0, и параметр outboundBundle, описывающий свойства исходящего пакета SA (например, исходящий SA SPI, тип преобразования, типы алгоритмов, ключи и т. д.).

Пример кода: ручное управление ключами SA

Встроенные идентификаторы выноски

Фильтрация идентификаторов слоев

FWPM_ACTION0