В статье пойдёт речь о вопросах расширенной аутентификации в беспроводной сети через WPA2 Enterprise. Для данной системы используется RADIUS сервер, поэтому рассмотрим краткий пример упрощённой установки и настройки.
О методах аутентификации
В предыдущих статьях, в частности: Особенности защиты беспроводных и проводных сетей. Часть 1 — Прямые меры защиты, — мы рассказывали о различных методах аутентификации.
Более или менее надёжным можно считать алгоритм защиты начиная с WPA2, а самый современный протокол аутентификации — WPA3, входящий в состав новшеств от WiFi 6. Но так как не все ещё перешли на WiFi 6, то WPA2 пока остаётся актуальным.
В свою очередь технология WPA2 подразделяется на два направления: WPA2 Personal и WPA2 Enterprise.
Вариант WPA2 Personal с PSK (Pre-Shared Key), проще говоря, «один-ключ-на все-устройства» используется в небольших (обычно в домашних сетях). При этом единственный ключ (длинная символьная строка не менее 8 символов) хранится на самой точке доступа и на каждом устройстве, подключаемом к беспроводной сети. Когда просят дать «пароль от WiFi», это тот самый ключ и есть.
При увеличении числа клиентов обслуживание такой беспроводной сети превращается в кошмар для сисадмина.
Если кто-то из пользователей со скандалом уволился, умудрился потерять ноутбук или случайно переслал ключ по почте (выложил общем чате, на форуме и так далее) ...
В общем, при малейшем подозрении на компрометацию ключа выход может быть только один — сгенерировать новый ключ и заменить его везде: на всех точках доступа и у всех пользователей на всех устройствах. При этом нужно обязательно проверить работает ли доступ у всех пользователей на всех корпоративных (а иногда и личных) девайсах, а ещё ответить на 1000 и 1 вопрос из разряда: «А зачем?», «А почему так произошло?», «А что, теперь постоянно менять придётся?» и так далее и тому подобное.
Поэтому для беспроводных сетей корпоративного уровня используется гораздо более совершенный вариант WPA2 Enterprise. Наиболее очевидной альтернативой общему ключу является индивидуальный ключ для каждого. Разумеется, в этом случае при подключении к сети запрашивается не только ключ, но и имя пользователя. Фактически это возврат к аутентификации на основе логин + длинный пароль. (Спасибо Капитану Очевидность за точные формулировки).
Вопрос в том, где хранить базу пользователей и паролей. Размер встроенной аппаратной флеш-памяти не «резиновый», а если точек доступа несколько, то нужно подумать, как выполнять синхронизацию учётных данных между ними.
Гораздо проще использовать внешний сервер для аутентификации. WPA2 Enterprise использует для этих целей RADIUS.
RADIUS (Remote Authentication in Dial-In User Service) — сервис AAA (Authentication, Authorization, Accounting), основанный на использовании отдельного сервера, взаимодействующего с клиентами (оборудованием) по специальным протоколам.
На сегодняшний момент наиболее популярны следующие реализации:
- Microsoft Network Policy Server (NPS), бывший IAS — для конфигурации используется встроенный инструментарий Microsoft. Соответственно, нужно купить необходимые лицензии.
- Cisco Secure Access Control Server (ACS) 4.2, 5.3 — для администрирования использует веб-интерфейс, имеет широкий набор полезных функций. Это также платный продукт.
- FreeRADIUS — распространяется бесплатно, может использоваться как в «чистом виде», так и вкупе с различными СУБД (MySQL и другие), имеются веб-интерфейсы (DaloRADIUS, Dual-In), в общем, довольно известное решение.
Существуют и другие реализации данного сервиса. Для настройки главное понять принцип взаимодействия с сервером аутентификации, всё остальное можно найти в документации.
Интересный факт. Аппаратные шлюзы и контроллеры точек доступа Zyxel уже имеют встроенный сервис RADIUS «на борту». А облачная среда Zyxel Nebula может похвастаться собственной системой аутентификации, отличной от RADIUS, но выполняющей те же функции. Поэтому самостоятельная установка внешнего сервера аутентификации — процесс интересный, но отнюдь не всегда обязательный. Есть и более простые варианты.
Взаимодействие точки доступа с сервером RADIUS
Для обмена данными с сервером RADIUS используется протокол UDP (User Datagram Protocol) по принципу «клиент-сервер». В роли клиента выступает точка доступа (или другое устройство, нуждающиеся в службе аутентификации), которая обращается к серверу RADIUS с запросами о проверке учётных записей.
В зависимости от настройки и схемы использования сервер RADIUS может сообщать клиенту не только информацию об успешной аутентификации, но и другие параметры: VLAN клиентского устройства, IP адрес, QoS профиль и так далее.
Для создания безопасного соединения клиент и сервер RADIUS обладают общим ключом.
В отказоустойчивой production схеме используется более одного сервера RADIUS. Например, точка доступа NWA210AX может использовать для проверки два сервера: основной и резервный.
Кратко рассмотрим порядок взаимодействия
Пользователь подключает устройство (корпоративный ноутбук или любое другое). Для этого он вызывает соответствующий интерфейс для настройки. Появляется окно подключения, где он вводит логин и пароль.
Точка доступа принимает эти данные и для проверки аутентификации передаёт на сервер RADIUS.
Сервер RADIUS по своим записям проверяет данного пользователя и его пароль, и, в зависимости от результата, возвращает одно из значений: «Accepted» (Принято) или «Rejected» (Отклонено).
При получении «Accepted» (Принято) между клиентом и точкой доступа происходит обмен индивидуальными ключами шифрования, действующими только на время, установленное для данной сессии.
Рисунок 1. Использование сервера RADIUS для аутентификации.
Вообще на тему установки RADIUS написано очень много How-to, в том числе интеграцией с различными СУБД, использованию веб-интерфейса и так далее.
Однако невозможно объять необъятное, поэтому сейчас остановимся на самой простой реализации: сервер FreeRADIUS без сторонних продуктов, который настраивается путём изменения конфигурационных файлов.
ВНИМАНИЕ! Ниже приводится именно простейший пример для иллюстрации, а не готовая шпаргалка для копирования и размножения у себя в рабочей среде.
Описание примера настройки и взаимодействия точки доступа с сервером RADIUS
Конфигурация сервера FreeRADIUS
Это виртуальная машина со следующими характеристиками: RAM 1GB, 1xCPU, виртуальный диск 20GB (можно меньше, лишь бы разместилась операционная система и необходимые пакеты).
В роли гипервизора — Oracle Virtual Box 6.1.18
В качестве гостевой операционной системы для экспериментов использовался дистрибутив Oracle Linux 6.3. В принципе, можно выбрать любой другой дистрибутив, если нет специальных ограничений.
FreeRADIUS — из стандартного репозитория.
Точка доступа
В качестве клиента (точки доступа) — используется модель Zyxel NWA210AX. Это современное устройство, поддерживающее интеграцию в облачной системе Zyxel Nebula и обладающее массой других достоинств.
Несмотря на то, что NWA210AX поддерживает новые протоколы безопасности WiFi 6 и может использовать сервис аутентификации Nebula, в нашем случае она прекрасно выступит в качестве устройства доступа в сети WPA 2 Enterprise.
Рисунок 2. Точка доступа NWA210AX.
Клиент для проверки подключения
В качестве платформы для проверки клиентского подключения — наиболее наглядно данный процесс отображается на последних версиях Mac OS X.
Установка и настройка сервера RADIUS
Перед установкой рекомендуется настроить файервольные правила, в частности, разрешить порты 1812, 1813, а также, если понадобиться, выполнить настройку SELinux. Нашей целью было показать взаимодействие с RADIUS, поэтому такие нюансы, как настройка сети, файервола, других средств безопасности выходят за рамки статьи и остаются за кадром. И мы сразу переходим к установке FreeRADIUS.
sudo install freeradius freeradius-utils -y
Обратите внимание, мы устанавливаем не только пакет freeradius, но и дополнительные инструменты freeradius-utils.
Из этого пакета нам понадобится утилита radclient для проверки пользователей.
После окончания установки настроим запуск сервиса при старте системы:
sudo systemctl enable radiusd
Для проверки запустим FreeRADIUS:
sudo systemctl start radiusd
Проверим его состояние:
sudo systemctl status radiusd
Пример ответа системы:
radiusd.service - FreeRADIUS high performance RADIUS server.
Loaded: loaded (/usr/lib/systemd/system/radiusd.service; enabled; vendor preset: disabled)
Active: active (running) since Thu 2021-02-04 13:36:11 EST; 7min ago
Process: 953 ExecStart=/usr/sbin/radiusd -d /etc/raddb (code=exited, status=0/SUCCESS)
Process: 872 ExecStartPre=/usr/sbin/radiusd -C (code=exited, status=0/SUCCESS)
Process: 821 ExecStartPre=/bin/sh /etc/raddb/certs/bootstrap (code=exited, status=0/SUCCESS)
Process: 810 ExecStartPre=/bin/chown -R radiusd.radiusd /var/run/radiusd (code=exited, status=0/SUCCESS)
Main PID: 970 (radiusd)
Tasks: 6 (limit: 12425)
Memory: 82.9M
CGroup: /system.slice/radiusd.service
L-970 /usr/sbin/radiusd -d /etc/raddb
Feb 04 13:36:10 localhost.localdomain systemd[1]: Starting FreeRADIUS high performance RADIUS server....
Feb 04 13:36:10 localhost.localdomain sh[821]: server.pem: OK
Feb 04 13:36:11 localhost.localdomain systemd[1]: Started FreeRADIUS high performance RADIUS server..
Дополнительно проверить можно командой:
sudo ps aux | grep radiusd
Ответ системы должен быть примерно таким:
root 7586 0.0 0.2 112716 2200 pts/1 R+ 01:28 0:00 grep --color=auto radiusd
radiusd 13320 0.0 1.5 513536 15420 ? Ssl Dec23 0:00 /usr/sbin/radiusd -d /etc/raddb
Для настройки нам понадобится только два конфигурационных файла из каталога /etc/raddb:
clients и users.
ВНИМАНИЕ! Ещё раз повторяем — это всего лишь пример, помогающий понять механизм работы. Такой примитивный вариант, например, когда записи пользователей и ключи хранятся открытым текстом — в production лучше не использовать. Но именно для иллюстрации работы самого RADIUS — чем меньше и проще настраивать, тем лучше.
В файле /etc/raddb/clients настраивается доступ из конкретной сети и задаётся общий ключ для сервера RADIUS и клиентов, в нашем случае — точек доступа.
sudo vi /etc/raddb/clients
Находим подходящий пример записи:
#client private-network-2 {
# ipaddr = 198.51.100.0/24
# secret = testing123-2
#}
и на его основе создаём свою запись:
client private-network-rpcm {
ipaddr = 192.168.0.0/24
secret = testing123-3
}
Для примера используется самый простейший вариант «из коробки», и по умолчанию информация о пользователях хранится в файле /etc/raddb/users. Создадим двух пользователей: ivan и rodeon.
sudo vi /etc/raddb/users
Обратите внимание на следующее предупреждение в самом конце файла:
#########################################################
# You should add test accounts to the TOP of this file! #
# See the example user "bob" above. #
#########################################################
Самый простой способ правильной вставки информации о пользователях — найти пользователя bob и добавить прямо под ним следующие строки:
ivan Cleartext-Password := "Pass1van"
Reply-Message := "Hello, %{User-Name}"
rodeon Cleartext-Password := "PassR0deon"
Reply-Message := "Hello, %{User-Name}"
Перезапустим сервис radiusd, чтобы тот перечитал конфигурационные файлы:
sudo systemctl restart radiusd
Предварительная проверка заключается в том, чтобы сервис radiusd повторно в штатном режиме стартовал без сообщений об ошибках. Выше мы уже выполняли такую проверку (после установки FreeRADIUS) командой:
sudo systemctl status radiusd
После того, как убедились в стабильной работе сервиса, выполним проверку через команду radclient с передачей имени пользователя.
sudo echo "User-Name=ivan,User-Password=Pass1van" | radclient 192.168.0.104:1812 auth testing123-3
Где:
- команда echo "User-Name= ivan,User-Password= Pass1van" передаёт имя пользователя и пароль;
- 192.168.0.104:1812 — адрес сервера с портом UDP;
- auth testing123-3 — указывается общий ключ testing123-3.
Если всё в порядке, ответ должен быть примерно таким:
Sent Access-Request Id 54 from 0.0.0.0:57939 to 192.168.0.104:1812 length 44
Received Access-Accept Id 54 from 192.168.0.104:1812 to 192.168.0.104:57939 length 33
Последняя и самая главная проверка: настроить на точке доступа NWA210AX подключение к данному серверу RADIUS и подключить выбранное клиентское устройство к WiFi сети.
Настройка подключения к RADIUS на точке доступа
Чтобы выполнить настройку, необходимо узнать адрес устройства. Для сетевого оборудования Zyxel это можно легко сделать при помощи сетевой утилиты ZON (Zyxel One Networking Utility). О ней можно подробнее узнать и бесплатно скачать на сайте Zyxel.
Рисунок 3. Утилита ZON (Zyxel One Networking Utility).
После того, как мы узнали IP, подключаемся через Интернет браузер.
Появляется первое окно с предложением сразу перейти к управлению через облачную среду Zyxel Nebula. Как уже было сказано выше, использовать «облако» проще, в отличие от автономной работы, в Nebula уже реализован аналог сервера аутентификации (и много чего другого, мониторинг, например). Но в данном случае используется автономная схема, поэтому выбираем режим — Standalone Mode.
Рисунок 4. Окно с предложением сразу перейти в облачную среду Nebula.
Далее идёт окно ввода имени пользователя и пароля. Пользователь по умолчанию — admin, пароль по умолчанию — 1234.
Рисунок 5. Окно ввода пользователя и пароля на NWA210AX.
Далее переходим в раздел Configuration —> AP Management. Нам необходимо настроить SSID профили.
В данном случае у нас два профиля: Wiz_SSID_1 и Wiz_SSID_2.
Для их настройки на соединение с RADIUS нужно задействовать элементы вызова окна редактирования (отмечено красным контуром на рисунке 6).
Рисунок 6. Раздел Configuration —> AP Management. Вызов окна редактирования SSID профиля.
Появится окно Edit SSID Profile Wiz_SSID_1.
В нём нас интересует переход к настройкам Security Profile (отмечено красным контуром на рисунке 7).
Рисунок 7. Окно Edit SSID Profile Wiz_SSID_1.
В появившемся окне Edit Security Profile Wiz_SEC_Profile_1 включаем опцию Primary Radius Server Activate и заполняем поля в соответствии с записями в файле /etc/raddb/clients нашего FreeRADIUS (отмечено красным контуром):
- Radius Server IP Address,
- Radius Server Port,
- Radius Server Secret.
Если есть резервный сервер RADIUS, то необходимо включить Secondary Radius Server Activate и заполнить для него значения (отмечено синим подчёркиванием). У нас тестовая среда, но в production наличие резервного сервера аутентификации обязательно.
Рисунок 8. Окно Edit Security Profile Wiz_SEC_Profile_1.
Среди прочего присутствует вкладка Advance, в которой можно задать дополнительные значения. В данном случае у нас довольно простой пример, поэтому лучше оставить всё по умолчанию.
Рисунок 9. Окно Edit Security Profile Wiz_SEC_Profile_11 с раскрытой вкладкой Advance.
Проверка подключения
Как уже было сказано выше, более или менее точно процесс установки беспроводной связи иллюстрирует интерфейс Mac OS Х.
После того, как в списке подключений нашли соответствующий пункт (по умолчанию он называется Zyxel), операционная система показывает окно ввода имени пользователя и пароля/ключа, хранящегося в системе RADIUS.
Рисунок 10. Запрос имени пользователя и пароля для входа в беспроводную сеть.
Далее происходит передача сертификата. В OS X об этом свидетельствует окно для подтверждения использования сертификата.
Рисунок 11. Окно проверки сертификата. Дополнительно нажата кнопка «Показать сертификат».
После этого можно работать, например, зайти по адресам, указанным в разделе Полезные ссылки (в конце статьи).
Заключение
Как видим, даже для такого простого примера нам потребовалось довольно много действий. Теперь представьте, что точек в сети довольно много. Позже мы рассмотрим, как можно обеспечить подобную систему аутентификации с меньшими усилиями благодаря облачной систем управления Zyxel Nebula или встроенным аппаратным решениям Zyxel.
Полезные ссылки
- Telegram chat Zyxel
- Форум по оборудованию Zyxel
- Много полезного видео на канале Youtube
- Особенности защиты беспроводных и проводных сетей. Часть 1 — Прямые меры защиты
- Двухдиапазонная точка доступа 802.11ax (WiFi 6) NWA210AX
- Zyxel ONE Network Utility (ZON)
- Домашняя страничка проекта FreeRADIUS
- Zyxel Nebula