Для тестирования портальной авторизации с Cisco ISE использовалась ТД WOP-30LS c тестовой прошивкой 2.5.5 build 14 (задача #317673), в которой сняты ограничения на пропуск трафика на все порты при редиректе клиента на гостевой портал (в обычной прошивке доступны только порты 80, 8080, 443) и Добавлен атрибут:
Service-Type (6).
Значения следующие:
Captive Portal = Service-Type: Login (1),
802.1X = Service-Type: Framed (2),
MAC = Service-Type: Call Check (10).
Описание реализации на ТД: Портальная авторизация Cisco-like
Задача по реализации функционала: #277209
Команды для настройки внешней портальной авторизации (ссылка на инструкция: https://docs.eltex-co.ru/pages/viewpage.action?pageId=444825607#id-РуководствопоэксплуатацииWEP-30L,WEP-30L-Z-НастройкаVAPсвнешнейпортальнойавторизацией)
WEP-30L(root):/# configure
WEP-30L(config):/# interface
WEP-30L(config):/interface# wlan1-va0
WEP-30L(config):/interface/wlan1-va0# vap
WEP-30L(config):/interface/wlan1-va0/vap# vlan-id X (где X — VLAN-ID на VAP)
WEP-30L(config):/interface/wlan1-va0/vap# ap-security
WEP-30L(config):/interface/wlan1-va0/vap/ap-security# mode off (режим шифрования off — без пароля)
WEP-30L(config):/interface/wlan1-va0/vap/ap-security# exit
WEP-30L(config):/interface/wlan1-va0/vap# ssid 'Portal_WEP-30L' (изменение имени SSID)
WEP-30L(config):/interface/wlan1-va0/vap# captive-portal
WOP-30L(config):/interface/wlan1-va0/vap/captive-portal# verification-mode 'external-portal'
WEP-30L(config):/interface/wlan1-va0/vap/captive-portal# scenarios
WEP-30L(config):/interface/wlan1-va0/vap/captive-portal/scenarios# scenario-redirect
WEP-30L(config):/interface/wlan1-va0/vap/captive-portal/scenarios/scenario-redirect# redirect-url "https://X.X.X.X/<NAS_ID>/?switch_url=<SWITCH_URL>&ap_mac=<AP_MAC>&client_mac=<CLIENT_MAC>
&wlan=<SSID>&original-url=<ORIGINAL_URL>" (указать URL внешнего виртуального портала в соответствии с таблицей 9)
WEP-30L(config):/interface/wlan1-va0/vap/captive-portal/scenarios/scenario-redirect# exit
WEP-30L(config):/interface/wlan1-va0/vap/captive-portal/scenarios# exit
WEP-30L(config):/interface/wlan1-va0/vap/captive-portal# enabled true
WEP-30L(config):/interface/wlan1-va0/vap/captive-portal# exit
WEP-30L(config):/interface/wlan1-va0/vap# radius
WEP-30L(config):/interface/wlan1-va0/vap/radius# auth-address X.X.X.X (где Х.Х.Х.Х — IP-адрес RADIUS-сервера, используемого для авторизации)
WEP-30L(config):/interface/wlan1-va0/vap/radius# auth-password secret (где secret — пароль для RADIUS-сервера, используемого для авторизации)
WEP-30L(config):/interface/wlan1-va0/vap# save (сохранение настроек)
Таблица 9 — Настройка URL шаблона для внешней портальной авторизации
Параметр | Описание |
|---|---|
| <NAS_ID> | NAS ID, заданный на VAP или в system. Если не задан ни один из этих параметров, то в качестве NAS ID в RADIUS- и HTTP(S)-пакетах будет использоваться MAC-адрес ТД |
| <SWITCH_URL> | доменное имя, которое показывается клиенту при перенаправлении |
| <AP_MAC> | MAC-адрес точки доступа |
| <CLIENT_MAC> | MAC-адрес клиента |
| <SSID> | SSID |
| <ORIGINAL_URL> | URL, который изначально запрашивал клиент |
radius:
auth-port: 1812
auth-address: 100.110.0.161
auth-password: testing123
auth-acct-id-send: true
tls-enable: false
acct-enable: true
acct-port: 1813
acct-address: 100.110.0.161
acct-password: testing123
acct-periodic: false
acct-interval: 600
acct-wait-ip: false
domain: root
nas-id:
captive-portal:
enabled: true
verification-mode: external-portal
age-timeout: 1
default-white-list:
scenarios:
scenario-redirect:
name: scenario-redirect
access-type: forbid
index: 1
redirect-url: https://100.110.0.161:8443/portal/PortalSetup.action?portal=f09aaac2-f101-45ed-832f-fda201ab7639?action_url=<SWITCH_URL>&redirect=<ORIGINAL_URL>&ap_mac=<AP_MAC>
virtual-portal-name: default
auth-scenario: scenario-access
scenario-access:
name: scenario-access
access-type: allow
index: 2
deauth-scenario: scenario-redirect |

Рис.1 Процесс авторизации нового клиента(по логину и паролю)

Рис.2 Процесс авторизации зарегистрированного клиента(MAB)
Проверил возможность MAB (mac) авторизации пользователей на портале. Работает .
Cisco ISE распознает подставляемые в атрибутах User-Name (запроса access-request ) mac-адрес и по нему находит "конечную точку" в базе Endpoins (конечно после того, как пользователь зарегился и успешно аутентифицировался через портал). Проверку User-Password отключил, так-как ТД передает 'nopassword", а Cisco ISE ожидает мак-адрес. Если для кого-то из клиентов это будет критично, необходимо на ТД необходимо будет реализовать передачу в атрибуте User-Password mac-адрес клиента в таком же виде как и в атрибуте User-Name (без разделителей)
Проверил работу регистрации на гостевом портале с последующей аутентификацией и авторизацией клиента через RADIUS. Работает.
Проверил сценарий портальной авторизации согласно логики зашитой в ТД "Cisco-Like". Работает:
В котором ТД известного клиента сначала аутентифицирует через Radius по mac, затем получив access-reject, редиректит на портал cisco ISE, после регистрации пользователя на портале и получения пользователям ссылки редиректа.
Перехода клиента по данной ссылке, авторизует через Radius, по выданному порталом логину и паролю (которые портал включил в ссылку редиректа).
При отключении клиента от ТД и повторном подключении (через промежуток превышающий параметр age-timeout , указанный на ТД) или подключении к другой ТД вещающей ту же WIFI сеть, ТД авторизует клиента по mac адресу (так-как Cisco ISE уже знает клиента и занесла его mac адрес в базу EndPoints).
No. Time Source Destination Protocol Length Info 1 0.000000 100.110.0.247 100.110.0.161 RADIUS 294 Access-Request id=4 2 0.018302 100.110.0.161 100.110.0.247 RADIUS 80 Access-Reject id=4 3 277.808342 100.110.0.247 100.110.0.161 RADIUS 288 Access-Request id=5 4 277.831738 100.110.0.161 100.110.0.247 RADIUS 171 Access-Accept id=5 5 277.834463 100.110.0.247 100.110.0.161 RADIUS 255 Accounting-Request id=6 6 277.837400 100.110.0.161 100.110.0.247 RADIUS 62 Accounting-Response id=6 |
RADIUS Protocol
Code: Access-Request (1)
Packet identifier: 0x4 (4)
Length: 252
Authenticator: 4e18021cd2dbd9341c031c1a1da93a39
[The response to this request is in frame 2]
Attribute Value Pairs
AVP: t=User-Name(1) l=14 val=7898e81e6707
AVP: t=User-Password(2) l=18 val=Encrypted
AVP: t=Framed-IP-Address(8) l=6 val=0.0.0.0
AVP: t=Framed-MTU(12) l=6 val=1500
AVP: t=Connect-Info(77) l=23 val=CONNECT 0Mbps 802.11a
AVP: t=Vendor-Specific(26) l=12 vnd=Eltex Enterprise, Ltd.(35265)
AVP: t=Vendor-Specific(26) l=12 vnd=Eltex Enterprise, Ltd.(35265)
AVP: t=Called-Station-Id(30) l=36 val=68-13-e2-c2-19-70:F.E.-ciscoPortal
AVP: t=Calling-Station-Id(31) l=19 val=78-98-e8-1e-67-07
AVP: t=NAS-Port(5) l=6 val=1
AVP: t=Framed-MTU(12) l=6 val=1500
AVP: t=NAS-Port-Type(61) l=6 val=Wireless-802.11(19)
AVP: t=Acct-Session-Id(44) l=19 val=55DCB7FF-5C1BC61C
AVP: t=NAS-IP-Address(4) l=6 val=100.110.0.247
AVP: t=NAS-Identifier(32) l=19 val=68-13-E2-C2-19-70
AVP: t=Service-Type(6) l=6 val=Call-Check(10)
AVP: t=Message-Authenticator(80) l=18 val=30928a538a67ca2122338fdee7b8aefd |
RADIUS Protocol
Code: Access-Request (1)
Packet identifier: 0x5 (5)
Length: 246
Authenticator: 5a35575eaedd8bb898325efc8d3c4ea4
[The response to this request is in frame 4]
Attribute Value Pairs
AVP: t=User-Name(1) l=8 val=tester
AVP: t=User-Password(2) l=18 val=Encrypted
AVP: t=Framed-IP-Address(8) l=6 val=100.110.1.11
AVP: t=Framed-MTU(12) l=6 val=1500
AVP: t=Connect-Info(77) l=23 val=CONNECT 0Mbps 802.11a
AVP: t=Vendor-Specific(26) l=12 vnd=Eltex Enterprise, Ltd.(35265)
AVP: t=Vendor-Specific(26) l=12 vnd=Eltex Enterprise, Ltd.(35265)
AVP: t=Called-Station-Id(30) l=36 val=68-13-e2-c2-19-70:F.E.-ciscoPortal
AVP: t=Calling-Station-Id(31) l=19 val=78-98-e8-1e-67-07
AVP: t=NAS-Port(5) l=6 val=1
AVP: t=Framed-MTU(12) l=6 val=1500
AVP: t=NAS-Port-Type(61) l=6 val=Wireless-802.11(19)
AVP: t=Acct-Session-Id(44) l=19 val=55DCB7FF-5C1BC61C
AVP: t=NAS-IP-Address(4) l=6 val=100.110.0.247
AVP: t=NAS-Identifier(32) l=19 val=68-13-E2-C2-19-70
AVP: t=Service-Type(6) l=6 val=Login(1)
AVP: t=Message-Authenticator(80) l=18 val=a646b2d8ff46c444a222236da8a7e800 |
Dump файл Radius обмена ТД и Cisco ISE
Для более продвинутых сценариев гостевого доступа, необходимо так-же реализовать:
В задаче #308897 идет проработка требований для реализации сценариев Норникеля, для реализации которых так-же потребуется доработка передачи, приема и обработка атрибутов radius и CoA.
Создаем Network Device Profile. В нашем случае Eltex
Настраиваем созданный профайл "Eltex". Указываем протокол взаимодействия - Radius. В параметрах указываем атрибуты радиус по которым ISE будет определять типы Authentication/Authorization. Для этого настраиваем Flow Type Conditions:
Wireless MAB detected
Wireless Web Authentication detected
Так-как для всех Wireless подключений атрибут идентификации Radius:NAS-Port-Type будет одинаков Wireless - IEEE 802.11, для:
Wireless MAB detected добавляем еще один атрибут Radius:Service-Type со значением Call Check
Wireless Web Authentication detected добавляем еще один атрибут Radius:Service-Type со значением Login
Так-же в "Host Lookup (MAB)" включаем Process Host Lookup, включаем используемый ТД протокол обмена подтверждениями, в нашем случае отключаем это Via PAP/ASCII и отключаем Check Password, так-как ТД при mac авторизации передает в виде логина mac клиента, а в виде пароля nopassword. А Cisco ISE ожидает в поле пароля так-же мак адрес
Создаем новый профиль сетевых устройств, в нашем случае "Eltex-AP"
Настраиваем взаимодействие с ТД по протоколу Radius. Можно указать подсеть ТД (в нашем случает это одна ТД и подсеть 100.110.0.247/32), в поле Device Profile выбираем ранее созданный профайл Eltex. Так-же необходимо указать secret key для протокола Radius, ранее настроенный на ТД
Можно создать группу встроенных гостевых учетных записей, в нашем случае это Eltex-AP_testUsers и в этой группе создать учетные записи, в нашем случае это Gena и tester, задать им логин и пароль
Настраиваем последовательность действий для гостевого портала (Guest Portal Sequence). Переходим в настройки Work Centers > Guest Access > Identities > Identity Source Sequence > Guest Portal Sequence - это предустановленная последовательность аутентификации гостевых пользователей. И в поле Authentication Search List выбираем порядок аутентификации пользователей. В нашем случае порядок как на скрине ниже: Internal Endpoints (MAB) → Internal Users (встроенные учетки) → Guest Users (учетки созданные пользователем самостоятельно на гостевом портале)
Создаем правило с разрешенными протоколами, в нашем случае MAB-WIFI_Eltex, в нем разрешаем Authentication Bypass>Process Host Lookup и Authentication Protocols>Allow PAP/ASCII
Настройка Authorization Profiles. На вкладке Work Centers > Guest Access > Policy Elements > Results > Authorization Profiles > Add создаем профиль авторизации под ранее созданный Network Device Profile. В данный сценарий можно включать параметры авторизации клиента, такие как CVLAN, ACL, shaper и т.п. через добавления различных атрибутов (который поддерживают или будут поддерживать ТД Eltex)
Настройка Policy Sets. На вкладке Work Centers > Guest Access > Policy Sets создаем политику доступа для WiFi пользователей. В нашем случае с названием Eltex-WIFI_Guest-Portal
В эту политику попадают клиенты приходящие с SSID "F.E.-ciscoPortal" и Flow Type Conditions соответствуют Wireless_MAB или WLC_WEB_Authentication
Настраиваем в данной политике правила аутентификации и авторизации.
В правиле аутентификации первым пунктам идет проверка пользователя по логину и паролю в базе Internal Users, вторым пунктам, если не сработал пункт один, проверяется mac адрес в базе EndPoints (MAB).
В правиле авторизации сначала проверяется пользователь по логину и паролю в базе Internal Users, вторым пунктам, если не сработал пункт один, проверяется mac адрес в базе EndPoints (MAB) и в обоих случаях, в нашем случае при успешной проверке навешивается действие PermitAccess, но можно навесить созданное ранее Eltex-AP_guest (что в принципе одно и тоже, только добавляется еще один уровень абстракции) или более сложное в плане секьюрности действие.
Настраиваем гостевой портал. В нашем случае настроено как на скриншоте (настройки довольно понятные и в основном касаются оформления страницы, запрашиваемых данных пользователя и пользовательских соглашений)
Адрес портала для настройки ссылки редиректа на ТД, можно получить по ссылке
Radius live log, неизвестного клиента
Первая запись журнала, о том что клиент не смог пройти MAB аутентификацию, так-как клиент еще прошел регистрацию на портале.
Вторая запись. О том что клиент не прошел динамическую авторизацию. ТД в данный момент не поддерживает CoA и данный способ не настраивался и не использовался.
Третья запись. О том что гость аутентифицировался на портале (после регистрации)
Четвертая запись. О том что пользователь успешно аутентифицировался и авторизовался через Radius по логину и паролю
Radius live log зарегистрированного клиента, по MAB (повторное после отключения от ТД или отключение и подключение к другой ТД)
Запись о том, что клиент успешно прошел MAB аутентификацию и авторизацию через RAdius (Cisco ISE занесла мак клиента в базу EndPoints, при аутентификации пользователя на портале)
Следующая запись. Аккаунтинг пользователя
Настройка Windows server для выполнения ролей AD + CS, создание пользователя, создания шаблона сертификата, настройка групповой политики автоматической выдачи сертификатов пользователям AD, настройка суппликанта Windows, хорошо описано в доке v1.31_Настройка взаимодействия SoftWLC с Microsoft Active Directory (AD) и Certificate Services (CS)
Надо импортировать в Cisco ISE корневой сертификат AD-CA
Для этого надо в терминале Windows сервера экспортировать корневой сертификат AD-CA, командой:
certutil -ca.cert ROOT-CA_test.loc.cer |
Импортируем корневой сертификат в доверенные сертификаты Cisco ISE

Генерируем CSR и скачиваем себе на комп

Выпускаем подписанный промежуточный сертификат для Cisco ISE, загрузив CSR на сервер и выполнив терминале команду
certreq.exe -submit -attrib "CertificateTemplate:SubCA" .\isetestMultiUse.pem |
Скачиваем подписанный сертификат и добавляем его в Cisco ISE, выбираем сферы применения данного сертификата. В нашем случае выбрана только EAP-TLS авторизация, но можно применить данный сертификат, для админки, для гостевого портала, для Radius и pxGrid

Добавляем для Flow Type Conditions определение: Wireless 802.1x detected по атрибуту Radius:NAS-Port-Type значению Wireless - IEEE 802.11 и атрибуту Radius:Service-Type значению Framed
Добавляем в разрешенные протоколы: Allow EAP-TLS
Добавляем политику аутентификации-авторизации, в нашем случае Eltex-WIFI_dotx_TLS
Настраиваем политику аутентификации, в нашем случае использовать Preloaded_Certificate_Profile и политику авторизации, в нашем случае если это EAP-TLS, то просто PermitAccess 

Дампы EAPOL обмена и Radius обмена
dump-ise-eapol_TLS.pcap dump-ise-radius_TLS.pcap
Так-же EAP-Chaining будет работать и в случае EAP-FAST, но это подразумевает использование Cisco AnyConnect, в качестве суппликанта.
Настройка WOP-30LS c тестовой прошивкой 2.5.5 build 14 (задача #317673), в которой реализована передача Radius атрибута Service-Type, происходит как для обычной Enterprise авторизации Настройка VAP с Enterprise-авторизацией
Следующим шагом будет публикация вновь созданных шаблонов сертификатов, как показано ниже. Как только мы добавим сертификаты, они станут доступны для регистрации.
Далее используем групповую политику для автоматической регистрации сертификатов компьютера и пользователя и развертывания их на рабочих станциях.
Как только все настройки будут выполнены,можно либо перезагрузить компьютер пользователя, либо принудительно обновить объект групповой политики, запустив gpupdate /force в командной строке, чтобы получить сертификаты. Можно просмотреть сертификаты в консоли MMC (certlm.msc). На скринах ниже представлены как пользовательский, так и машинный сертификаты.

В данном разделе описываются только настройки индивидуальные для авторизации EAP-TEAP, остальные настройки (привязка ТД, генерация и привязка сертификатов AD-CS) идентичны настройкам Гостевого портала и EAP-TLS
Настраиваем 'Preloaded_Certificate_Profile' Administration > Identity Management > External Identity Sources > Certificate Authentication Profile
Для идентификации сертификатов ('Use Identity From'), необходимо выбрать 'Subject Alternative Name' в качестве 'Certificate Attribute' или переключиться на 'Any Subject or Alternative Name Attributes in the Certificate (for Active Directory Only)', иначе не будет работать авторизация по машинному сертификату.

Так-как ISE по умолчанию идентифицирует сертификат по атрибуту Subject (Субъект). В машинном сертификате, в поле 'Субъект' отсутствуют значения, в отличие от пользовательского сертификата. 
Настраиваем 'Allowed Protocols' редактируя дефолтную политику 'Default Network Access' или создавая свою и редактируя ее. Необходимо включить 'Allow EAP-TLS' и EAP-TEAP выбрав пункты как на скрине ниже (обязательно включив 'Enable EAP Chaining')

Создаем политику аутентификации-авторизации в Policy Sets. В нашем случае политику 'Eltex-WIFI_dotx_TEAP', с фильтром по SSID (который вычитывается из Radius атрибута 'Called-Station-Id' и фильтра 'Smart Conditions')

Фильтр 'Smart Conditions', который задавали ранее в 'Network Device Profiles' для 'Wireless 802.1x detected'
Создаем профайл 'Eltex-cert_Machine-Only' для авторизации только по машинному сертификату, когда пользователь залогинился под локальной учетной записью и для аутентификации доступен только машинный сертификат.

Правило настроенное в данном профайле подразумевает (при совпадении условий авторизации) передачу Radius пакета 'Access_Accept' и Radius атрибута 'Radius:Tunnel-Private-Group-ID' со значением 4000, для помещения пользователя в CVLAN 4000 (в терминологии Cisco динамический VLAN). Так-же можно в данном правиле навешивать ACL ( именной или динамический) через другие атрибуты Radius (пока ТД Eltex не поддерживают). И другие политики которые поддерживают контроллер или ТД.
Настраиваем созданную политику 'Eltex-WIFI_dotx_TEAP' (как на скрине). Для аутентификации используем дефолтное правило с ранее отредактированным профилем 'Preloaded_Certificate_Profile'
Для авторизации создаем два правила. Одно 'Machine and User' для пользователей с обоими сертификатами (машинным и пользовательским), второе 'Machine Only' для пользователей вошедших на под локальной учетной записью и располагающие только машинным сертификатом. Для данного правила применяем политику 'Eltex-cert_Machine-Only', для присвоению пользователю CVLAN (ограниченный доступ).
Правило по дефолту остается, для тех кто не располагает сертификатами.




Переходим в 'Параметры' и выбираем выданный AD-CS сертификат. В разделе 'Проверка подлинности клиента' в качестве основного и дополнительного методов выбираем 'Microsoft: смарт-карта или иной сертификат'

и поочереди настраиваем их как на скринах ниже (выбирая сертификат выданный AD-CS)
Подтверждаем и закрываем настройки
Авторизация по обоим сертификатам, машинному и пользовательскому (полный доступ). Пользователь вошел в систему под доменной учетной записью.


Авторизация только по машинному сертификату. Пользователь вошел в систему под локальной учетной записью.


Дампы EAPOL обмена и Radius обмена
dump-ise-eapol_teap-cert_all.pcap dump-ise-eapol_teap-cert_machine-only.pcap
dump-ise-radius-teap-cert_all.pcap dump-ise-radius_teap-cert_machine-only.pcap
Начиная с версии WNAM 1.6.4010 доступно взаимодействие системы авторизации с аппаратным контроллером WLC (WLC-15/30/3200)
Данная статья служит для целей настройки взаимодействия NAC системы WNAM и BRAS WLC Eltex. Настраиваться будет Гостевой портал с авторизацией по коду Ваучера. Другие способы гостевой авторизации выходят за рамки данной статьи, так-как взаимодействие между WNAM и BRAS WLC Eltex не изменяется. При возникновении трудностей с другими видами гостевой авторизации необходимо обратиться к разработчику WNAM.
В нашем сценарии контроллер построен на основе маршрутизатора ESR, который выполняет не только функции управления точками доступа, но и выполняет роль сервисного маршрутизатора, обеспечивая также фильтрацию трафика, DHCP, NAT. Контроллер должен иметь установленную лицензию на BRAS. Подключение беспроводных сетей (SSID) к контроллеру возможно как по L2 с помощью VLAN (trunk port, sub interface), так и с помощью SoftGRE поверх L3. Работа функции хотспота в режиме Local switching не поддерживается.
Для понимания работы BRAS в WLC можно ознакомиться с документацией по взаимодействию BRAS ESR и гостевым порталом SWLC, по ссылкам: BRAS L3, BRAS L2, Troubleshooting
Описанный ниже сценарий предполагает, что вы предварительно полностью протестировали настройку контроллера и беспроводной сети в открытом режиме (без авторизации), и все сетевые сервисы подключающихся беспроводных клиентов успешно функционируют.
Контроллер имеет адрес 100.110.0246
Сервер авторизации WNAM имеет адрес 100.110.1.44
Клиенты получают адреса, и работают в сети VLAN 4 ( softgre 1.4 ) , адресация 192.168.3.0/24
Сервис для доступа в Интернет имеет имя INTERNET
Файл дампа RADIUS обмена radius_wnam.pcap
Настройка правил для Firewall:
object-group service airtune
port-range 8099
exit
object-group service dhcp_client
port-range 68
exit
object-group service dhcp_server
port-range 67
exit
object-group service dns
port-range 53
exit
object-group service netconf
port-range 830
exit
object-group service ntp
port-range 123
exit
object-group service radius_auth
port-range 1812
exit
object-group service sa
port-range 8043-8044
exit
object-group service ssh
port-range 22
exit
object-group service http
port-range 80
exit
object-group network wnam_servers
ip address-range 100.110.1.44
exit
object-group network bras_users
ip address-range 192.168.3.20-192.168.3.250
exit
object-group url defaultService
url http://100.110.1.44
exit
Настройка ACL:
ip access-list extended BYPASS
rule 10
action permit
match protocol udp
match source-port 68
match destination-port 67
enable
exit
rule 11
action permit
match protocol udp
match destination-port 53
enable
exit
exit
ip access-list extended WELCOME
rule 10
action permit
match protocol tcp
match destination-port 443
enable
exit
rule 30
action permit
match protocol tcp
match destination-port 80
enable
exit
exit
ip access-list extended INTERNET
rule 10
action permit
enable
exit
exit
Настройка функции BRAS:
subscriber-control
aaa das-profile bras_das
aaa sessions-radius-profile bras_radius
aaa services-radius-profile bras_radius
nas-ip-address 100.110.0.246
session mac-authentication
bypass-traffic-acl BYPASS
default-service
class-map BYPASS
filter-name local defaultService
filter-action permit
default-action redirect http://100.110.1.44/cp/eltexwlc #Данный адрес зашит в WNAM, для связки с BRAS-WLC Eltex
session-timeout 600
exit
enable
exit
Настройки RADIUS-сервера
radius-server local
nas ap
key ascii-text encrypted 8CB5107EA7005AFF
network 192.168.1.0/24
exit
nas local
key ascii-text encrypted 8CB5107EA7005AFF
network 127.0.0.1/32
exit
domain default
exit
virtual-server default
enable
exit
enable
exit
radius-server host 100.110.1.44
key ascii-text encrypted 88B11079B9014FAAF7B9
source-address 100.110.0.246
exit
radius-server host 127.0.0.1
key ascii-text encrypted 8CB5107EA7005AFF
exit
aaa radius-profile bras_radius
radius-server host 100.110.1.44
exit
aaa radius-profile default_radius
radius-server host 127.0.0.1
exit
das-server das
key ascii-text encrypted 88B11079B9014FAAF7B9
port 3799
clients object-group wnam_servers
exit
aaa das-profile bras_das
das-server das
exit
Настройка клиентского бриджа:
bridge 4
description "SoftGRE_or_L2-BRAS"
vlan 4
security-zone users
ip firewall disable
ip address 192.168.3.1/24
service-subscriber-control object-group bras_users
location data10
protected-ports local
no spanning-tree
enable
exit
Полная конфигурация контроллера приведена в приложенном файле: wlc30_bras-wnam_hospot
На стороне системы авторизации создаётся объект Сервер доступа (тип: Eltex), указывается RADIUS-ключ, а также дополнительные параметры RADIUS:
Конфигурация → Сервера доступа → Создать сервер
В закладке Параметры заполняем поля IP адрес и Внешний IP адрес (адрес вашего WLC, смотрящий в сторону WNAM), Имя устройства и Местоположение (произвольно)

В закладке RADIUS в поле 'Атрибуты CoA / пост-авторизации' вставляем следующие атрибуты
Cisco-AVPair=subscriber:command=account-loggon
Idle-Timeout=1200
Acct-Interim-Interval=300
Cisco-AVPair=subscriber:vrf=1
Далее создаем площадку, к которой у нас будет привязана страница гостевого портала.
Конфигурация → Площадки → Создать площадку.
В поле 'Тип' выбираем 'Площадка', в поле 'Разрешенный сервер доступа' выбираем созданный ранее сервер. В поле 'Присвоенная IP подсеть или МАС точек доступа' указываем наш пул IP для пользователей портала (который настроили на WLC). Так через привязку пулов IP, можно привязать разные Площадки с разными порталами авторизации, трафик абонентов которых терминируется на одном WLC (Разрешенный сервер соответственно на разных площадках будет один и тот же).
Выбираем созданную площадку и на вкладке 'Авторизация' выбираем 'Метод' 'Ввод кода с ваучера', выбираем сколько будет действовать данная авторизация и 'Имя страницы' 'Ваучер (по умолчанию)'. Данных настроек достаточно для работы Гостевого портала с авторизацией по коду из Ваучера.
Настройка других способов авторизации выходит за рамки данной статьи.
Создаем ваучеры для авторизации. 'Конфигурация' → 'Гостевая авторизация' → 'Ваучеры' → 'Создать группу ваучеров' 
В дальнейшем коды данных ваучеров будут использоваться для авторизации клиентов на гостевом портале.
Создаем правила аутентификации:
Создаем правило для редиректа на гостевой портал (копируем дефолтное правило редиректа и модифицируем его)
Настраиваем правило как на скрине ниже. Источник запроса выбираем проводной (так-как брас у нас находится на проводном интерфейсе). Во 'Входящий радиус атрибут' выбираем по имени 'NAS-Port-ID' равным тому 'location' который указали в настройках Bridge на WLC, на который терминируется клиентский трафик. Так мы привяжем данное правило к нашему SSID с гостевым доступом. Если у вас много правил и используется много разных политик аутентификаций и авторизаций клиентов, данное правило можно кастомизировать дополнительными параметрами, под свои потребности.
Правило аутентификации привязывается к правилу авторизации при помощи тега (в самом низу скрина). Обратите внимание, чтоб тэг бэл уникальным и совпадал с соответствующим правилом авторизации (если сработало правило аутентификации, далее по данному тегу запускается соответствующее правило авторизации)
Создаем правило аутентификации для доступа клиента в Internet
Настраиваем как на скрине, источник запроса и Входящий RADIUS атрибут настраиваем так-же как в правиле для редиректа (объяснение выше). Так-же обращаю внимание на необходимости уникальности тега (объяснение выше)
Создаем правила авторизации:
Первое правило для редиректа на портал. Результатом должно стать отправки пакета Radius 'Access-Reject' брасу.
Настраиваем как на скрине ниже.
Внимание. Правило привязывается по совпадению тега (должен быть такой же как в правиле аутентификации)

Второе правило для предоставления доступа в Internet. Результатом должно стать: отправка пакета Radius 'Access-Accept' брасу. В котором будет содержаться атрибут с указанием наименования сервиса доступного абоненту. Настраиваем как на скрине ниже.
Для этого в 'Применить' в 'RADIUS атрибуты' необходимо прописать атрибут назначающий сессии клиента сервис доступа INTERNET.
Cisco-Account-Info=AINTERNET

Контроллер в ходе авторизации запрашивает параметры сервиса INTERNET в пакете 'Access-Request', и WNAM автоматически отдаёт их в пакете 'Access-Accept' в атрибуте 'Cisco-AVPair' со значением 'subscriber:traffic-class=INTERNET' (зашито в логику взаимодействия с оборудованием Eltex, не требует дополнительной настройки).
Можно посмотреть логи работы правил авторизации: 'Диагностика' → 'Корпоративные подключения'

1: fillFromRadiusAttributes - identity: '78:98:E8:1E:67:07', portType: EthernetMAB 2: fillFromRadiusAttributes - mac: '78:98:E8:1E:67:07' 3: fillFromRadiusAttributes - password: present in request 4: fillFromRadiusAttributes - nas: 'WLC-30 [F.E.]', ip: 100.110.0.246, id: 6614c699fd772e622ebb0689, vendor: ELTEX [enabled] 5: fillFromRadiusAttributes - nas: IP address: 100.110.0.246, identifier: 'null', port: 'location data10' 6: fillFromRadiusAttributes - site: 'test', id: new [enabled] 7: fillFromRadiusAttributes - session id: '3098476543630901255' 8: radius - received 8 attributes in the request: Cisco-AVPair-subscriber:vrf = 1 User-Name = 78:98:E8:1E:67:07 Cisco-AVPair-subscriber:CELL = d998075724dc24029b359a8db24682a0 User-Password = (password length: 8) NAS-IP-Address = 100.110.0.246 Cisco-AVPair-subscriber:l2-interface = softgre 1.4 Acct-Session-Id = 3098476543630901255 NAS-Port-Id = location data10 9: filterForPapMacMethod - checkMABPassword: matched captiveportal_pass for 'Редирект для гостевого Wi-Fi tester' 10: authentication - a1profiles candidates: 1 with preliminary processing result: RadiusResponse [state=OK, attributes=[]] 11: authentication - final result: Redirect with policy 'Редирект для гостевого Wi-Fi tester' and tag 'guest-wifi-redirect' 12: authorization - guest redirect 13: radius - send RADIUS REJECT, reason: This will instruct Wi-Fi controller to execute redirect action |
1: fillFromRadiusAttributes - identity: '78:98:E8:1E:67:07', portType: EthernetMAB 2: fillFromRadiusAttributes - mac: '78:98:E8:1E:67:07' 3: fillFromRadiusAttributes - password: present in request 4: fillFromRadiusAttributes - nas: 'WLC-30 [F.E.]', ip: 100.110.0.246, id: 6614c699fd772e622ebb0689, vendor: ELTEX [enabled] 5: fillFromRadiusAttributes - nas: IP address: 100.110.0.246, identifier: 'null', port: 'location data10' 6: fillFromRadiusAttributes - site: 'test', id: new [enabled] 7: fillFromRadiusAttributes - session id: '3098476543630901255' 8: radius - received 8 attributes in the request: Cisco-AVPair-subscriber:vrf = 1 User-Name = 78:98:E8:1E:67:07 Cisco-AVPair-subscriber:CELL = d998075724dc24029b359a8db24682a0 User-Password = (password length: 8) NAS-IP-Address = 100.110.0.246 Cisco-AVPair-subscriber:l2-interface = softgre 1.4 Acct-Session-Id = 3098476543630901255 NAS-Port-Id = location data10 9: filterForPapMacMethod - checkMABPassword: matched captiveportal_pass for 'Доступ для гостевого Wi-Fi tester' 10: authentication - a1profiles candidates: 1 with preliminary processing result: RadiusResponse [state=OK, attributes=[]] 11: authentication - final result: Allow with policy 'Доступ для гостевого Wi-Fi tester' and tag 'guest-wifi-permit' 12: authorization - a2profiles candidates: 7 13: authorization - final result: Accept with policy 'Доступ для гостевого Wi-Fi' 14: radius - send RADIUS ACCEPT with 1 attributes 15: radius - attribute: Cisco-Account-Info = AINTERNET 16: addIP - Set IP address 192.168.3.21 on Accounting message (session 3098476543630901255) |
Посмотреть информацию об использовании ваучеров. 'Конфигурация' → 'Гостевая авторизация' → 'Ваучеры'. Выбрать нужную группу.
Посмотреть информацию по клиенту (авторизации, сессии и тд)
F.E.wlc-30# sh subscriber-control sessions status Session id User name IP address MAC address Interface Domain -------------------- --------------- --------------- ----------------- -------------------- --------------- 3098476543630901251 78:98:E8:1E:67: 192.168.3.21 78:98:e8:1e:67:07 softgre 1.4 -- 07 F.E.wlc-30# sh subscriber-control services counters session-id 3098476543630901251 Service id Service name Recv packets Recv bytes Send packets Send bytes -------------------- --------------- -------------- -------------- -------------- -------------- 3134505340649865218 A INTERNET 4559 3868861 3842 692224 F.E.wlc-30# sh wlc clients MAC User MAC AP Hostname AP SSID RSSI AP-Location Username ----------------- ----------------- ------------------------------ --------------- ------- ----------------- ----------------- 78:98:e8:1e:67:07 68:13:e2:02:ea:20 WEP-3ax F.E.freeSSID -35 default-location -- |
11:33:41.702 DEBUG [EltexWlcService.java:196] - CP ELTEX WLC clicked: username=78:98:E8:1E:67:07, ip=192.168.3.21, server=100.110.0.246, sessionId=3098476543630901255, dst='http://www.msftconnecttest.com/redirect' 11:33:41.716 DEBUG [PageGenerator.java:713] - processAuthRequest ELTEXWLC: username=78:98:E8:1E:67:07, ip=192.168.3.21, server=100.110.0.246, site_id=new, domain_id=3098476543630901255, dst='http://www.msftconnecttest.com/redirect' adv curr/max=1/1 11:33:41.719 DEBUG [PageGenerator.java:1300] - captive portal redirected to VOUCHER page, username=78:98:E8:1E:67:07, cust=new, form='6614c99dfd772e622ebb06a7' 11:34:13.380 DEBUG [VoucherHandler.java:52] - postVoucher CODE='V3U5', FORM=6614c99dfd772e622ebb06a7, MAC=78:98:E8:1E:67:07, IP=192.168.3.21, site_id=new, name=78:98:E8:1E:67:07 11:34:13.382 DEBUG [VoucherHandler.java:62] - find_voucher: 66b34731933c505a427dad16, code=V3U5, status=Не активирован 11:34:13.395 DEBUG [VoucherHandler.java:125] - postVoucher OK CODE='V3U5', voucher='Группа: WNAM-WLC_01, владелец: admin', vg='WNAM-WLC_01' 11:34:13.399 DEBUG [PageGenerator.java:390] - processRedirectRequestCi mac=78:98:E8:1E:67:07, method=ORIGINAL, formName=, redirectUrl=null, key=b04fb14d-36fb-4c30-a886-bfbab119088c 11:34:13.401 DEBUG [PageGenerator.java:849] - loginAtNasCi ELTEXWLC mac=78:98:E8:1E:67:07, ip=192.168.3.21, server=100.110.0.246, dst='http://www.msftconnecttest.com/redirect' 11:34:13.406 DEBUG [EltexWlcService.java:66] - backToEltexWLC login server='100.110.0.246', user=78:98:E8:1E:67:07, password=password, dst='http://www.msftconnecttest.co...' 11:34:13.407 DEBUG [EltexWlcService.java:85] - open EltexWLC access REQ for IP=192.168.3.21, MAC=78:98:E8:1E:67:07 at NAS_IP=100.110.0.246 11:34:13.411 DEBUG [WnamRadiusService.java:558] - handleRadiusPacket AUTH as=100.110.0.246, secret_len=10, attrs=[Vendor-Specific: 0x, User-Name: 78:98:E8:1E:67:07, User-Password: <stripped out>, NAS-IP-Address: 100.110.0.246, Acct-Session-Id: 3098476543630901255, Vendor-Specific: 0x, Vendor-Specific: 0x, NAS-Port-Id: location data10] 11:34:13.411 DEBUG [ProfilingService.java:440] - handleMac on MAC: 78:98:E8:1E:67:07 for vendor D-Link International 11:34:13.412 DEBUG [ProfilingService.java:466] - handleMac on MAC: 78:98:E8:1E:67:07 checks added: 1, res: [D-Link International] 11:34:13.414 DEBUG [ProfilingService.java:1091] - Endpoint 78:98:E8:1E:67:07 logical profile set to Home Network Devices 11:34:13.414 DEBUG [ProfilingService.java:1102] - Endpoint 78:98:E8:1E:67:07 policy set assigned: [DLink-Device] 11:34:13.416 DEBUG [ProfilingService.java:469] - handleMac on MAC: 78:98:E8:1E:67:07 profiled in 5 ms. 11:34:13.433 DEBUG [WnamRadiusService.java:558] - handleRadiusPacket AUTH as=100.110.0.246, secret_len=10, attrs=[User-Name: INTERNET, Vendor-Specific: 0x, NAS-IP-Address: 100.110.0.246, NAS-Port-Id: location data10, User-Password: <stripped out>, Vendor-Specific: 0x, Vendor-Specific: 0x, Acct-Session-Id: 3134505340649865221, Vendor-Specific: 0x, Vendor-Specific: 0x, Vendor-Specific: 0x] 11:34:13.434 DEBUG [WnamRadiusService.java:558] - handleRadiusPacket ACCT as=100.110.0.246, secret_len=10, attrs=[User-Name: 78:98:E8:1E:67:07, Vendor-Specific: 0x, Acct-Session-Id: 3098476543630901255, Acct-Status-Type: Start, Vendor-Specific: 0x, Event-Timestamp: 1723436510, NAS-Port-Id: location data10, Called-Station-Id: CC-9D-A2-71-94-E0:data10, Vendor-Specific: 0x, Vendor-Specific: 0x, Vendor-Specific: 0x, NAS-Identifier: F.E.wlc-30, Framed-IP-Address: 192.168.3.21, Calling-Station-Id: 78-98-E8-1E-67-07, NAS-IP-Address: 100.110.0.246] 11:34:13.435 DEBUG [WnamRadiusService.java:558] - handleRadiusPacket ACCT as=100.110.0.246, secret_len=10, attrs=[User-Name: 78:98:E8:1E:67:07, Vendor-Specific: 0x, Acct-Session-Id: 3098476543630901255, Acct-Status-Type: Interim-Update, Vendor-Specific: 0x, Event-Timestamp: 1723436806, NAS-Port-Id: location data10, Called-Station-Id: CC-9D-A2-71-94-E0:data10, Vendor-Specific: 0x, Vendor-Specific: 0x, Vendor-Specific: 0x, NAS-Identifier: F.E.wlc-30, Framed-IP-Address: 192.168.3.21, Calling-Station-Id: 78-98-E8-1E-67-07, Vendor-Specific: 0x, Vendor-Specific: 0x, Acct-Input-Gigawords: 0, Acct-Input-Octets: 128192, Acct-Output-Gigawords: 0, Acct-Output-Octets: 149134, Acct-Session-Time: 286, NAS-IP-Address: 100.110.0.246] 11:34:13.436 DEBUG [EltexWlcService.java:176] - sendCoa attrs=8, fail=false, resp=CoA-ACK 11:34:13.437 DEBUG [EltexWlcService.java:148] - open EltexWLC access SUCCESS for IP=192.168.3.21, MAC=78:98:E8:1E:67:07, num_avp=1 11:34:13.440 DEBUG [WnamRadiusService.java:558] - handleRadiusPacket ACCT as=100.110.0.246, secret_len=10, attrs=[User-Name: INTERNET, Vendor-Specific: 0x, Acct-Session-Id: 3134505340649865221, Vendor-Specific: 0x, Acct-Status-Type: Start, Vendor-Specific: 0x, Event-Timestamp: 1723436806, NAS-Port-Id: location data10, Called-Station-Id: CC-9D-A2-71-94-E0:data10, Vendor-Specific: 0x, Vendor-Specific: 0x, Vendor-Specific: 0x, NAS-Identifier: F.E.wlc-30, Framed-IP-Address: 192.168.3.21, Calling-Station-Id: 78-98-E8-1E-67-07, NAS-IP-Address: 100.110.0.246] 11:34:13.450 DEBUG [WnamCmdService.java:630] - ACCT Interim-Update new session ID=3098476543630901255, MAC=78:98:E8:1E:67:07, IP=192.168.3.21, User=78:98:E8:1E:67:07, NAS_IP=100.110.0.246, site_id=new 11:34:13.450 DEBUG [WnamCmdService.java:630] - ACCT Start new session ID=3098476543630901255, MAC=78:98:E8:1E:67:07, IP=192.168.3.21, User=78:98:E8:1E:67:07, NAS_IP=100.110.0.246, site_id=new 11:34:13.450 DEBUG [WnamCmdService.java:630] - ACCT Start new session ID=3098476543630901255, MAC=78:98:E8:1E:67:07, IP=192.168.3.21, User=INTERNET, NAS_IP=100.110.0.246, site_id=new |