| Scroll Ignore | ||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| ||||||||||||||
|
| Оглавление |
|---|
Cisco ISE - Гостевой портал + ТД Realtek 2.5.5 build 14 (задача по тестированию #301370)
Для тестирования портальной авторизации с 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
Настройка на стороне ТД
...
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 шаблона для внешней портальной авторизации
...
Параметр
...
Описание
...
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 |
Взаимодействие ТД с порталом Cisco ISE:
...
- При первом подключении клиента (ISE ничего о нем не знает, ТД тоже), ТД пытается пройти MAB авторизацию на NAC сервере, подставляя MAC адрес клиента в атрибуты User-Name и User-Password запроса access-request к Radius серверу. Так-как ISE ничего не знает о данном клиенте, он присылает access-reject
- После того как ТД получила access-reject она отправляет клиенту ссылку редиректа на гостевой портал ISE (который был в ТД прописан при настройки SSID) формата: https://100.110.0.161:8443/portal/PortalSetup.action?portal=f09aaac2-f101-45ed-832f-fda201ab7639?action_url=http%3A%2F%2Fredirect%2Eloc%3A10081%2F&redirect=http%3A%2F%2Fconnectivitycheck%2Egstatic%2Ecom%2Fgenerate%5F204&ap_mac=68%3A13%3AE2%3AC2%3A19%3A70 при этом навешивая ACL, с доступом только до гостевого портала.
- После саморегистрации пользователя на гостевом портале и успешного логина через форму портала, по присланному логину и паролю, информация об устройстве как устройство MAB заносится в базу Endpoins, в которой содержится в том числе мак клиента. А клиенту возвращается ссылка редиректа на proxy сервис ТД, содержащая в себе адрес сайта, на который клиент хотел попасть изначально, логин и пароль, под которым клиент успешно залогинился на гостевом портале. Ссылка вида: http://redirect.loc:10081/?token=CYO1UK0IE1KI8BIWVNBJYR8WTNGAK1TP&buttonClicked=4&err_flag=0&err_msg=&info_flag=0&info_msg=&redirect_url=http%3A%2F%2Fconnectivitycheck.gstatic.com%2Fgenerate_204&username=Gena&password=Password414
- Когда клиент переходит по этой ссылке ТД вычитывает из нее логин и пароль и подставляет в атрибуты User-Name и User-Password запроса access-request , radius успешно авторизует клиента и ТД снимает ACL на доступ клиента и редиректит на изначально запрашиваемый пользователем портал.
- После отключения от SSID и подключения заново или подключения к другой ТД (к тому же SSID), авторизация будет проходить по mac адресу (так-как этот сценарий реализован в логике ТД "external portal" и срабатывает при подключении к SSID, если ТД не "помнит" клиента). И редиректа пользователя на портал происходить не будет, до тех пор, пока endpoint клиента не будет удален из базы, в ручную или автоматически (по какой-то настроенной логике)
...
Рис.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, после регистрации пользователя на портале и получения пользователям ссылки редиректа вида http://redirect.loc:10081/?token=CYO1UK0IE1KI8BIWVNBJYR8WTNGAK1TP&buttonClicked=4&err_flag=0&err_msg=&info_flag=0&info_msg=&redirect_url=http%3A%2F%2Fconnectivitycheck.gstatic.com%2Fgenerate_204&username=Gena&password=Password414
перехода клиента по данной ссылке, авторизует через Radius, по выданному порталом логину и паролю (которые портал включил в ссылку редиректа, в виде объектов &username=Gena&password=Password414).
При отключении клиента от ТД и повторном подключении (через промежуток превышающий параметр 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 dump-ise-radius.pcap
Для более продвинутых сценариев гостевого доступа, необходимо так-же реализовать:
- Принятие ссылки редиректа через radius атрибут
- Поддержка ТД named или dynamic ACL и назначение по получении через атрибуты radius access-accept или CoA-Request атрибуты
- Желательно поддержать атрибут ограничения скорости входящего и исходящего трафика для клиента
- Желательно поддержать radius атрибут NAS-Identifier, для идентификации локации ТД
В задаче #308897 идет проработка требований для реализации сценариев Норникеля, для реализации которых так-же потребуется доработка передачи, приема и обработка атрибутов radius и CoA.
Настройка Cisco ISE:
...
Создаем 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, при аутентификации пользователя на портале)
Следующая запись. Аккаунтинг пользователя
Cisco ISE + AD + AP WOP-30LS (EAP-TLS)
Настройка связки Cisco ISE + Microsoft AD + Microsoft CA
...
Настройка Windows server для выполнения ролей AD + CS, создание пользователя, создания шаблона сертификата, настройка групповой политики автоматической выдачи сертификатов пользователям AD, настройка суппликанта Windows, хорошо описано в доке v1.31_Настройка взаимодействия SoftWLC с Microsoft Active Directory (AD) и Certificate Services (CS)
Добавление поддержки сертификатов ADCS в Cisco ISE
...
Надо импортировать в 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
Настройка Cisco ISE (EAP-TLS) для аутентификации и авторизации по сертификатам пользователей AD
...
Добавляем для 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
Radius Live Logs: авторизации клиента по EAP-TLS
...
Дампы EAPOL обмена и Radius обмена
dump-ise-eapol_TLS.pcap dump-ise-radius_TLS.pcap
Cisco ISE + AD + AP WOP-30LS → EAP-TEAP (EAP Chaining). Авторизация по машинном и пользовательскому сертификату AD
Так-же EAP-Chaining будет работать и в случае EAP-FAST, но это подразумевает использование Cisco AnyConnect, в качестве суппликанта.
Настройка ТД WOP-30LS
...
Настройка WOP-30LS c тестовой прошивкой 2.5.5 build 14 (задача #317673), в которой реализована передача Radius атрибута Service-Type, происходит как для обычной Enterprise авторизации Настройка VAP с Enterprise-авторизацией
Настройка AD для выдачи пользовательского и машинного сертификата
...
- Перейти в Certificate Authority > Certificate Templates > Manage
- Для машинного сертификата копировать 'Workstation Authentication' шаблон и задать ему имя ('machine auth' в этом примере)
- В настройках шаблона на вкладке Security, разрешить Allow Read, Enroll and Autoenroll для 'Domain Computers'
- Для сертификата пользователя скопировать 'User' шаблон и изменить его имя ('user auth' в нашем примере)
- В настройках шаблона на вкладке Security, разрешить Allow Read, Enroll and Autoenroll для 'Domain Users'
Следующим шагом будет публикация вновь созданных шаблонов сертификатов, как показано ниже. Как только мы добавим сертификаты, они станут доступны для регистрации.
Далее используем групповую политику для автоматической регистрации сертификатов компьютера и пользователя и развертывания их на рабочих станциях.
- Открываем Group Policy Management консоль
- Редактируем GPO ту, которую хотите изменить (в данном примере используется политика по умолчанию)
- Переходим User | Computer Configuration, Policies, Windows Settings, Security Settings, и Public Key Policies.
- Двойной клик по Certificate Services Client - Auto-Enrollment.
- Изменяем Configuration Model на Enabled.
- Выбираем оба метода 'Renew expired certificates' и 'Update certificates that use certificate templates'.
- Нажимаем "ОК", чтобы сохранить изменения. Рабочие станции применят объект групповой политики и загрузят сертификат при следующем обновлении групповой политики.
Как только все настройки будут выполнены,можно либо перезагрузить компьютер пользователя, либо принудительно обновить объект групповой политики, запустив gpupdate /force в командной строке, чтобы получить сертификаты. Можно просмотреть сертификаты в консоли MMC (certlm.msc). На скринах ниже представлены как пользовательский, так и машинный сертификаты.
Настройка Cisco ISE
...
В данном разделе описываются только настройки индивидуальные для авторизации 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'
...
Правило настроенное в данном профайле подразумевает (при совпадении условий авторизации) передачу Radius пакета 'Access_Accept' и Radius атрибута 'Radius:Tunnel-Private-Group-ID' со значением 4000, для помещения пользователя в CVLAN 4000 (в терминологии Cisco динамический VLAN). Так-же можно в данном правиле навешивать ACL ( именной или динамический) через другие атрибуты Radius (пока ТД Eltex не поддерживают). И другие политики которые поддерживают контроллер или ТД.
...
Windows 10 / Конфигурация Supplicant-а
...
Переходим в 'Параметры' и выбираем выданный AD-CS сертификат. В разделе 'Проверка подлинности клиента' в качестве основного и дополнительного методов выбираем 'Microsoft: смарт-карта или иной сертификат'
и поочереди настраиваем их как на скринах ниже (выбирая сертификат выданный AD-CS)
Подтверждаем и закрываем настройки
Radius Live Logs
...
Авторизация по обоим сертификатам, машинному и пользовательскому (полный доступ). Пользователь вошел в систему под доменной учетной записью.
Авторизация только по машинному сертификату. Пользователь вошел в систему под локальной учетной записью.
Дампы 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
Netams WNAM + Bras WLC
Начиная с версии 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
Диаграмма взаимодействия пользователя WiFi, AP, BRAS_WLC, портала и Radius сервера WNAM
...
Файл дампа RADIUS обмена radius_wnam.pcap
Настройка WLC
Настройка правил для Firewall:
...
Настройка 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-сервера
...
Настройка клиентского бриджа:
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
Настройка WNAM
На стороне системы авторизации создаётся объект Сервер доступа (тип: 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, не требует дополнительной настройки).
Debug:
Можно посмотреть логи работы правил авторизации: 'Диагностика' → 'Корпоративные подключения'
| Блок кода | ||||
|---|---|---|---|---|
| ||||
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 |




































































