Взаимодействие контроллера с порталом Cisco ISE

  1. При первом подключении клиента ТД пытается пройти MAB авторизацию на NAC сервере, подставляя MAC адрес клиента в атрибуты User-Name и User-Password запроса access-request к Radius серверу WLC. Контроллер проксирует запрос на внешний Radius сервер Cisco ISE. Так как ISE ничего не знает о данном клиенте, он присылает access-reject на WLC, тот в свою очередь на ТД.
  2. После того как ТД получила access-reject она отправляет клиенту ссылку редиректа на гостевой портал ISE  формата: 
    https://100.110.0.161:8443/portal/PortalSetup.action?portal=10968c1f-36fe-4e5c-96ff-9d74f689b29b/?action_url=http%3A%2F%2Fredirect%2Eloc%3A10081%2F&ap_mac=68%3A13%3AE2%3A0E%3A85%3A50&client_mac=a2%3A13%3A66%3A1b%3Ac7%3A8e&redirect=http%3A%2F%2Fconnectivitycheck%2Egstatic%2Ecom%2Fgenerate%5F204
    при этом дополняя ACL, с доступом только до гостевого портала.
  3. После авторизации пользователя на гостевом портале клиенту возвращается ссылка редиректа на proxy сервис ТД, содержащая в себе адрес сайта, на который клиент хотел попасть изначально, логин и пароль, под которым клиент успешно прошёл аутентификацию на гостевом портале. Ссылка вида:
    http://redirect.loc:10081/?token=NAI4PU5HK6O007V0KMYS37M800GOZW97&buttonClicked=4&err_flag=0&err_msg=&info_flag=0&info_msg=&redirect_url=http%3A%2F%2Fconnectivitycheck.gstatic.com%2Fgenerate_204&username=login&password=Password
  4. Когда клиент переходит по этой ссылке, ТД считывает из нее логин и пароль и подставляет в атрибуты User-Name и User-Password запроса access-request , radius успешно авторизует клиента и ТД снимает ACL на доступ клиента и перенаправляет на изначально запрашиваемый пользователем портал.
  5. После отключения от SSID и подключения заново или подключения к другой ТД (к тому же SSID), авторизация будет проходить по MAC адресу (так как этот сценарий реализован в логике ТД "external portal" и срабатывает при подключении к SSID, если ТД не помнит клиента). И редиректа пользователя на портал происходить не будет, до тех пор, пока endpoint клиента не будет удален из базы, в ручную или автоматически (по какой-то настроенной логике).

Пример страницы гостевого портала:


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



Настройка на WLC

Конфигурации контроллера для настройки внешней портальной авторизации

За основу возьмем контроллер с преднастроенным factory-config (ссылка на инструкцию Quickstart):


object-group service ssh port-range 22 exit object-group service dhcp_server port-range 67 exit object-group service dhcp_client port-range 68 exit object-group service ntp port-range 123 exit object-group service dns port-range 53 exit object-group service netconf port-range 830 exit object-group service radius_auth port-range 1812 exit object-group service sa port-range 8043-8044 exit object-group service airtune port-range 8099 exit object-group service web port-range 443 exit syslog max-files 3 syslog file-size 512 syslog file tmpsys:syslog/default severity info exit 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 127.0.0.1 key ascii-text encrypted 8CB5107EA7005AFF exit aaa radius-profile default_radius radius-server host 127.0.0.1 exit boot host auto-config boot host auto-update vlan 3 force-up exit vlan 2 exit no spanning-tree domain lookup enable security zone trusted exit security zone untrusted exit security zone users exit bridge 1 vlan 1 security-zone trusted ip address 192.168.1.1/24 no spanning-tree enable exit bridge 2 vlan 2 security-zone untrusted ip address dhcp no spanning-tree enable exit bridge 3 vlan 3 mtu 1458 security-zone users ip address 192.168.2.1/24 no spanning-tree enable exit interface gigabitethernet 1/0/1 mode switchport switchport access vlan 2 exit interface gigabitethernet 1/0/2 mode switchport exit interface gigabitethernet 1/0/3 mode switchport exit interface gigabitethernet 1/0/4 mode switchport exit interface tengigabitethernet 1/0/1 mode switchport switchport access vlan 2 exit interface tengigabitethernet 1/0/2 mode switchport exit tunnel softgre 1 mode data local address 192.168.1.1 default-profile enable exit security zone-pair trusted untrusted rule 1 action permit enable exit exit security zone-pair trusted trusted rule 1 action permit enable exit exit security zone-pair trusted self rule 10 action permit match protocol tcp match destination-port object-group ssh enable exit rule 20 action permit match protocol icmp enable exit rule 30 action permit match protocol udp match source-port object-group dhcp_client match destination-port object-group dhcp_server enable exit rule 40 action permit match protocol udp match destination-port object-group ntp enable exit rule 50 action permit match protocol tcp match destination-port object-group dns enable exit rule 60 action permit match protocol udp match destination-port object-group dns enable exit rule 70 action permit match protocol tcp match destination-port object-group netconf enable exit rule 80 action permit match protocol tcp match destination-port object-group sa enable exit rule 90 action permit match protocol udp match destination-port object-group radius_auth enable exit rule 100 action permit match protocol gre enable exit rule 110 action permit match protocol tcp match destination-port object-group airtune enable exit rule 120 action permit match protocol tcp match destination-port object-group web enable exit exit security zone-pair untrusted self rule 1 action permit match protocol udp match source-port object-group dhcp_server match destination-port object-group dhcp_client enable exit exit security zone-pair users self rule 10 action permit match protocol icmp enable exit rule 20 action permit match protocol udp match source-port object-group dhcp_client match destination-port object-group dhcp_server enable exit rule 30 action permit match protocol tcp match destination-port object-group dns enable exit rule 40 action permit match protocol udp match destination-port object-group dns enable exit exit security zone-pair users untrusted rule 1 action permit enable exit exit security passwords default-expired nat source ruleset factory to zone untrusted rule 10 description "replace 'source ip' by outgoing interface ip address" action source-nat interface enable exit exit exit ip dhcp-server ip dhcp-server pool ap-pool network 192.168.1.0/24 address-range 192.168.1.2-192.168.1.254 default-router 192.168.1.1 dns-server 192.168.1.1 option 42 ip-address 192.168.1.1 vendor-specific suboption 12 ascii-text "192.168.1.1" suboption 15 ascii-text "https://192.168.1.1:8043" exit exit ip dhcp-server pool users-pool network 192.168.2.0/24 address-range 192.168.2.2-192.168.2.254 default-router 192.168.2.1 dns-server 192.168.2.1 exit softgre-controller nas-ip-address 127.0.0.1 data-tunnel configuration wlc aaa radius-profile default_radius keepalive-disable service-vlan add 3 enable exit wlc outside-address 192.168.1.1 service-activator aps join auto exit airtune enable exit ap-location default-location description "default-location" mode tunnel ap-profile default-ap airtune-profile default_airtune ssid-profile default-ssid exit airtune-profile default_airtune description "default_airtune" exit ssid-profile default-ssid description "default-ssid" ssid "default-ssid" radius-profile default-radius vlan-id 3 security-mode WPA2_1X 802.11kv band 2g band 5g enable exit radio-2g-profile default_2g description "default_2g" exit radio-5g-profile default_5g description "default_5g" exit ap-profile default-ap description "default-ap" password ascii-text encrypted 8CB5107EA7005AFF exit radius-profile default-radius description "default-radius" auth-address 192.168.1.1 auth-password ascii-text encrypted 8CB5107EA7005AFF domain default exit wids-profile default-wids description "default-wids" exit ip-pool default-ip-pool description "default-ip-pool" ap-location default-location exit enable exit wlc-journal all limit days 365 exit ip ssh server ip tftp client timeout 45 ntp enable ntp broadcast-client enable ip https server


Если на контроллере отсутствует конфигурация либо она была изменена, то требуется привести к factory виду. Чтобы не заполнять конфигурацию построчно, её возможно применить с помощью ввода команд:


wlc-15# copy system:factory-config system:candidate-config wlc-15# copy system:factory-config system:candidate-config |******************************************| 100% (12035B) Configuration loaded successfully. wlc-15# commit Configuration has been successfully applied and saved to flash. Commit timer started, changes will be reverted in 600 seconds. wlc-15# confirm Configuration has been confirmed. Commit timer canceled.



Физическая конфигурация интерфейсов устройств серии WLC-15, WLC-30 и WLC-3200 различается между собой. Попытка применения конфигурации одной серии устройств на другой серии может вызвать ошибку инициализации интерфейсов.


Внесём дополнения в конфигурацию:

Инструкция по настройке Radius сервера и проксирования RADIUS запросов ТД на внешний RADIUS-сервер (ссылка на инструкцию Настройка проксирования на внешний RADIUS):

Настроим локальный Radius сервер:

radius-server local nas ap key ascii-text password network 192.168.1.0/24 exit nas local key ascii-text password network 127.0.0.1/32 exit virtual-server default proxy-mode nas-ip-address 100.109.1.246 <-- WLC UPLINK IP BRIDGE 2 upstream-server cisco-ise host 100.110.0.161 server-type all key ascii-text password exit enable exit enable exit

Настроим локальный Radius профиль:

radius-server host 127.0.0.1 key ascii-text password exit aaa radius-profile default_radius radius-server host 127.0.0.1 exit

Настроим конфигурацию портальной авторизации (ссылка на инструкцию Авторизация через RADIUS):

wlc portal-profile default-portal redirect-url-custom "https://100.110.0.161:8443/portal/PortalSetup.action?portal=10968c1f-36fe-4e5c-96ff-9d74f689b29b?action_url=<SWITCH_URL>&redirect=<ORIGINAL_URL>&ap_mac=<AP_MAC>" age-timeout 10 verification-mode external-portal exit radius-profile default-radius auth-address 192.168.1.1 auth-password ascii-text password auth-acct-id-send acct-enable acct-address 192.168.1.1 acct-password ascii-text password acct-periodic exit exit


Значение параметра redirect-url-custom в профиле портала требуется указывать в двойных кавычках.

Таблица 1 — Настройка URL шаблона для внешней портальной авторизации (параметр redirect-url-custom)

Параметр

Описание

<NAS_ID>

NAS ID - сервер, через который происходит выход клиента в интернет. Если не задан ни один из этих параметров, то в качестве NAS ID в RADIUS- и HTTP(S)-пакетах будет использоваться MAC-адрес ТД

<SWITCH_URL>

Доменное имя, которое получает клент при перенаправлении

<AP_MAC>

MAC-адрес точки доступа 

<CLIENT_MAC>

MAC-адрес клиента

<SSID>

SSID

<ORIGINAL_URL>

URL, который изначально запрашивал клиент

Настроим SSID профиль:

wlc ssid-profile default-ssid ssid "default-ssid_cisco_ise" radius-profile default-radius portal-enable portal-profile default-portal vlan-id 3 802.11kv band 2g band 5g enable exit exit


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

Для выпуска сертификата с защищенным приватным ключом используем Certbot. Стоит отметить, что стандартный процесс выпуска сертификатов Let's Encrypt не предусматривает возможность защиты приватного ключа паролем напрямую. Чтобы добавить защиту паролем к файлу приватного ключа, возможно использовать утилиту openssl для шифрования файла. Команда: openssl rsa -aes256 -in privkey.pem -out privkey_encrypted.pem 
портебует ввести пароль и зашифрует ключ этим паролем. Обратите внимание, что это делается вне процесса выпуска сертификата и является дополнительной мерой безопасности.

После шифрования ключа его необходимо добавить к сертификату в один файл. Файл сертификата с шифрованным ключом должен быть формата:

-----BEGIN CERTIFICATE----- -----END CERTIFICATE----- -----BEGIN ENCRYPTED PRIVATE KEY----- -----END ENCRYPTED PRIVATE KEY-----

Копируем файл сертификата с шифрованным ключом на контроллер WLC в директорию crypto:cert/

Настроим проверку сертификата и включим режим HTTPs:

wlc ap-profile default-ap captive-portal ap-ip-alias <certificate_alias> crypto cert cert_privkey_enc.pem <- certificate_name crypto private-key-password ascii-text password proxy-https exit

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



radius-server local nas ap key ascii-text password network 192.168.1.0/24 exit nas local key ascii-text password network 127.0.0.1/32 exit virtual-server default proxy-mode nas-ip-address 100.109.1.246 upstream-server cisco-ise host 100.110.0.161 server-type all key ascii-text password exit enable exit enable exit radius-server host 127.0.0.1 key ascii-text password exit aaa radius-profile default_radius radius-server host 127.0.0.1 exit wlc outside-address 192.168.1.1 service-activator aps join auto exit airtune enable exit ap-location default-location mode tunnel ap-profile default-ap airtune-profile default_airtune ssid-profile default-ssid exit airtune-profile default_airtune description "default_airtune" exit ssid-profile default-ssid ssid "default-ssid_cisco_ise" radius-profile default-radius portal-enable portal-profile default-portal vlan-id 3 security-mode WPA2_1X 802.11kv band 2g band 5g enable exit radio-2g-profile default_2g description "default_2g" exit radio-5g-profile default_5g description "default_5g" exit ap-profile default-ap password ascii-text password captive-portal ap-ip-alias swlc.ddns.net crypto cert cert_privkey_enc.pem crypto private-key-password ascii-text password proxy-https exit   exit portal-profile default-portal redirect-url-custom "https://100.110.0.161:8443/portal/PortalSetup.action?portal=10968c1f-36fe-4e5c-96ff-9d74f689b29b?action_url=<SWITCH_URL>&redirect=<ORIGINAL_URL>&ap_mac=<AP_MAC>" age-timeout 10 verification-mode external-portal exit radius-profile default-radius auth-address 192.168.1.1 auth-password ascii-text password auth-acct-id-send acct-enable acct-address 192.168.1.1 acct-password ascii-text password acct-periodic domain default exit ip-pool default-ip-pool description "default-ip-pool" ap-location default-location exit enable exit




Настройка Cisco ISE

1.Создаем Network Device Profile


2.Настраиваем созданный профиль "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, включаем используемый ТД протокол обмена подтверждениями, отключаем Check Password в разделе Via PAP/ASCII и Via EAP-MD5.


3.Создаем новое сетевое устройство, в нашем случае  "Eltex-WLC"


4.Настраиваем взаимодействие по протоколу  Radius. Требуется указать подсеть контроллера WLC (в нашем случае это один контроллер и подсеть 100.109.1.246/32), в поле Device Profile выбираем ранее созданный профиль Eltex. Также необходимо указать secret key для протокола Radius, настроенный на контроллере WLC в разделе radius-server>virtual-server>upstream-server>key.


5.Создать группу встроенных гостевых учетных записей, в нашем случае это Eltex_AP_Users и в этой группе создать учетные записи, задать им логин и пароль.

Создание пользователя:


6.Настраиваем последовательность действий для гостевого портала (Guest Portal Sequence). Переходим в настройки Work Centers > Guest Access > Identities > Identity Source Sequence > Guest Portal Sequence - это предустановленная последовательность аутентификации гостевых пользователей. И в поле Authentication Search List выбираем порядок аутентификации пользователей. В нашем случае порядок как на снимке ниже: Internal Endpoints (MAB) → Internal Users (встроенные учетные записи) → Guest Users (учетные записи созданные пользователем самостоятельно на гостевом портале)


7.Создаем правило с разрешенными протоколами, в нашем случае Allowed_Protocols, в нем разрешаем Authentication Bypass>Process Host Lookup и Authentication Protocols>Allow PAP/ASCII


8.Настройка Authorization Profiles. На вкладке  Work Centers > Guest Access > Policy Elements > Results > Authorization Profiles > Add создаем профиль авторизации под ранее созданный Network Device Profile. В данный сценарий можно включать параметры авторизации клиента, такие как CVLAN, ACL, shaper и т.п. через  добавление различных атрибутов, которые поддерживают ТД Eltex


9.Настройка Policy Sets. На вкладке Work Centers > Guest Access > Policy Sets создаем политику доступа для WiFi пользователей. В нашем случае с названием Policy Sets
В эту политику попадают клиенты приходящие с SSID "default-ssid_cisco_ise" и Flow Type Conditions соответствуют Wirelles_MAB или WLC_WEB_Authentication

 

10.Настраиваем в данной политике правила аутентификации и авторизации. 
В правиле аутентификации первым пунктам идет проверка пользователя по логину и паролю в базе Internal Users, вторым пунктом, если не сработал пункт один, проверяется mac адрес в базе EndPoints (MAB).
В правиле авторизации сначала проверяется пользователь по логину и паролю в базе Internal Users. Вторым пунктам, если не сработал пункт один, проверяется mac адрес в базе EndPoints (MAB).
В нашем случае при успешной проверке применяется действие PermitAccess.


 11. Настройка гостевого портала. На снимках ниже приведен пример настройки портала. 


12.Адрес портала для настройки ссылки редиректа, возможно получить по ссылке



Radius Logs

В разделе Operations>RADIUS>Live Logs находится запись журнала, о том что клиент не смог пройти MAB аутентификацию, так как клиент прошел регистрацию на портале.


Запись о том что гость аутентифицировался на портале (после регистрации)


Запись о том что пользователь успешно аутентифицировался и авторизовался через Radius по логину и паролю


Запись о том, что клиент успешно прошел MAB аутентификацию и авторизацию через Radius (Cisco ISE занесла MAC клиента в базу EndPoints, при аутентификации пользователя на портале)


Аккаунтинг пользователя