Доступ к сетевым службам по RADIUS#
Существует возможность настроить подключение пользователей к точкам сетевого доступа (RDP, VPN, Wi-Fi и др.) по протоколу RADIUS. Настройка подключения выполняется в описанной ниже последовательности.
Справка по RADIUS
Remote Authentication Dial In User Service (RADIUS) RFC 2865 — протокол, используемый для централизованного управления авторизацией, аутентификацией и учетом доступа в сетевые службы и оборудование. Через данный протокол выполняется взаимодействие между сервером и клиентом RADIUS. После запроса пользователем доступа в сетевую службу соответствующий клиент отправляет серверу запрос, в результате которого сервер проверяет наличие пользователя в базе данных. Если пользователь найден, сервер отправляет клиенту разрешение на его аутентификацию.
Сервером RADIUS выступает Blitz Identity Provider, клиентом — подключенная сетевая служба. В текущей реализации сервер выполняет поиск пользователей во всех подключенных хранилищах. Сетевые службы настраиваются в Blitz Identity Provider как приложения.
Сервер поддерживает следующие методы аутентификации:
первый фактор: вход по логину и паролю;
второй фактор: подтверждение по коду из SMS, PUSH, TOTP, HOTP, email или через Личный кабинет пользователя.
Шаг 1. Конфигурирование сервера RADIUS#
Для конфигурирования сервера RADIUS в Blitz Identity Provider выполните следующие действия:
В консоли управления перейдите в раздел RADIUS.
Последовательно настройте конфигурацию сервера.
Общие настройки
На данной вкладке указываются общие настройки сервера RADIUS.
Статус
: включение сервера.Сетевой адрес привязки
: список адресов, с которых сервер обрабатывает запросы.Совет
Для обработки запросов со всех доступных сетевых интерфейсов установите
0.0.0.0
.Сетевой порт
: порт RADIUS, на который принимаются запросы. Если порт не указан, то используется порт1812
.Максимальное количество обрабатываемых запросов
: максимальное количество одновременно обрабатываемых сервером запросов (остальные отбрасываются).Время ожидания второго фактора
: время в секундах, которое дается пользователю для прохождения второго фактора.Внимание
Данное время должно быть согласовано с RADIUS-клиентом за счет корректной настройки времени ожидания ответа RADIUS-сервера.
Нажмите Сохранить.
Сегменты сети
Идентификация приложений осуществляется по сегментам сети. Укажите подсеть, общий ключ и приложение по умолчанию, чтобы запрос из данной подсети ассоциировался с этим приложением. Если несколько приложений запрашивают аутентификацию из одной подсети, то их можно идентифицировать по
NasId
.Внимание
Подсети с более узким префиксом имеют приоритет.
Имя
: введите произвольное имя сегмента сети.Подсеть
: введите префикс подсети, запросы из которой будут ассоциироваться с приложением.Общий ключ
: сгенерируйте и введите ключ, который нужно будет ввести на стороне сетевой службы.Приложение по умолчанию
: выберите приложение, с которым будет ассоциироваться запрос из данной подсети. Если приложений несколько, оно будет выступать приложением по умолчанию.Соответствие
NasId
и приложений: если предполагается, что из одной подсети запрашивать аутентификацию будет несколько приложений, задайтеNasId
, по которым сервер RADIUS будет их идентифицировать.
Нажмите Сохранить.
Процедуры обработки запросов
Данная вкладка содержит список процедур на Java, которые будут обрабатывать запросы из подключенных приложений. Процедуры определяют фактор аутентификации и реализуют другие политики доступа в сетевые ресурсы. В простейшем случае процедуры включают первый либо второй фактор. Можно создать несколько процедур в зависимости от требований к безопасности различных сетевых точек.
Для создания процедуры обработки запросов выполните следующие действия:
Нажмите Создать новую процедуру обработки запросов.
Задайте настройки:
Статус
: включение процедуры.Идентификатор процедуры
: задайте идентификатор процедуры.Внимание
Java класс, описывающий процедуру обработки запросов, должен иметь такое же название.
Описание
: введите описание процедуры.
Нажмите Сохранить.
Введите исходный код процедуры:
Для управления процессом обработки RADIUS запросов необходимо написать на языке Java класс, реализующий интерфейс
RadiusFlow
.В случае использования второго фактора аутентификации вызовите
RadiusResult.more("method")
, гдеmethod
принимает одно из следующих значений:sms
,push
,totp
,hotp
,email
,prfc
(подтверждение в Личном кабинете пользователя).Примечание
При подтверждении через Личный кабинет в нем появляется сообщение о попытке входа, в котором пользователь должен нажать Подтвердить.
Внимание
Для того чтобы фактор сработал, Личный кабинет должен быть открыт с обязательным прохождением двух факторов аутентификации.
package com.identityblitz.idp.radius.flow; public class RadTest2 implements RadiusFlow { public String loginN12(final String login) { return login; } public RadiusResult next(final RadiusContext context) { if (context.factor() == 1) { //return RadiusResult.more("sms"); return RadiusResult.more("prfc"); } return RadiusResult.authenticated(context.subject()); } }
В случае использования первого фактора деактивируйте условие
if (context.factor() == 1)
.package com.identityblitz.idp.radius.flow; public class TestRadius implements RadiusFlow { public String loginN12(final String login) { return login; } public RadiusResult next(final RadiusContext context) { return RadiusResult.authenticated(context.subject()); } }
В процедуре можно отображать выбор способа подтверждения
RadiusResult.challenge
, а также инструкцию для прохождения второго фактораRadiusResult.dialog
.private final Logger logger = LoggerFactory.getLogger("com.identityblitz.idp.flow.radius"); public String loginN12(final String login) { return login; } public RadiusResult next(final RadiusContext context) { if (context.factor() == 1) { return RadiusResult.challenge(Challenges.password()); } return RadiusResult.authenticated(context.subject()); } public RadiusResult dialog(final RadiusContext context, final String message, final java.util.Map<String, String> answers, final String answer) { if(message.equals("challengeChoose")) { final String challenge = answers.get(answer); if(challenge != null) return RadiusResult.challenge(Challenges.byName(challenge)); else return RadiusResult.dialog(message, answers); } else { return RadiusResult.rejected("unsupportedMessage"); } } }
Для компиляции нажмите Сохранить.
Шаг 2. Настройка приложения#
Для настройки приложения выполните следующие действия:
В консоли управления перейдите в раздел Приложения. Создайте приложение с базовыми настройками.
Нажмите Сохранить.
В секции Протоколы приложения на вкладке RADIUS задайте следующие настройки:
Поставьте флажок
Пароль проверяется приложением самостоятельно
, если Blitz Identity Provider будет использоваться для второго фактора аутентификации.Время ожидания второго фактора
: время в секундах, которое дается пользователю для прохождения второго фактора. Если параметр не задан, будет взято значение из настроек сервера RADIUS.Внимание
Данное время должно быть согласовано с RADIUS-клиентом за счет корректной настройки времени ожидания ответа RADIUS-сервера.
Выберите процедуру обработки запросов от приложения. В списке
Процедура обработки
отображаются все созданные на сервере RADIUS процедуры.Внимание
Внимательно настраивайте интеграцию на стороне сетевой службы. Если в приходящих от приложения запросах не определен
NasId
, приложение узнается Blitz Identity Provider как приложение по умолчанию для данного сегмента сети, даже если фактически это разные приложения. В этом случае будет выполняться процедура обработки запросов, установленная для приложения по умолчанию, а не та, которая выбрана.
Нажмите Сохранить.
Шаг 3. Настройка на стороне сетевой службы#
Для завершения подключения введите следующие настройки на стороне сетевой службы:
IP-адрес сервера с
blitz-idp
.Общий ключ, заданный в настройках сегмента сети, соответствующего приложению (сетевой службе) на сервере RADIUS. По данному ключу сервер будет опознавать сетевую службу и запускать выбранную для нее процедуру обработки доступа.
NasId
(при необходимости).Время ожидания ответа от сервера RADIUS, соответствующее установленному на сервере времени ожидания второго фактора.