Взаимодействие контроллера с порталом 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. После авторизации пользователя на гостевом портале клиенту возвращается ссылка редиректа на ТД, содержащая в себе адрес сайта, на который клиент хотел попасть изначально, логин и пароль, под которым клиент успешно прошёл аутентификацию на гостевом портале. Ссылка вида:
    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, если ТД не помнит клиента). Редирект пользователя на портал происходить не будет, до тех пор, пока учетная запись клиента не будет удалена из базы, в ручную или автоматически (по настроенной логике).

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


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


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

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

За основу возьмем заводскую конфигурацию Factory (ссылка на инструкцию 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



Физическая конфигурация интерфейсов устройств серии 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 создаем политику доступа для Wi-Fi пользователей. В нашем случае с названием 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

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


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


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


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


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