Списки управления доступом (Access Control List (ACL)) представляют собой набор правил-разрешений, которые могут быть применены к трафику пользователя на коммутаторе. Для большинства производителей сетевого оборудования ACL статически задаются на устройстве и привязываются к его сетевым портам.

Однако коммутаторы производства Cisco (Catalyst, Nexus) имеют возможность применения индивидуального ACL на порту коммутатора, после того, как на нём произведена авторизация доступа эндпоинта. Более того, содержимое этого ACL динамически загружается с сервера авторизации по протоколу RADIUS. При загрузке ACL с сервера авторизации имеется возможность на уровне системы авторизации определить, каким группам эндпоинтов назначить различные уровни доступа, ограниченные при помощи ACL.

Начиная с версии 1.6.3544 (06.07.2023) система WNAM поддерживает:

  • создание и редактирование загружаемых ACL;
  • назначение заданного загружаемого ACL в профиле авторизации;
  • выдачу коммутатору по запросу требуемого ACL без ограничения на его длину.

Начиная с версии 1.6.3749 (07.11.2023) система WNAM поддерживает ACL форматов Huawei и Eltex 

Для того, чтобы создать списки, необходимо перейти в раздел "Конфигурация" → "Загружаемые ACL", где можно сформировать список управления доступом или просмотреть уже загруженные списки.

Для создания нового списка необходимо нажать кнопку "Создать новый".

Выбрать вендора оборудования, к которому список доступа будет применим.

Заполнить соответствующие поля (наименование и элементы списка). 

При заполнении полей в форме следует учитывать правила:

  • имя загружаемого списка должно содержать только английские буквы, цифры, дефис;
  • правила в ACL указываются без номеров, без дополнительных пробелов и в формате вендора

Внимание! WNAM не проверяет корректность введенного ACL. Обратитесь к документации вашего вендора, в каком формате список доступа должен быть сформирован.

WNAM поддерживает следующие форматы списков:

  • Cisco: ACS:CiscoSecure-Defined-ACL, передаётся только имя списка, сам список будет загружен коммутатором дополнительными запросами
  • Eltex: набор атрибутов Eltex-Data-Filter, построчно кодирующих список. Документация вендора.
  • Huawei: набор атрибутов HW-Data-Filter, построчно кодирующих список. Документация вендора.

После заполнения всех полей необходимо нажать кнопку "Сохранить". После сохранения список будет отображен в перечне загруженных ACL.

Созданный ACL можно применить в настройке требуемого правила авторизации.

При подключении эндпоинта к порту ЛВС, если произойдет срабатывание соответствующего правила, имя ACL будет передано в атрибутах:

16:32:51.750 TRACE [ASession.java:143] - log [60] authorization - final result: Accept with policy 'Wired LAB'
16:32:51.751 TRACE [ASession.java:143] - log [61] authorization - add attribute: dACL Name='ACS:CiscoSecure-Defined-ACL=#ACSACL#-IP-acl-test-1892b67bee9', lines: {}6
16:32:51.755 TRACE [ASession.java:143] - log [62] createMacCustomer - create customer entry, MAC=CC:9D:A2:27:C6:80
16:32:51.757 TRACE [ASession.java:143] - log [63] portinfo - NAS '172.16.130.38 c2960 All Locations#All WNAM Loc Group' port GigabitEthernet0/1 updated
16:32:51.759 TRACE [ASession.java:143] - log [64] radius - send RADIUS ACCEPT with 1 attributes
16:32:51.759 TRACE [ASession.java:143] - log [65] radius - attribute: cisco-avpair = ACS:CiscoSecure-Defined-ACL=#ACSACL#-IP-acl-test-1892b67bee9

При этом коммутатор типа Cisco повторно запросит содержимое этого ACL (если таковой не был загружен ранее) и получит его:

16:32:51.810 INFO [WnamRadiusService.java:528] - handleRadiusPacket AUTH as=172.16.130.38, secret_len=6, attrs=[NAS-IP-Address: 172.16.130.38, User-Name: #ACSACL#-IP-acl-test-1892b67bee9, Vendor-Specific: Cisco[9] Cisco-AVPair: aaa:service=ip_admission, Vendor-Specific: Cisco[9] Cisco-AVPair: aaa:event=acl-download, Message-Authenticator: 0x264a30f4d2549a263d896be6e4af328e]
16:32:51.812 DEBUG [A12Service.java:2547] - sendDownloadableACL for #ACSACL#-IP-acl-test-1892b67bee9, Thu Jul 06 16:32:46 MSK 2023, dacl='acl-test'
16:32:51.813 DEBUG [A12Service.java:2560] - sendDownloadableACL added 6 rules, return all once

На стороне коммутатора загрузка ACL будет выглядеть следующим образом:

*Mar 12 05:36:06.506: %MAB-5-SUCCESS: Authentication successful for client (cc9d.a227.c680) on Interface Gi0/1 AuditSessionID AC108226000000E339D9AB43
*Mar 12 05:36:06.506: %AUTHMGR-7-RESULT: Authentication result 'success' from 'mab' for client (cc9d.a227.c680) on Interface Gi0/1 AuditSessionID AC108226000000E339D9AB43
*Mar 12 05:36:06.548: RADIUS/ENCODE: Best Local IP-Address 172.16.130.38 for Radius-Server 172.16.130.5
*Mar 12 05:36:06.548: RADIUS(00000000): Send Access-Request to 172.16.130.5:1812 id 1645/63, len 140
*Mar 12 05:36:06.548: RADIUS: authenticator 1E 97 74 8F C6 29 59 7D - 8C 11 A6 F1 79 FC 57 CC
*Mar 12 05:36:06.548: RADIUS: NAS-IP-Address [4] 6 172.16.130.38
*Mar 12 05:36:06.548: RADIUS: User-Name [1] 34 "#ACSACL#-IP-acl-test-1892b67bee9"
*Mar 12 05:36:06.548: RADIUS: Vendor, Cisco [26] 32
*Mar 12 05:36:06.548: RADIUS: Cisco AVpair [1] 26 "aaa:service=ip_admission"
*Mar 12 05:36:06.548: RADIUS: Vendor, Cisco [26] 30
*Mar 12 05:36:06.548: RADIUS: Cisco AVpair [1] 24 "aaa:event=acl-download"
*Mar 12 05:36:06.548: RADIUS: Message-Authenticato[80] 18
*Mar 12 05:36:06.548: RADIUS(00000000): Sending a IPv4 Radius Packet
*Mar 12 05:36:06.548: RADIUS(00000000): Started 5 sec timeout
*Mar 12 05:36:06.557: RADIUS: Received from id 1645/63 172.16.130.5:1812, Access-Accept, len 304
*Mar 12 05:36:06.565: RADIUS: authenticator E7 F4 F3 66 48 9C 3A 21 - EB 91 D1 46 2F 2B 71 95
*Mar 12 05:36:06.565: RADIUS: Vendor, Cisco [26] 51
*Mar 12 05:36:06.565: RADIUS: Cisco AVpair [1] 45 "ip:inacl#10=deny icmp any 1.1.1.0 0.0.0.255"
*Mar 12 05:36:06.565: RADIUS: Vendor, Cisco [26] 51
*Mar 12 05:36:06.565: RADIUS: Cisco AVpair [1] 45 "ip:inacl#20=deny icmp any 1.1.2.0 0.0.0.255"
*Mar 12 05:36:06.565: RADIUS: Vendor, Cisco [26] 51
*Mar 12 05:36:06.565: RADIUS: Cisco AVpair [1] 45 "ip:inacl#30=deny icmp any 1.1.3.0 0.0.0.255"
*Mar 12 05:36:06.565: RADIUS: Vendor, Cisco [26] 51
*Mar 12 05:36:06.565: RADIUS: Cisco AVpair [1] 45 "ip:inacl#40=deny icmp any 1.1.4.0 0.0.0.255"
*Mar 12 05:36:06.565: RADIUS: Vendor, Cisco [26] 45
*Mar 12 05:36:06.565: RADIUS: Cisco AVpair [1] 39 "ip:inacl#50=permit tcp any any eq 443"
*Mar 12 05:36:06.565: RADIUS: Vendor, Cisco [26] 35
*Mar 12 05:36:06.565: RADIUS: Cisco AVpair [1] 29 "ip:inacl#60=deny ip any any"
*Mar 12 05:36:06.565: RADIUS(00000000): Received from id 1645/63
*Mar 12 05:36:06.850: %AUTHMGR-5-SUCCESS: Authorization succeeded for client (cc9d.a227.c680) on Interface Gi0/1 AuditSessionID AC108226000000E339D9AB43

do sh ip access-lists

Extended IP access list xACSACLx-IP-acl-test-1892b67bee9 (per-user)
10 deny icmp any 1.1.1.0 0.0.0.255
20 deny icmp any 1.1.2.0 0.0.0.255
30 deny icmp any 1.1.3.0 0.0.0.255
40 deny icmp any 1.1.4.0 0.0.0.255
50 permit tcp any any eq 443
60 deny ip any any

Если размер загружаемого ACL велик (больше килобайта), при его отправке коммутатору список разбивается на несколько RADIUS-пакетов.

Коммутаторы других типов (не Cisco) получают ACL непосредственно в ответе, без разбивки данных. Так как, размер RADIUS-ответа не может быть большим (больше полутора килобайт), вы не сможете передать череcчур длинный ACL.

При написании правил в них вы можете воспользоваться макросами: $mac, $mac_lower, $mac_cisco, $mac_cisco_lower, $mac_condensed, $mac_condensed_lower. Соответственно это форматы вида 01:02:03:AA:BB:CC, 0102-03AA-BBCC и 010203AABBCC, также и в нижнем регистре.

При формировании отправляемого в устройство набора RADIUS-атрибутов с правилами эти макросы будут заменены МАС-адресом подключающегося клиентского устройства, в нужном формате. Так как коммутатор Cisco применяет отдельный RADIUS-запрос для получения dACL, который не содержит признака клиента, воспользоваться подобным механизмом для него не получится. Также не получится создать макрос на основе IP-адреса, т.к. он может быть назначен только после авторизации.

Тип списка доступа, который вы указываете при его создании, в основном носит справочный характер. WNAM будет формировать корректный тип RADIUS-атрибута на основе типа сервера доступа, который произвел запрос, а не типа dACL. Таким образом, вы должны установить корректный тип (вендора) устройства при создании сервера доступа.

00.666 authorization - final result: Accept with policy 'Wired LAB'
00.668 authorization - add attribute: dACL [Huawei] Name='acl-permit-only-lan-1.1.1.1', lines: 3

Исключение составляет сервер доступа типа "LAN Switch": если ваш сервер доступа имеет такой тип, выбор формата направляемого атрибута определяется тем, что написано в свойствах dACL.


  • No labels