Описание обработки интерфейсов

В результате обработки интерфейсов в LSP могут появиться записи двух структур: NetworkInterface и FilterChain.

Структура NetworkInterface используется для описания сетевого интерфейса и тех действий, которые должны быть выполнены с пакетом при его прохождении через этот интерфейс – фильтрация и классификация.

Структура FilterChain формирует условие срабатывания конкретного правила пакетной фильтрации для партнеров по взаимодействию (для crypto-maps).

1.   Формирование NetworkInterface:

·       Пишется параметр LogicalName=”<native-interface-name>”, где <native-interface-name> – внутреннее имя интерфейса, зарегистрированное в агенте

·       Описание остальных параметров (если источник для параметра отсутствует в Cisco-like конфигурации – параметр не пишется):

 

Параметр

Источник в Cisco-like конфигурации (подкоманда команды interface)

InputFilter – задает правила как stateless (пакетной) так и statefull (контекстной) фильтрации для входящих пакетов на этот интерфейс

ip access-group in

при ее отсутствии - ip inspect inspection-name in

OutputFilter – задает правила как stateless (пакетной) так и statefull (контекстной) фильтрации для исходящих пакетов с этого интерфейса

ip access-group out

при ее отсутствии - ip inspect inspection-name out

InputClassification – задает правила классификации входящих пакетов на этот интерфейс и выставления значения поля TOS в IP-заголовке пакетов. Классификация и маркирование входящего защищаемого трафика производится после его успешной декапсуляции..

service-policy input

OutputClassification – задает правила классификации исходящих пакетов с этого интерфейса и выставления значения поля TOS в IP-заголовке пакетов. Классификация и маркирование исходящего защищаемого трафика производится до его IPsec инкапсуляции. В случае туннелирования результирующее значение TOS-байта копируется из внутреннего IP-заголовка во внешний.

service-policy output

 

2.   Формирование FilterChain для фильтрации трафика:

·       Для каждой записи листа доступа формируется отдельный фильтр.

·       Запись deny транслируется в DROP.

·       Запись permit транслируется:

·       в ссылку на inspection  chain  label, если присутствует inspection chain, и в записи листа доступа указан протокол TCP или IP

·       в PASS, если inspection chain отсутствует.

·       Формирование параметров LogEventID (см. ниже)

·       Последней записью перед inspect chain label или последней записью в FilterChain при отсутствии inspect chain пишется фильтр drop all:

Filter ( 

     Action = DROP 

)

3.   Формирование FilterChain для инспектирования трафика:

·       Если присутствует фильтрация трафика, то первая запись inspect chain помечается label со значением имени inspect chain (из команды ip inspect name …)

·       Записи формируются в порядке следования команд ip inspect name в Cisco-like конфигурации. Исключение: если в команде ip inspect name указан протокол tcp, то это всегда порождает предпоследний фильтр перед “pass all” (независимо от расположения самой команды в конфигурации):

Filter (

     ProtocolID *= 6

     Action = PASS

     ExtendedAction = inspect_tcp< … >

)

·       Ссылка на port map порождает последовательность фильтров, основанную на командах ip port map:

·       Параметр ProtocolID всегда равен 6.

·       Параметр Action – всегда PASS.

·       Порт или диапазон портов (из команды ip port map) транслируется в параметр DestinationPort.

·       Если в port map присутствует ссылка на список доступа, то каждая запись из этого списка порождает отдельную запись Filter:

·       DestinationIP (единичный адрес или подсеть) берется из записи списка доступа

·       В случае permit – пишется запись с параметром ExtendedAction (формирование смотрите ниже)

·       В случае deny – параметр ExtendedAction отсутствует

·       При наличии спецификатора log пишется параметр (см. ниже):

Log = TRUE

·       В параметр ExtendedAction прописывается значение inspect_tcp<…>.
Исключение: если в port map указывается ftp, то прописывается inspect_ftp <…>.

·       В качестве параметров ExtendedAction может прописываться timeout и флаги NOALERT и AUDIT.

·       Последней записью пишется фильтр pass all:

Filter ( 

      Action = PASS: 

) 

·       Формирование параметров LogEventID и Log  см. ниже. 

4.   Пример формирования FilterChain для фильтрации и инспектирования трафика

·       Фрагмент Cisco-like конфигурации:

ip inspect alert-off

...

access-list 1 deny 10.20.30.40

access-list 1 permit 10.20.30.0 0.0.0.255

!

ip port-map user-1 port tcp 2000

!

ip port-map user-2 port tcp 2001 list 1

!

ip inspect name inspect1 user-1 timeout 1008

ip inspect name inspect1 ftp audit-trail on

ip inspect name inspect1 tcp alert on audit-trail off timeout 1234

ip inspect name inspect1 user-2 alert off

...

ip access-list extended acl1

 deny udp 3.4.0.0 0.0.255.255 any

 deny icmp host 3.4.5.6 9.8.7.0 0.0.0.255

 permit tcp host 1.2.3.4 any established

 permit tcp any any

...

interface FastEthernet0/0

 ip access-group acl1 in

 ip inspect inspect1 in

 

·       Фрагмент полученной LSP конфигурации:

FilterChain FilterChain:acl1 (

    Filters *= Filter (

        SourceIP *= 3.4.0.0/16

        ProtocolID *= 17

        Action = DROP

        LogEventID = "acl1"

    ),

    Filter (

        SourceIP *= 3.4.5.6

        DestinationIP *= 9.8.7.0/24

        ProtocolID *= 1

        Action = DROP

        LogEventID = "acl1"

    ),

    Filter (

        SourceIP *= 1.2.3.4

        ProtocolID *= 6

        Action = "inspect1"

        ExtendedAction = tcp_flags< any_set *= RST, ACK >

        LogEventID = "acl1"

    ),

    Filter (

        ProtocolID *= 6

        Action = "inspect1"

        LogEventID = "acl1"

    ),

    Filter (

        Action = DROP

    ),

    Filter (

        Label = "inspect1"

        ProtocolID *= 6

        DestinationPort *= 2000

        Action = PASS

        ExtendedAction = inspect_tcp< timeout = 1008  flags *= NOALERT >

        LogEventID = "Inspect:inspect1:user-1"

    ),

    Filter (

        ProtocolID *= 6

        DestinationPort *= 21

        Action = PASS

        ExtendedAction = inspect_ftp< flags *= NOALERT, AUDIT >

        LogEventID = "Inspect:inspect1:ftp"

    ),

    Filter (

        DestinationIP *= 10.20.30.40

        ProtocolID *= 6

        DestinationPort *= 2001

        Action = PASS

        LogEventID = "Inspect:inspect1:user-2:1"

    ),

    Filter (

        DestinationIP *= 10.20.30.0/24

        ProtocolID *= 6

        DestinationPort *= 2001

        Action = PASS

        ExtendedAction = inspect_tcp< flags *= NOALERT >

        LogEventID = "Inspect:inspect1:user-2:1"

    ),

    Filter (

        ProtocolID *= 6

        Action = PASS

        ExtendedAction = inspect_tcp< timeout = 1234 >

        LogEventID = "Inspect:inspect1:tcp"

    ),

    Filter (

        Action = PASS

    )

)

 

5.   Формирование FilterChain для QoS классификации трафика.

·       Берется описание policy  map и последовательно раскрывается по порядку следования class map, за одним исключением: при наличии default class map, она порождает предпоследнюю по счету запись в FilterChain.

·       При переборе class maps делается просмотр на один шаг вперед: запоминается имя следующей class map для того, чтобы использовать его как ссылку на label.

·       Первые по счету фильтры всех class  maps, кроме первой, помечаются меткой (label) с именем class map в качестве значения.

·       Для default class map используется метка “class-default”.

·       Далее описывается конвертирование очередной class  map.

·       Если class  map не содержит критериев классификации трафика, для нее пишется вырожденный фильтр вида:

Filter (

   Label = "<class-map-i>"

   Action = "<class-map-i+1>"

·       Варианты таких class maps:

·       пустая class map

·       class map типа match-all, которая содержит хотя бы одну ссылку на несуществующий или пустой список доступа

·       class map типа match-any, которая содержит только ссылки на несуществующие или пустые листы доступа.

·       Если class  map применима ко всему трафику, пишется Filter следующего вида:

Filter (

   Label = "<class-map>"

   Action = PASS

   ExtendedAction = classify_mark< tos_set=  tos_set_mask=... >

   LogEventID = "Classification:<policy-map>:<class-map>"

)

Примечание: здесь и далее предполагается, что присутствуют команды set precedence и/или set dscp. Если такие команды отсутствуют, то в результирующих фильтрах отсутствуют параметры tos_set и tos_set_mask. Подробнее см. далее.

·       Варианты таких class maps:

·       class map по умолчанию (задается командой class class-default);

·       class map типа match-all, которая содержит единственный критерий классификации трафика – команду match-any ;

·       class map типа match-any, в которой один из критериев классификации трафика - команда match-any.

 

·       Правила конвертирования команд set (маркировка трафика):

·       Если команды set precedence и set dscp отсутствуют, параметры tos_set и tos_set_mask в результирующих фильтрах не пишутся.

·       Команда set precedence транслируется в

ExtendedAction = classify_mark< tos_set=<num_precedence>*32 tos_set_mask=224 >

где

<num_precedence>*32 – числовое значение команды set precedence, умноженное на 32 (битовый сдвиг на 5 бит влево, т.е. результирующее значение TOS-байта для указанного precedence без учета остальных битов)

 

маска 224 (11100000) указывает на precedence.

·       Команда set dscp транслируется в

ExtendedAction = classify_mark< tos_set=<num_dscp>*4 tos_set_mask=252 >

где

<num_dscp>*4 – числовое значение команды set dscp, умноженное на 4 (битовый сдвиг на 2 бита влево, т.е. результирующее значение TOS-байта для указанного DSCP без учета остальных битов)

 

маска 252 (11111100) указывает на DSCP. 

·       В некоторых случаях в одном фильтре могут смешиваться указания как для классификации, так и для маркировки трафика. Например (в оригинале ExtendedAction пишется в одну строку):

Filter (

   Action = PASS

   ExtendedAction = classify_mark<  tos_match *= 160, 192 tos_match_mask=224 tos_set=96 tos_set_mask=224 >

)

Данный фильтр задает правило: трафик с precedence=internet или precedence=critical маркировать как precedence=flash.

 

·       Далее будут расматриваться невырожденные варианты построения class  maps. Они могут приводить к разветвленной структуре ссылок на различные labels. Следует отметить, что в общем случае для конкретного class map могут быть ссылки на две labels:

·       Фильтры, порожденные следующим критерием классификации трафика в рамках текущей class map. Далее такие ссылки будут указываться, как “<Curr_class>”.

·       Корневой фильтр, описывающий начало следующего class map в policy map. Далее будет указываться, как “<Next_class>”.

·       Пример записи FilterChain:

...

    Filters *= Filter (

        Action = "<Curr_class>"

        ExtendedAction = classify_mark<  tos_match *= 40, 192 tos_match_mask=252 >

        LogEventID = "Classification:..."

    ),

    Filter (

        Action = "<Next_class>"

    ),

...

 

Данная запись обозначает:

 

если TOS-байт трафика содержит значение DSCP=af11 или DSCP=cs6, то рассмотреть следующий критерий классификации трафика из текущей class map (соответствует class map типа match-all),

 

в противном случае - перейти к рассмотрению следующей class map.

·       Конвертирование class  map типа match-all:

·       Команда match-any, если она не является единственным критерием классификации, игнорируется.

·       Команды match  dscp и match  precedence транслируются (каждая по отдельности) в следующие конструкции:

·       При наличии <Curr_class>:

    Filter (

        Action = "<Curr_class>"

        ExtendedAction = classify_mark<  tos_match *= ... tos_match_mask=... >

        LogEventID = "Classification:..."

    ),

    Filter (

        Action = "<Next_class>"

    )

·       При отсутствии <Curr_class> (последний критерий классификации для данного class map):

    Filter (

        Action = PASS

        ExtendedAction = classify_mark<  tos_match *= ... tos_match_mask=... tos_set=... tos_set_mask=... >

        LogEventID = "Classification:..."

    )    

·       Пример:

Фрагмент Cisco-like конфигурации:

...

class-map match-all cl-map-1

 match dscp af11 cs6

 match precedence internet critical

!

policy-map pol-map-1

class cl-map-1

  set precedence flash

!

...

 

Фрагмент LSP:

...

FilterChain ClassificationChain:pol-map-1 (

    Filters *= Filter (

        Action = "cl-map-1:match_precedence"

        ExtendedAction = classify_mark<  tos_match *= 40, 192 tos_match_mask=252 >

        LogEventID = "Classification:pol-map-1:cl-map-1:match_dscp"

    ),

    Filter (

        Action = PASS

    ),

    Filter (

        Label = "cl-map-1:match_precedence"

        Action = PASS

        ExtendedAction = classify_mark<  tos_match *= 160, 192 tos_match_mask=224 tos_set=96 tos_set_mask=224 >

        LogEventID = "Classification:pol-map-1:cl-map-1:match_precedence"

    ),

    Filter (

        Action = PASS

    )

)

...    

·       Для каждого критерия классификации, задаваемого командой match access-group, пишется отдельный FilterChain. Для каждой записи листа доступа формируется отдельный фильтр:

·       deny транслируется в ссылку на <Next_class>. При отсутствии последней – в PASS-правило.

·       permit транслируется в ссылку на <Curr_class>. При отсутствии последней – в PASS-правило, в котором в качестве параметра ExtendedAction задается маркировка трафика (tos_set/tos_set_mask).

·       При наличии спецификатора log или log-input, пишется параметр Log=TRUE (подробнее см. ниже).

·       Следует отметить, что указания TCP-флагов в листах доступа (включая спецификатор established) игнорируются.

·       Если присутствует ссылка <Curr_class> (данный критерий классификации не последний для данного class map), то в конце пишется фильтр:

При наличии <Next_class>:

                            Filter (

                  Action = "<Next_class>"

              )

При отсутствии <Next_class>:

              Filter (

                  Action = PASS

              )

·       Пример:

Фрагмент Cisco-like конфигурации:

ip access-list extended acl1

 deny tcp host 10.20.30.40 host 10.10.10.10

 permit ip host 10.20.30.40 10.10.10.0 0.0.0.255

!

ip access-list extended acl2

...

class-map match-all cl-map-1

 ...

 match access-group name acl1

 match access-group name acl2

!

class-map cl-map-2

...

policy-map pol-map-1

 class cl-map-1

  set precedence flash

 class cl-map-2

  set precedence critical

...

 

Фрагмент LSP:

...

    Filter (

        SourceIP *= 10.20.30.40

        DestinationIP *= 10.10.10.10

        ProtocolID *= 6

        Action = "cl-map-2"

        LogEventID = "Classification:pol-map-1:cl-map-1:acl1"

    ),

    Filter (

        SourceIP *= 10.20.30.40

        DestinationIP *= 10.10.10.0/24

        Action = "cl-map-1:acl2"

        LogEventID = "Classification:pol-map-1:cl-map-1:acl1"

    ),

    Filter (

        Action = "cl-map-2"

    ),

    Filter (

        Label = "cl-map-1:acl2"

...

    Filter (

        Label = "cl-map-2"

...

    Filter (

        Action = PASS

    )

... 

 

·       Конвертирование class map типа match-any:

·       Присутствие команды match-any, приводит к тому, что данная class map применима ко всему трафику. Этот случай рассмотрен выше.

·       Команды match dscp и match precedence транслируются (каждая по отдельности) в фильтр вида:

Filter (

   Action = PASS

   ExtendedAction = classify_mark<  tos_match *= ... tos_match_mask=... tos_set=... tos_set_mask=... >

   LogEventID = "Classification:..."

)

·       Команды match access-group, ссылающиеся на несуществующие или пустые ACLs, игнорируются.

·       Для каждого критерия классификации, задаваемого командой match access-group, пишется отдельный набор фильтров. Для каждой записи листа доступа формируется отдельный фильтр:

·       deny транслируется в ссылку на <Curr_class>. При ее отсутствии – в ссылку на <Next_class>. При отсутствии последней – в PASS-правило.

·       permit транслируется в PASS-правило, в котором в качестве параметра ExtendedAction задается маркировка трафика (tos_set/tos_set_mask).

·       Следует отметить, что указания TCP-флагов в записи листа доступа (включая спецификатор established) игнорируются.

·       Пример:

Фрагмент Cisco-like конфигурации:

ip access-list extended acl1

 deny tcp host 10.20.30.40 host 10.10.10.10

 permit ip host 10.20.30.40 10.10.10.0 0.0.0.255

!

ip access-list extended acl2

 permit udp any any

!

class-map match-any cl-map-1

 match precedence priority

match access-group name acl1

 match access-group name acl2

!

class-map cl-map-2

 match precedence internet critical

 match dscp af11 cs6

!

policy-map pol-map-1

 class class-default

 class cl-map-1

  set precedence flash

class cl-map-2

  set precedence network

...

 

 

Фрагмент LSP:

...

FilterChain ClassificationChain:pol-map-1 (

    Filters *= Filter (

        Action = PASS

        ExtendedAction = classify_mark<  tos_match *= 32 tos_match_mask=224 tos_set=96 tos_set_mask=224 >

        LogEventID = "Classification:pol-map-1:cl-map-1:match_precedence"

    ),

    Filter (

        SourceIP *= 10.20.30.40

        DestinationIP *= 10.10.10.10

        ProtocolID *= 6

        Action = "cl-map-1:acl2"

        LogEventID = "Classification:pol-map-1:cl-map-1:acl1"

    ),

    Filter (

        SourceIP *= 10.20.30.40

        DestinationIP *= 10.10.10.0/24

        Action = PASS

        ExtendedAction = classify_mark< tos_set=96 tos_set_mask=224 >

        LogEventID = "Classification:pol-map-1:cl-map-1:acl1"

    ),

    Filter (

        Label = "cl-map-1:acl2"

        ProtocolID *= 17

        Action = PASS

        ExtendedAction = classify_mark< tos_set=96 tos_set_mask=224 >

        LogEventID = "Classification:pol-map-1:cl-map-1:acl2"

    ),

    Filter (

        Label = "cl-map-2"

        Action = "cl-map-2:match_precedence"

        ExtendedAction = classify_mark<  tos_match *= 40, 192 tos_match_mask=252 >

        LogEventID = "Classification:pol-map-1:cl-map-2:match_dscp"

    ),

    Filter (

        Action = "class-default"

    ),

    Filter (

        Label = "cl-map-2:match_precedence"

        Action = PASS

        ExtendedAction = classify_mark<  tos_match *= 160, 192 tos_match_mask=224 tos_set=224 tos_set_mask=224 >

        LogEventID = "Classification:pol-map-1:cl-map-2:match_precedence"

    ),

    Filter (

        Label = "class-default"

        Action = PASS

        LogEventID = "Classification:pol-map-1:class-default"

    )

)

...   

 

6.   Из интерфейса последовательно читаются crypto maps из crypto map set, прописанного в команде crypto map <crypto_map> (режим конфигурирования интерфейса).

·       Из описания crypto map читается access list, прописанный в команде match address <access_list> (режим конфигурирования crypto map).

·       Далее для простоты такой access list будет указываться как crypto-map-acl.

·       Если в файле cs_conv.ini параметр ike_autopass выставлен в значение “on” (значение по умолчанию, см. ike_autopass), то в начале FilterChain пишется следующий фильтр:

    Filter (

        ProtocolID = 17

        SourcePort = 500, 4500

        Action = PASS

        PacketType = LOCAL_UNICAST, LOCAL_MISDIRECTED

    )

·       Следует учесть, что данная настройка помешает созданию конфигурации с вложенным IPsec.

·       Если необходимо составить конфигурацию с вложенным IPsec, то следует параметр ike_autopass выставить в значение off и самостоятельно прописать соответствующий PASS-фильтр для IKE пакетов, в котором указан адрес партнера по защищенному соединению.

·       Происходит трансляция из crypto-map-acl в структуры Filter следующим образом:

·       deny транслируется в:

·       если присутствует следующая crypto map, то в ссылку (по label) на первый фильтр, сгенерированный из crypto-map-acl следующей crypto map.

·       правило PASS для последней crypto map в списке.

·       permit транслируется в правило APPLY (IPSec). При этом пишутся параметры из данного crypto map.

·       Указания TCP-флагов (включая спецификатор established), а также спецификаторы log и log-input игнорируются.  

7.   В случае, если в crypto map set присутствует ссылка на dynamic template set (задается командами crypto dynamic map), в котором есть несколько dynamic crypto maps, в crypto-map-acls которых существуют пересечения по адресам, в фильтре происходит объединение правил.

·       Объединение правил для статических crypto  maps не производится (ни между разными статическими crypto maps, ни между статическими и динамическими crypto maps).

·       В случае если статическая crypto  map имеет приоритет ниже, чем динамическая, могут возникать логические неувязки. Настоятельно рекомендуется давать статическим crypto maps приоритет выше, чем динамическим. Следует отметить, что в документации Cisco также присутствует эта рекомендация.

·       Если данная рекомендация не выполнена – выдается предупреждение [2.9].

·       Не производится объединение правил для динамических crypto  maps, которые входят в разные dynamic template sets, которые в свою очередь входят в один crypto map set.

·       В случае если в dynamic  template  set существует пересечение по адресам правил, в которых для одних dynamic templates прописаны правила permit, а для других – deny; в фильтре прописывается правило вида (PASS), (Action1), …, (ActionN).

·       Логика формирования данных фильтров может существенно отличаться от логики Cisco.

·       В данном примере продемонстрирован особый прием: специально для прописывания PASS-правила  сделан crypto dynamic-map dmap 2 (на самом деле приоритет этого dynamic map в данном конкретном случае не важен), в котором нет ничего, кроме связи с ACL, состоящим из deny-правила (правил): отсутствуют transform sets и т.п. Следует отметить, что данный способ может использоваться только с агентом, и неприменим на реальных устройствах Cisco.

·       Данная логика действует только на явно прописанные deny-правила. Для неявных правил deny ip any any, которые предполагаются в конце каждого access list, никаких объединений правил не делается.

·       В случае, если для данной crypto  map задан IKECFG пул (любым способом: или с помощью команд crypto isakmp client configuration address-pool local / crypto map … client configuration address initiate/respond; или с помощью команды set pool), то в структуре IKERule прописывается соответствующий AddressPool.

·       Следует учитывать, что если используется crypto map с crypto-map-acl, то в данном crypto-map-acl надо вписывать правила, в которые попадают адреса из пула. Например:

! ...

ip local pool pool1 192.168.211.10 192.168.211.30

! ...

crypto map cmap 10 ipsec-isakmp

 set peer 10.1.1.10

 ! ...

 match address cr-acl

 set pool pool1

!

ip access-list extended cr-acl

 permit ip <...> host 10.1.1.10

 permit ip <...> 192.168.211.0 0.0.0.255

! ...

·       Примечание: приведенная конфигурация корректна, но используется редко. На практике IKECFG пул чаще всего задается для динамических crypto maps, к которым не привязан ни один crypto-map-acl.

·       Требование к прописыванию фильтра с адресами из пула примерно соответствует поведению Cisco IOS.

·       Однако данное поведение отличается от версии 3.1: там можно было написать укороченный crypto-map-acl (фильтр с адресами из пула создавался неявно):

ip access-list extended cr-acl

 permit ip <...> host 10.1.1.10

8.   Происходит проверка нужно ли прописывать данный фильтр. Если этот фильтр совпадает или полностью включается в один из предыдущих фильтров, прописанных для данного интерфейса, тогда этот фильтр не прописывается в LSP.

9.   Формирование параметров LogEventID и Log структуры FilterChain:

·       Примечание 1: LogEventID формируется всегда.

·       Примечание 2: если структура Filter формируется не из записи ACL, параметр Log выставляется в FALSE.

·       Примечание 3: параметр Log выставляется в TRUE в случае, если структура Filter формируется из записи ACL и в этой записи присутствует спецификатор log или log-input.

·       Объекты, кроме IPsec policy (см. ниже):

Тип исходного объекта

Ситуация

Параметр
LogEventID

Допустимость параметра Log=TRUE

Фильтрующий ACL

 

“<ACL-name>” 

+ 

Inspection

Запись в port map, не имеющая ссылок на ACL

“Inspect:<inspect-name>:<port-map-name>” 

 

Запись в port map, ссылающаяся на ACL

“Inspect:<inspect-name>:<port-map-name>” 

+ 

Ссылка на протокол TCP 

“Inspect:<inspect-name>:tcp” 

 

Classification

match acl… 

“Classification:<policy-map-name>:<class-map-name>:<acl-name>” 

+ 

match dscp… 

“Classification:<policy-map-name>:<class-map-name>:match_dscp” 

 

match precedence… 

“Classification:<policy-map-name>:<class-map-name>:match_precedence 

 

match any

“Classification:<policy-map-name>:<class-map-name>”

 

Clear-Text фильтрация внутри защищенного соединения

 

“ClearText:<acl-name>”

+ 

 

·       IPsec policy:

·       Вначале идет префикс “IPsec”.

·       Далее, если допускается открытый трафик, пишется “:Bypass”.

·       Далее, если присутствует защищенный трафик, пишется “:Protect“.

·       Для динамических crypto maps возможны сочетания “IPsec:Bypass:Protect”.

·       Далее, после двоеточия, пишется набор из следующих параметров:

·       Имя и порядковый номер crypto map, разделенные двоеточием.

·       Если используется dynamic map: имя и порядковый номер dynamic map, разделенные двоеточием.

·       Если присутствует ACL (может отсутствовать для dynamic map): после двоеточия пишется имя этого ACL.

·       Если источником являются несколько crypto maps, то блоки описания для каждой crypto map разделяются символом “$” (доллар).

·       Параметр Log=TRUE допускается: пишется в том случае, если в текущей записи ACL присутствует модификатор log или log-input.

·       Если фильтр формируется на основе нескольких записей ACL, достаточно присутствие одного из этих модификаторов хотя бы в одной из задействованных записей.

·       Пример исходной конфигурации:

...

ip access-list extended crypto-acl-1

 permit ip any any

!

ip access-list extended crypto-acl-2

 deny ip host 192.168.101.102 any log

 permit tcp 192.168.3.0 0.0.0.255 any eq 80 log

!

crypto dynamic-map dmap 10

 match address crypto-acl-1

 set transform-set tr1

!

crypto dynamic-map dmap 20

 match address crypto-acl-2

 set transform-set tr2

!

crypto map cmap 10 ipsec-isakmp dynamic dmap

...

 

 

# Native LSP конфигурация

...

FilterChain IPsecPolicy:cmap (

    Filters *= Filter (

        SourceIP *= 192.168.101.102

        Action = PASS

        ExtendedAction = ipsec< sa *= IPsecAction:dmap:10 fallback_action = PASS >

        LogEventID = "IPsec:Bypass:Protect:cmap:10:dmap:10:crypto-acl-1$cmap:10:dmap:20:crypto-acl-2"

        Log = TRUE

    ),

    Filter (

        SourceIP *= 192.168.3.0/24

        ProtocolID *= 6

        DestinationPort *= 80

        Action = PASS

        ExtendedAction = ipsec< sa *= IPsecAction:dmap:10, IPsecAction:dmap:20 >

        LogEventID = "IPsec:Protect:cmap:10:dmap:10:crypto-acl-1$cmap:10:dmap:20:crypto-acl-2"

        Log = TRUE

    ),

    Filter (

        Action = PASS

        ExtendedAction = ipsec< sa *= IPsecAction:dmap:10 >

        LogEventID = "IPsec:Protect:cmap:10:dmap:10:crypto-acl-1"

    )

)    

...