Страница 1 из 1

Сбои при проверке функции антиповтора IPSec

Добавлено: 16 янв 2022, 18:59
xor

Источник: https://www.cisco.com/c/ru_ru/support/d ... ay-00.html

Сбои при проверке функции антиповтора IPSec

Введение
В этом документе описывается проблема, связанная со сбоем проверки на повтор в IPSec, а также процедуры устранения неполадок и возможные решения проблемы.

Примечание. Функция анти-повтора представляет собой важную функцию безопасности, доступную в рамках протокола IPSec. Отключение анти-повтора IPSec реализовано в целях безопасности, эту функцию необходимо использовать с осторожностью.

Общие сведения
Описание атаки повторного воспроизведения
Атака повторного воспроизведения — вид сетевой атаки, при которой передача допустимых данных повторяется или задерживается в мошеннических злонамеренных целях. Такая атака представляет собой попытку постороннего пользователя разрушить защиту путем записи легитимного обмена данными и его повтора, который направлен на то, чтобы притвориться авторизованным пользователем и нарушить работу легитимных соединений или нанести им ущерб.

Описание сбоя проверки на повтор
IPSec предоставляет защиту от атаки повторением, предотвращая дублирование злоумышленниками зашифрованных пакетов путем назначения единообразно увеличивающегося порядкового номера для каждого зашифрованного пакета. Терминальное устройство получения IPSec отслеживает уже обработанные пакеты по этим номерам, используя скользящее окно для всех приемлемых порядковых номеров. В настоящее время размер окна анти-повтора по умолчанию в Cisco IOS® — 64 пакета.

Примечание. Запросы на расширение CSCva65805 и CSCva65836 отправляются для увеличения размера окна анти-повтора по умолчанию до 512 пакетов, поскольку размер в 64 пакета считается недостаточным для современных сетей.

Это демонстрируется на следующем рисунке:

problem-replay-01.jpg

Далее описываются действия по обработке входящего трафика IPSec на принимающем терминальном устройстве туннеля при включенной функции анти-повтора:

  1. Если при приеме пакета порядковый номер указан в окне и ранее не был получен, пакет принимается и помечается как полученный до отправки на проверку на повтор.

  2. Если порядковый номер указывается в окне и ранее был получен, пакет отбрасывается, и значение счетчика повторов увеличивается.

  3. Если порядковый номер больше максимального номера в последовательности, указанного в окне, пакет принимается и помечается как полученный. Скользящее окно затем смещается вправо.

    Примечание. Это происходит только в том случае, если пакет является допустимым и проходит проверку на повтор.

  4. Если порядковый номер меньше минимального номера в последовательности, указанного в окне, пакет отбрасывается, и значение счетчика повторов увеличивается.

Во втором и четвертом сценарии происходит сбой проверки на повтор, и на маршрутизаторе выводится примерно такое сообщение об ошибке:

Код: Выделить всё

%CRYPTO-4-PKT_REPLAY_ERR: decrypt: replay check failed connection id=#, sequence number=#

Примечание. Для протокола Group Encrypted Transport VPN (GETVPN) выполняется принципиально иная проверка на повтор — проверка на повтор по времени. В этом документе рассматривается только анти-повтор на основе счетчика.

Проблема
Как уже говорилось ранее, проверки на повтор предназначены для защиты от злонамеренных повторений пакетов. Тем не менее, существует ряд сценариев, в которых сбой проверки на повтор может возникать не по причине действий злоумышленников:

  • Ошибка может быть результатом переупорядочивания пакетов в средстве передачи. Это, в частности, возможно при наличии параллельных путей.

  • Ошибка может произойти из-за неодинаковых путей обработки пакетов в Cisco IOS. Например, для больших пакетов IPSec, для которых требуется повторная сборка IP может возникать достаточная задержка перед дешифрованием в нагруженной системе, чтобы исключать их из окна повтора по времени обработки.

  • Ошибка может быть вызвана службой Quality of Service (QoS), которая включена на терминальном устройстве отправки IPSec. С появлением Cisco IOS шифрование IPSec выполняется до запуска QoS в исходящем направлении. Отдельные функции QoS, такие как очереди с низкой задержкой (LLQ), могут стать причиной сбоя при доставке пакетов IPSec и отбрасывания пакетов терминальным устройством приема из-за сбоя проверки на повтор.

Устранение проблемы, связанной с отбрасыванием повторных пакетов IPsec
Основной способ устранения проблемы, связанной с отбрасыванием повторных пакетов — выявить отброшенные из-за повторов пакеты и использовать перехват пакетов, чтобы проверить, действительно ли эти пакеты повторяются или они поступили на принимающих маршрутизатор за пределами окна повтора. Для правильного сопоставления отброшенных пакетов с перехваченным содержимым трассировки анализатора, в первую очередь необходимо выявить одноранговый узел и поток IPSec, к которому относятся отброшенные пакеты. Процедура может отличаться в зависимости от платформы маршрутизутора.

Платформа Cisco Integrated Services Router (ISR)/ISR G2, на которой запущен Cisco IOS Classic
Для устранения неполадок на этой платформе можно использовать сообщение об ошибке conn-id . Найдите conn-id в сообщении об ошибке и найдите эти данные в выходных данных show crypto ipsec sa , так как повтор представляет собой проверку по СБ (сопоставление безопасности) (в отличие от проверке по одноранговому узлу). Сообщение системного журнала также предоставляет порядковый номер инкапсуляции полезной нагрузки (ESP), что позволяет уникально идентифицировать отброшенный пакет при перехвате пакета.

Примечание. В различных версиях кода conn-id представляет собой либо conn id, либо flow_id для входящего СБ.

Это продемонстрировано здесь:

Код: Выделить всё

%CRYPTO-4-PKT_REPLAY_ERR: decrypt: replay check failed
        connection id=529, sequence number=13


Router#show crypto ipsec sa | in peer|conn id
   current_peer 10.2.0.200 port 500
        conn id: 529, flow_id: SW:529, sibling_flags 80000046, crypto map: Tunnel0-head-0
        conn id: 530, flow_id: SW:530, sibling_flags 80000046, crypto map: Tunnel0-head-0
Router#


Router#show crypto ipsec sa peer 10.2.0.200 detail  

 interface: Tunnel0
Crypto map tag: Tunnel0-head-0, local addr 10.1.0.100

   protected vrf: (none)
   local  ident (addr/mask/prot/port): (0.0.0.0/0.0.0.0/0/0)
   remote ident (addr/mask/prot/port): (0.0.0.0/0.0.0.0/0/0)
   current_peer 10.2.0.200 port 500
     PERMIT, flags={origin_is_acl,}
    #pkts encaps: 27, #pkts encrypt: 27, #pkts digest: 27
    #pkts decaps: 27, #pkts decrypt: 27, #pkts verify: 27
    #pkts compressed: 0, #pkts decompressed: 0
    #pkts not compressed: 0, #pkts compr. failed: 0
    #pkts not decompressed: 0, #pkts decompress failed: 0
    #pkts no sa (send) 0, #pkts invalid sa (rcv) 0
    #pkts encaps failed (send) 0, #pkts decaps failed (rcv) 0
    #pkts invalid prot (recv) 0, #pkts verify failed: 0
    #pkts invalid identity (recv) 0, #pkts invalid len (rcv) 0
    #pkts replay rollover (send): 0, #pkts replay rollover (rcv) 0
    ##pkts replay failed (rcv): 21
    #pkts internal err (send): 0, #pkts internal err (recv) 0

 local crypto endpt.: 10.1.0.100, remote crypto endpt.: 10.2.0.200
 path mtu 2000, ip mtu 2000, ip mtu idb Serial2/0
 current outbound spi: 0x8B087377(2332586871)
 PFS (Y/N): N, DH group: none

           inbound esp sas:
  spi: 0xE7EDE943(3891128643)
    transform: esp-gcm ,
    in use settings ={Tunnel, }
    conn id: 529, flow_id: SW:529, sibling_flags 80000046, crypto map:
    Tunnel0-head-0
    sa timing: remaining key lifetime (k/sec): (4509600/3223)
    IV size: 8 bytes
    replay detection support: Y
    Status: ACTIVE
<SNIP>

Эти выходные данные показывают, что отбрасывание повторных пакетов выполняется с однорангового узла 10.2.0.200 с входящим SPI (ESP SA Security Parameter Index) 0xE7EDE943. Сообщение журнала сообщает, что порядковый номер отброшенного пакета ESP — 13. Таким образом, комбинация адреса однорангового узла, номер SPI и порядковый номер EPS можно использовать для уникальной идентификации отброшенных пакетов при перехвате пакетов.

Примечание. Для сообщения системного журнала Cisco IOS установлено ограничение по скорости отбрасывания пакетов в плоскости данных. Чтобы выяснить точное число отбрасываемых пакетов, используйте команду show crypto ipsec sa detail, как показано в примере выше. Кроме того, обратите внимание, что в версиях кода, предшествующих Cisco IOS 12.4(4)T счетчики могут обновляться неправильно. Эта ситуация приведена в описании ошибки Cisco с идентификатором CSCsa90034.

Маршрутизатор Cisco Aggregation Services Router (ASR), на котором запущен Cisco IOS-XE
На платформе ASR в описании ошибки REPLAY_ERROR, которая возникала в некоторых предыдущих выпусках Cisco IOS-XE, мог не отображаться фактический поток IPSec, где повторяемые пакеты отбрасывались, как показано в следующем примере:

Код: Выделить всё

%IOSXE-3-PLATFORM: F0: cpp_cp: QFP:00 Thread: 095 TS:00000000240306197890
%IPSEC-3-REPLAY_ERROR:
 IPSec SA receives anti-replay error, DP Handle 3

Чтобы правильно определить данные однорангового узла и потока IPSec, можно использовать параметр Data Plane (DP) Handle, указываемый в сообщении системного журнала в качестве входного параметра SA Handle в этой команде для получения сведений о потоке IPSec на процессоре Quantum Flow Processor (QFP):

Код: Выделить всё

Router#show platform hardware qfp active feature ipsec sa 3
QFP ipsec sa Information

     QFP sa  id: 3
      pal sa id: 2
     QFP spd id: 1
      QFP sp id: 2
        QFP spi: 0x4c1d1e90(1276976784)
     crypto ctx: 0x000000002e03bfff
          flags: 0xc000800 (Details below)
               : src:IKE  valid:Yes  soft-life-expired:No  hard-life-expired:No
               : replay-check:Yes  proto:0  mode:0  direction:0
               : qos_preclassify:No  qos_group:No
               : frag_type:BEFORE_ENCRYPT  df_bit_type:COPY
               : sar_enable:No  getvpn_mode:SNDRCV_SA
               : doing_translation:No  assigned_outside_rport:No
               : inline_tagging_enabled:No
      qos_group: 0x0
            mtu: 0x0=0
      sar_delta: 0
     sar_window: 0x0
     sibling_sa: 0x0
         sp_ptr: 0x8c392000
        sbs_ptr: 0x8bfbf810
 local endpoint: 10.1.0.100
remote endpoint: 10.2.0.200
   cgid.cid.fid.rid: 0.0.0.0
               ivrf: 0
               fvrf: 0
    trans udp sport: 0
    trans udp dport: 0
    first intf name: Tunnel1
  <SNIP>

Если на платформе ASR установлен Cisco IOS версии, предшествующей XE 3.7, сообщение об ошибке просто регистрируется в DP Handle , не отображая информацию об одноранговом узле/SPI, к которому относится спорный пакет. В этом случае используется описание ошибки Cisco с идентификатором CSCtw69096:

Код: Выделить всё

     CSCtw69096   ASR prints DP Handle in IPsec syslogs - Fixed in XE3.7 / 15.2(4)S
       .. With this defect-fix, we now print the peer ip address and the SPI as follows:
          %IPSEC-3-REPLAY_ERROR: IPSec SA receives anti-replay error, DP Handle 6
   Now shows up as:
          %IPSEC-3-REPLAY_ERROR: IPSec SA receives anti-replay error, DP Handle 6,
           src_addr 10.0.0.2, dest_addr 10.0.0.1, SPI 0x1a2b3c4d

В таких случаях можно использовать сценарий встроенного диспетчера событий (EEM), чтобы узнать, из-за каких одноранговых узлов и SPI выводится сообщение об анти-повторе:

Код: Выделить всё

event manager applet Replay-Error 
 event syslog pattern "%IPSEC-3-REPLAY_ERROR: IPSec SA receives anti-replay error"
 action 1.0 regexp "([0-9]+)$" "$_syslog_msg" dph
 action 2.0 cli command "enable"
 action 3.0 cli command "show platform hardware qfp active feature ipsec sa $dph |
 append bootflash:replay-error.txt"

Чтобы просмотреть выходные данные непосредственно на платформе ASR, периодически выполняйте команду more bootflash:replay-error.txt.

Использование функции трассировки пакетов пути к данным ASR
При использовании более ранних версий ПО Cisco IOS-XE для ASR1000, сведения об одноранговом узле, а также об IPSec SPI также выводятся в целях устранения проблем, связанных с анти-повтором. Однако здесь по-прежнему недоступен один из важнейших компонентов данных, порядковый номер ESP, который выводится на платформе ISR G2, где запущена версия Cisco IOS classic. Порядковый номер ESP используется для уникального определения пакета IPSec в пределах заданного IPSec. Без указания порядкового номера сложно определить, какие именно пакеты отбрасываются при перехвате пакетов.

В Cisco IOS-XE версии 3.10 (15.3(3)S) реализована новая инфраструктура трассировки пакетов, призванная устранить проблемы, связанные с переадресацией пакетов плоскости данных. Эту инфраструктуру можно использовать в этой конкретной ситуации, когда на ASR отбрасывание повторного пакета:

Код: Выделить всё

%IOSXE-3-PLATFORM: F0: cpp_cp: QFP:0.0 Thread:060 TS:00000001132883828011
%IPSEC-3-REPLAY_ERROR: IPSec SA receives anti-replay error, DP Handle 3, src_addr
10.2.0.200, dest_addr 10.1.0.100, SPI 0x4c1d1e90
O

Чтобы определить порядковый номер отбрасываемого пакета ESP, выполните следующие действия с помощью функции трассировки пакетов:

  1. Настройка фильтра условной отладки платформы для сопоставления трафика с однорангового устройства:

    Код: Выделить всё

    debug platform condition ipv4 10.2.0.200/32 ingress
    debug platform condition start
  2. Включите трассировку пакетов с помощью команды copy, предназначенной для копирования данных в заголовке пакета:

    Код: Выделить всё

    debug platform packet enable
     debug platform packet-trace packet 64 
    debug platform packet-trace copy packet input l3 size 100
  3. То То При обнаружении ошибок, связанных с повтором, используйте буфер трассировки пакетов для определения пакетов, которые отбрасываются из-за повтора. Порядковый номер ESP отображается в скопированном пакете:

    Код: Выделить всё

    Router#show platform packet-trace summary 
    Pkt   Input            Output           State  Reason
    0     Gi4/0/0          Tu1              CONS   Packet Consumed
    1     Gi4/0/0          Tu1              CONS   Packet Consumed
    2     Gi4/0/0          Tu1              CONS   Packet Consumed
    3     Gi4/0/0          Tu1              CONS   Packet Consumed
    4     Gi4/0/0          Tu1              CONS   Packet Consumed
    5     Gi4/0/0          Tu1              CONS   Packet Consumed
    6 Gi4/0/0 Tu1 DROP 053 (IpsecInput)
    7 Gi4/0/0 Tu1 DROP 053 (IpsecInput)
    8     Gi4/0/0          Tu1              CONS   Packet Consumed
    9     Gi4/0/0          Tu1              CONS   Packet Consumed
    10    Gi4/0/0          Tu1              CONS   Packet Consumed
    11    Gi4/0/0          Tu1              CONS   Packet Consumed
    12    Gi4/0/0          Tu1              CONS   Packet Consumed
    13    Gi4/0/0          Tu1              CONS   Packet Consumed

В предыдущих выходным данных показано, что пакеты с номерами 6 и 7 отбрасываются, поэтому подробные сведения о них приведены ниже:

Код: Выделить всё

Router#show platform packet-trace  pac 6
Packet: 6           CBUG ID: 6
Summary
  Input     : GigabitEthernet4/0/0
  Output    : Tunnel1
  State     : DROP 053 (IpsecInput)
  Timestamp : 3233497953773
Path Trace
  Feature: IPV4
    Source      : 10.2.0.200
    Destination : 10.1.0.100
    Protocol    : 50 (ESP)
  Feature: IPSec
    Action    : DECRYPT
    SA Handle : 3
    SPI       : 0x4c1d1e90
    Peer Addr : 10.2.0.200
    Local Addr: 10.1.0.100
  Feature: IPSec
    Action    : DROP
    Sub-code  : 019 - CD_IN_ANTI_REPLAY_FAIL
Packet Copy In
  45000428 00110000 fc329575 0a0200c8 0a010064 4c1d1e90 00000006 790aa252
  e9951cd9 57024433 d97c7cb8 58e0c869 2101f1ef 148c2a12 f309171d 1b7a4771
  d8868af7 7bae9967 7d880197 46c6a079 d0143e43 c9024c61 0045280a d57b2f5e
  23f06bc3 ab6b6b81 c1b17936 98939509 7aec966e 4dd848d2 60517162 9308ba5d

Порядковый номер ESP имеет значение смещения 24, начиная с заголовка IP (выделено полужирным курсивом в предыдущем примере выходных данных). В этом конкретном примере порядковый номер ESP отброшенного пакета — 0x6.

Решение
После определения однорангового устройства доступно три возможных сценария:

  1. Это допустимый пакет: Перехват пакетов позволяет убедиться в том, что пакет является допустимым, проблема не имеет высокого уровня серьезности (из-за задержки сети или проблем на пути передачи) или требуется расширенная процедура диагностики и устранения неполадок. Например, в подписи указан пакет с порядковым номером X, который поступил вне очереди, и для окна задан размер 64. If X + 64 пакетов поступает до пакета X, после чего он отбрасывается из-за сбоя проверки на повтор (хотя это может не являться признаком атаки).

    В таких случаях необходимо увеличить размер окна функции анти-повтора, чтобы учитывать такие задержки и предотвращать отбрасывание легитимных пакетов. По умолчанию для окна установлен довольно небольшой размер (64). Увеличение размера окна не влечет значительного повышения риска атаки. Сведения о настройке окна функции анти-повтора IPsec см. в статье Настройка окна функции анти-повтора IPsec: Расширение и отключение.

    Совет: При отключении или изменении профиля IPSec, а профиль IPSec использует защиту туннеля в интерфейсе Virtual Tunnel Interface (VTI), изменения вступят в силу после удаления или повторного применения профиля защиты или после сброса интерфейса туннеля. Такие поведение ожидаемо, поскольку профили IPSec представляют собой просто шаблон, используемый для создания карты профиля туннеля после активации (не отключения) интерфейса туннеля. После включения интерфейса изменения в профиле будут влиять на работу туннеля только после повторного применения или сброса интерфейса.

    Примечание. Типичной проблемой на платформах ASR в том, что касается размера окна анти-повтора, является отсутствие поддержки в моделях ASR1K (например, ASR1K с ESP5, ESP10, ESP20 и ESP40, а также ASR1001) окон с размером 1024. Несмотря на то, что команда позволяет задать для этого ограничения размер 1024, оборудование сбрасывает размер окна и устанавливает размер 512. Таким образом, в команде show crypto ipsec sa, может отображаться неверный размер окна. Выполните команду show crypto ipsec sa peer ip-address platform, чтобы проверить размер окна аппаратной функции анти-повтора. Стандартно на всех платформах устанавливается размер окна в 64 пакета. Дополнительные сведения см. в описании ошибки Cisco с идентификатором CSCso45946. Более новые модели ASR1K (например, ASR1K с ESP100 и ESP200, ASR1001-X, ASR1002-X, а также ISR-4400) поддерживают окна размером 1024 пакета (15.2(2)S и более поздние версии).

  2. Это пакет, который выходит за пределы окна анти-повтора на устройстве-получателе: Если терминальное устройство приема IPSec отбрасывает повторные пакеты (как и должно быть), одновременно с тем анализатор выполняет перехват на стороне глобальной сети отправителя и получателя, позволяя определять, вызвано ли это нарушениями в поведении отправителя или повтором пакетов в транзитной сети.

  3. Это обусловлено конфигурацией QoS на стороне отправителя: В этом случае требуется тщательное изучение ситуации и внесение ряда изменений в QoS, чтобы снизить риски. Дополнительные сведения по этой теме, а также описание решения проблемы см. в статье Функции анти-повтора и IPSec VPN (V3PN) с поддержкой видеосвязи.

Примечание. Сбой проверки на повтор наблюдается только при включении алгоритма проверки подлинности в наборе преобразования IPSec. Кроме того, чтобы избежать этой ошибки, можно также отключить проверку подлинности и выполнить только шифрование; однако это делать не рекомендуется по соображениям безопасности.