OpenVPN
OpenVPN (https://openvpn.net) - технология виртуальной частной сети (VPN).
Подключение OpenVPN к Blitz Identity Provider выполняется по протоколу RADIUS и состоит из двух этапов:
-
Этап 1. Настройки на стороне Blitz Identity Provider
-
Этап 2. Настройки на стороне OpenVPN
Этап 1. Настройки на стороне Blitz Identity Provider
В консоли управления Blitz Identity Provider перейдите в раздел RADIUS и выполните следующие действия:
- Нажмите на Сегменты сети и создайте новый сегмент. Задайте следующие параметры:
-
Имя: укажите имя сети. Например,
openvpn
. -
Подсеть: укажите
192.168.122.96/32
. - Общий ключ: задайте секретный ключ для безопасной аутентификации приложения.
- Нажмите Сохранить.
- Перейдите на вкладку Процедуры обработки запросов и задайте параметры:
- Статус: переместите переключатель в режим on.
-
Идентификатор процедуры: укажите идентификатор процедуры. Например,
OpenVPN2FA
.
- Вставьте код процедуры:
package com.identityblitz.idp.radius.flow;
import org.slf4j.LoggerFactory;
import org.slf4j.Logger;
import com.identityblitz.idp.radius.flow.RadiusResult.*;
public class OpenVPN2FA implements RadiusFlow {
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());
} else if (context.factor() == 2) {
final java.util.Map<String, String> answers = new
java.util.HashMap<String, String>();
answers.put("1", "sms");
answers.put("2", "totp");
return RadiusResult.dialog("challengeChoose", answers);
} else {
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");
}
}
}
-
Нажмите Сохранить и Активировать.
-
В консоли управления Blitz Identity Provider перейдите в раздел Приложения и Создайте новое приложение, задав его базовые настройки:
-
Идентификатор (entityID или client_id): введите имя приложения. Например,
openvpn
. -
Название: укажите имя приложения OpenVPN. Например,
openvpn access server
. -
Домен:
http://localhost
.
-
Нажмите Сохранить.
-
Далее нажмите кнопку Параметры у предложения openvpn и отредактируйте параметры приложения:
-
Протоколы: выберите
RADIUS
и нажмите Сконфигурировать -
Процедура обработки: выберите
OpenVPN2FA
-
Нажмите Сохранить.
-
Далее перейдите в раздел RADIUS на вкладку Сегменты сети. Укажите Приложение по умолчанию:
openvpn access server
.
-
Откройте для редактирования конфигурационный файл
/etc/blitz-config/custom_messages/messages
и добавьте в него строкуradius.display.dialog.challenge.name.sms=SMS
. -
Перезапустите приложение blitz-idp командой
systemctl restart blitz-idp
.
Этап 2. Настройки на стороне OpenVPN
- В веб-консоли OpenVPN в разделе Authentication перейдите в Settings и укажите RADIUS в качестве подсистемы аутентификации по умолчанию.
- В разделе Authentication перейдите в RADIUS и укажите параметры подключения к Blitz, как указано ниже.
- В консоли сервера выполните команду для создания файла с настройками подключения:
/usr/local/openvpn_as/scripts/sacli --prefer-tls-crypt-v2 GetGeneric >/tmp/client.ovpn
.
Настройка подключения клиента
- Перенесите файл настроек на клиента с помощью команды
nmcli connection import type openvpn file ~/tmp/client.ovpn
- Далее импортируйте файл с помощью команды
mcli connection modify client vpn.user-name test
- Подключитесь к тестовой учетной записи с настроенным TOTP с помощью команды
nmcli connection up client
.