Настройка на стороне ТД


Команды для настройки внешней портальной авторизации (ссылка на инструкцию: 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


Взаимодействие ТД с порталом Cisco ISE:

  1. При первом подключении клиента (ISE ничего о нем не знает, ТД тоже), ТД пытается пройти MAB авторизацию на NAC сервере, подставляя MAC адрес клиента в атрибуты User-Name и User-Password запроса access-request к Radius серверу. Так-как ISE ничего не знает о данном клиенте, он присылает access-reject
  2. После того как ТД получила 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, с доступом только до гостевого портала.
  3. После саморегистрации пользователя на гостевом портале и успешного логина через форму портала, по присланному логину и паролю, информация об устройстве как устройство 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
  4. Когда клиент переходит по этой ссылке ТД вычитывает из нее логин и пароль и подставляет в атрибуты User-Name и User-Password запроса access-request , radius успешно авторизует клиента и ТД снимает ACL на доступ клиента и редиректит на изначально запрашиваемый пользователем портал.
  5. После отключения от 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

Для более продвинутых сценариев гостевого доступа, необходимо так-же реализовать:

  1. Принятие ссылки редиректа через radius атрибут
  2. Поддержка ТД named или dynamic ACL и назначение по получении через атрибуты radius access-accept или CoA-Request атрибуты
  3. Желательно поддержать атрибут ограничения скорости входящего и исходящего трафика для клиента
  4. Желательно поддержать 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 Logs

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 для выдачи пользовательского и машинного сертификата


  1. Перейти в Certificate Authority > Certificate Templates > Manage
  2. Для машинного сертификата копировать 'Workstation Authentication' шаблон и задать ему имя ('machine auth' в этом примере)
  3. В настройках шаблона на вкладке Security,  разрешить Allow Read, Enroll and Autoenroll для 'Domain Computers'
  4. Для сертификата пользователя скопировать  'User' шаблон и изменить его имя ('user auth' в нашем примере)
  5. В настройках шаблона на вкладке Security, разрешить Allow Read, Enroll and Autoenroll для 'Domain Users'

Следующим шагом будет публикация вновь созданных шаблонов сертификатов, как показано ниже. Как только мы добавим сертификаты, они станут доступны для регистрации.

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

  1. Открываем Group Policy Management консоль
  2. Редактируем GPO ту, которую хотите изменить (в данном примере используется политика по умолчанию)
  3. Переходим User | Computer Configuration, Policies, Windows Settings, Security Settings, и Public Key Policies.
  4. Двойной клик по Certificate Services Client - Auto-Enrollment.
  5. Изменяем Configuration Model на Enabled.
  6. Выбираем оба метода 'Renew expired certificates' и 'Update certificates that use certificate templates'.
  7. Нажимаем "ОК", чтобы сохранить изменения. Рабочие станции применят объект групповой политики и загрузят сертификат при следующем обновлении групповой политики.

Как только все настройки будут выполнены,можно либо перезагрузить компьютер пользователя, либо принудительно обновить объект групповой политики, запустив 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'

Создаем профайл '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 (ограниченный доступ).
Правило по дефолту остается, для тех кто не располагает сертификатами.



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 L2Troubleshooting

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

Контроллер имеет адрес 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:

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

Настройка 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