Алгоритм работы
Поддержано начиная с версий:
Устройства: WLC-15/30/3200, ESR-15/15R/30/3200
Версия ПО WLC: 1.26.0
Устройства: WEP-1L/2L/30L/30L-Z/200L и WOP-2L/20L/30L/30LS
Версия ПО ТД: 2.5.0
На ТД поддержан способ портальной авторизации через RADIUS.
Клиент подключается к открытому SSID. При первом подключении клиента для него пока отсутствует учетная запись во внешней системе (в RADIUS-сервере), поэтому весь клиентский трафик блокируется, кроме:
- DHCP;
- DNS;
- Запросов на адрес портала;
- Запросов URL/IP из белого списка.
После подключения клиента ТД проводится MAB-авторизация (MAC Authentication Bypass) на RADIUS-сервере, подставляется MAC-адрес клиента в атрибут User-Name, а в User-Password записывается radius-secret в запросе Access-Request к RADIUS-серверу. Так как на RADIUS-сервере учетная запись с такими параметрами на данный момент отсутствует, сервер отправляет Access-Reject.
Клиент обращается на HTTP-ресурс. ТД перехватывается запрос и клиент перенаправляется на гостевой портал, который был задан в настройках SSID (portal-profile). Клиент переходит на портал по полученному URL, который содержит в себе:
- switch_url – URL для перенаправления клиента после авторизации на портале;
- ap_mac – MAC-адрес ТД, к которой подключен клиент;
- client_mac – MAC-адрес клиента;
- wlan – название SSID, к которому подключен клиент;
- redirect – URL, который клиент запрашивал первоначально.
Пример URL:
https://eltex-co.ru/?switch_url=http://redirect.loc:10081&ap_mac=68:13:E2:35:1F:30&client_mac=38:d5:7a:e1:e0:13&wlan=Portal-SSID&redirect=http://www.msftconnecttest.com/connecttest.txt
Если URL содержит спецсимволы из зарезервированного набора: ! * ' ( ) ; : @ & = + $ , / ? % # [ ] ,то необходимо использовать двойные кавычки "" при конфигурировании параметра redirect-url-custom.
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
Далее пользователь проходит саморегистрацию на гостевом портале и через форму портала ему возвращается URL редиректа на ТД, который содержит параметры:
- username – имя пользователя;
- password – пароль пользователя;
- redirect_url – URL, который клиент запрашивал первоначально, т.к. портал, возможно, подменил адрес. В нашем примере клиент пытался подключиться к http://www.msftconnecttest.com, но его перенаправили на https://eltex-co.ru;
- error_url – URL для перенаправления клиента в случае ошибки авторизации. В нашем примере этот параметр не используется.
Названия параметров можно переопределить в конфигурации ap-profile.
Пример URL:
http://redirect.loc:10081/?username=60336144&password=3hMYEPEW0tdb&buttonClicked=4&redirect_url=https://eltex-co.ru/
На устройстве клиента открывается URL редиректа, полученный от портала. ТД вычитывает из него username и password, подставляет их в атрибуты User-Name и User-Password в запросе Access-Request и отправляет запрос на RADIUS-сервер. После успешной авторизации клиента на RADIUS-сервере, ТД снимает ограничения на доступ и перенаправляет клиента на URL, указанный в redirect_url. После регистрации пользователя его учетная запись для MAB-авторизации создается в БД RADIUS.
В случае переподключения клиента к ТД или подключения к другой ТД (к тому же SSID) авторизация будет проходить по MAC-адресу; на запрос Access-Request MAB-авторизации вернется Access-Accept, так как на RADIUS-сервере уже есть соответствующая учетная запись клиента (MAB-авторизация запрашивается при подключение клиента к ТД, если ТД не "помнит" клиента). Перенаправление клиента на портал происходить не будет до тех пор, пока MAC-адрес клиента не будет удален из БД.
Конфигурация WLC
Пример настроек будет выполнен на factory конфигурации WLC.
Порядок настройки:
- Создаем белый список URL
- Создаем белый список IP-адресов
- Создаем portal-profile
- Создаем radius-profile
- Создаем ssid-profile
- Добавляем ssid-profile в ap-location
Белые списки предназначены для того, чтобы в случае необходимости предоставить пользователю доступ к определенным ресурсам до авторизации. Список этих ресурсов можно задать через URL, RegExp или подсеть IP. Белые списки не являются обязательными. Адрес портала добавляется в белый список автоматически, поэтому задавать его не требуется.
Создаем белый список URL, он может содержать URL и/или RegExp. Доступ к указанным адресам будет разрешён до авторизации.
object-group url white_url url eltex-co.ru regexp '(.+\.)eltex-co\.com' exit
Создаем белый список IP-адресов, доступ к указанным адресам будет разрешён до авторизации. В белый список можно добавлять адреса подсетей, которые нужны для авторизации.
object-group network white_ip ip prefix 192.168.0.0/24 exit
Создаем portal-profile.
Описание параметров:redirect-url – адрес портала;
age-timeout – временной интервал, в течение которого точка доступа "помнит" клиента и не проводит MAB-авторизацию;
verification-mode – режим работы портала;
white-list domain – белый список URL;
white-list address – белый список IP-адресов.
wlc portal-profile portal-pr redirect-url https://eltex-co.ru age-timeout 10 verification-mode external-portal white-list domain white_url white-list address white_ip exit exitПри режиме verification-mode external-portal к указанному URL в redirect-url автоматически добавляются параметры таким образом, что результирующий URL имеет вид:
https://eltex-co.ru/?switch_url=<SWITCH_URL>&ap_mac=<AP_MAC>&client_mac=<CLIENT_MAC>&wlan=<SSID>&redirect=<ORIGINAL_URL>
Если необходимо изменить названия параметров switch_url, ap_mac, client_mac, wlan, redirect можно задать строку самостоятельно через параметр redirect-url-custom, например:
redirect-url-custom "https://eltex-co.ru/?action_url=<SWITCH_URL>&ap_addr=<AP_MAC>&client_addr=<CLIENT_MAC>&ssid_name=<SSID>&red_url=<ORIGINAL_URL>&nas=<NAS_ID>"
В примере в строку был добавлен <NAS_ID> и были изменены следующие названия параметров:
- switch_url → action_url
- ap_mac → ap_addr
- client_mac →client_addr
- wlan →ssid_name
- redirect →red_url
Строка редиректа может содержать плейсхолдеры:
- <NAS_ID>
- <SWITCH_URL>
- <AP_MAC>
- <CLIENT_MAC>
- <SSID>
- <ORIGINAL_URL>
- <NAS_IP>
Создаем radius-profile.
wlc radius-profile portal_radius auth-address 192.168.4.5 auth-password ascii-text encrypted 92BB3C7EB50C5AFE80 auth-acct-id-send acct-enable acct-address 192.168.4.5 acct-password ascii-text encrypted 92BB3C7EB50C5AFE80 acct-periodic acct-interval 300 exit exitСоздаем ssid-profile.
wlc ssid-profile portal_test ssid portal_test radius-profile portal_radius portal-enable portal-profile portal-pr vlan-id 3 band 5g enable exit exitДобавляем ssid-profile в ap-location.
wlc ap-location default-location description default-location mode tunnel ap-profile default-ap ssid-profile portal_test exit exit
Использование сертификатов
Для повышения безопасности передачи данных между клиентом и ТД необходимо обеспечить шифрование трафика с использованием SSL. Для этого требуется:
SSL-сертификат (формат PEM);
Приватный ключ (формат PEM).
На ТД возможно использовать RSA-сертификаты. ECDSA-сертификаты не поддержаны.
Для защиты приватного ключа в схеме с портальной авторизацией рекомендуется использовать пароль.
Стандартный процесс выпуска сертификатов не предусматривает автоматическое шифрование приватного ключа. Однако это можно выполнить вручную с помощью утилиты OpenSSL.
Команда для шифрования ключа:
openssl rsa -aes256 -in private_key.pem -out private_key_encrypted.pem
Параметры:
-aes256– алгоритм шифрования (можно заменить на-aes128или-aes192);-in private_key.pem– исходный незашифрованный ключ;-out private_key_encrypted.pem– зашифрованный ключ.
После выполнения команды OpenSSL запросит пароль, который будет использоваться для защиты ключа.
Этот подход обеспечит дополнительный уровень защиты приватного ключа от несанкционированного доступа.
Данная процедура проводится вне процесса выпуска сертификата и является дополнительной мерой безопасности.
После шифрования ключа его необходимо добавить к сертификату, например через текстовый редактор. Файл сертификата с шифрованным ключом должен иметь вид:
-----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 certificate_encrypted.pem
crypto private-key-password ascii-text password
proxy-https
exit
Перед применением конфигурации произойдёт проверка псевдонима сертификата и пароля шифрованного ключа.
Допустимо использовать сертификат без шифрованного ключа. В таком случае приватный ключ добавляется к сертификату. Настройка crypto private-key-password не требуется.
Формат файла для сертификата без шифрованного ключа:
-----BEGIN CERTIFICATE----- -----END CERTIFICATE----- -----BEGIN PRIVATE KEY----- -----END PRIVATE KEY-----
Конфигурация:
wlc
ap-profile default-ap
captive-portal
ap-ip-alias certificate_alias
crypto cert certificate.pem
proxy-https
exit