Доступ к сетевым службам по 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 выполните следующие действия:

  1. В консоли управления перейдите в раздел RADIUS.

  2. Последовательно настройте конфигурацию сервера.

    Общие настройки

    На данной вкладке указываются общие настройки сервера RADIUS.

    • Статус: включение сервера.

    • Сетевой адрес привязки: список адресов, с которых сервер обрабатывает запросы.

      Совет

      Для обработки запросов со всех доступных сетевых интерфейсов установите 0.0.0.0.

    • Сетевой порт: порт RADIUS, на который принимаются запросы. Если порт не указан, то используется порт 1812.

    • Максимальное количество обрабатываемых запросов: максимальное количество одновременно обрабатываемых сервером запросов (остальные отбрасываются).

    • Время ожидания второго фактора: время в секундах, которое дается пользователю для прохождения второго фактора.

      Внимание

      Данное время должно быть согласовано с RADIUS-клиентом за счет корректной настройки времени ожидания ответа RADIUS-сервера.

    server_radius_general

    Нажмите Сохранить.

    Сегменты сети

    Идентификация приложений осуществляется по сегментам сети. Укажите подсеть, общий ключ и приложение по умолчанию, чтобы запрос из данной подсети ассоциировался с этим приложением. Если несколько приложений запрашивают аутентификацию из одной подсети, то их можно идентифицировать по NasId.

    Внимание

    Подсети с более узким префиксом имеют приоритет.

    • Имя: введите произвольное имя сегмента сети.

    • Подсеть: введите префикс подсети, запросы из которой будут ассоциироваться с приложением.

    • Общий ключ: сгенерируйте и введите ключ, который нужно будет ввести на стороне сетевой службы.

    • Приложение по умолчанию: выберите приложение, с которым будет ассоциироваться запрос из данной подсети. Если приложений несколько, оно будет выступать приложением по умолчанию.

    • Соответствие NasId и приложений: если предполагается, что из одной подсети запрашивать аутентификацию будет несколько приложений, задайте NasId, по которым сервер RADIUS будет их идентифицировать.

    server_radius_segments

    Нажмите Сохранить.

    Процедуры обработки запросов

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

    Для создания процедуры обработки запросов выполните следующие действия:

    1. Нажмите Создать новую процедуру обработки запросов.

    2. Задайте настройки:

      • Статус: включение процедуры.

      • Идентификатор процедуры: задайте идентификатор процедуры.

        Внимание

        Java класс, описывающий процедуру обработки запросов, должен иметь такое же название.

      • Описание: введите описание процедуры.

      server_radius_procedures

    3. Нажмите Сохранить.

    4. Введите исходный код процедуры:

      • Для управления процессом обработки RADIUS запросов необходимо написать на языке Java класс, реализующий интерфейс RadiusFlow.

      • В случае использования второго фактора аутентификации вызовите RadiusResult.more("method"), где method принимает одно из следующих значений: sms, push, totp, hotp, email, prfc (подтверждение в Личном кабинете пользователя).

        Примечание

        При подтверждении через Личный кабинет в нем появляется сообщение о попытке входа, в котором пользователь должен нажать Подтвердить.

        Внимание

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

        Пример процедуры 2FA через подтверждение в Личном кабинете#
        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).

        Пример процедуры 1FA#
        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");
            }
          }
        
        }
        
    5. Для компиляции нажмите Сохранить.

Шаг 2. Настройка приложения#

Для настройки приложения выполните следующие действия:

  1. В консоли управления перейдите в раздел Приложения. Создайте приложение с базовыми настройками.

    • Идентификатор (entityID или client_id),

    • Название,

    • Домен: домен сетевой службы.

    Нажмите Сохранить.

  2. В секции Протоколы приложения на вкладке RADIUS задайте следующие настройки:

    • Поставьте флажок Пароль проверяется приложением самостоятельно, если Blitz Identity Provider будет использоваться для второго фактора аутентификации.

    • Время ожидания второго фактора: время в секундах, которое дается пользователю для прохождения второго фактора. Если параметр не задан, будет взято значение из настроек сервера RADIUS.

      Внимание

      Данное время должно быть согласовано с RADIUS-клиентом за счет корректной настройки времени ожидания ответа RADIUS-сервера.

    • Выберите процедуру обработки запросов от приложения. В списке Процедура обработки отображаются все созданные на сервере RADIUS процедуры.

      Внимание

      Внимательно настраивайте интеграцию на стороне сетевой службы. Если в приходящих от приложения запросах не определен NasId, приложение узнается Blitz Identity Provider как приложение по умолчанию для данного сегмента сети, даже если фактически это разные приложения. В этом случае будет выполняться процедура обработки запросов, установленная для приложения по умолчанию, а не та, которая выбрана.

    Нажмите Сохранить.

Шаг 3. Настройка на стороне сетевой службы#

Для завершения подключения введите следующие настройки на стороне сетевой службы:

  • IP-адрес сервера с blitz-idp.

  • Общий ключ, заданный в настройках сегмента сети, соответствующего приложению (сетевой службе) на сервере RADIUS. По данному ключу сервер будет опознавать сетевую службу и запускать выбранную для нее процедуру обработки доступа.

  • NasId (при необходимости).

  • Время ожидания ответа от сервера RADIUS, соответствующее установленному на сервере времени ожидания второго фактора.