Pull to refresh

Free2FA4RDG: Создание бесплатного решения для двухфакторной аутентификации через Telegram-бота для Windows RD Gateway

Level of difficultyEasy

В мире, где безопасность данных становится все более критичной, необходимость в двухфакторной аутентификации (2FA) становится очевидной. Разочарованный отсутствием бесплатных Push-based 2FA решений для интеграции 2FA в службу RD Gateway Windows Server, я решил разработать свое собственное решение - Free2FA4RDG. Free2FA4RDG является бесплатным решением для двухфакторной аутентификации в Windows RD Gateway, использующим Telegram-бота в качестве второго фактора. Этот проект предлагает доступное и эффективное средство повышения безопасности удаленного рабочего стола (RDP), делая его особенно привлекательным для пользователей и организаций, ищущих экономичные способы усиления безопасности своих систем.

Основные компоненты

Free2FA4RDG состоит из нескольких ключевых компонентов, работающих вместе для обеспечения безопасности:

Микросервисная архитектура

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

  1. setup: Управляет начальной настройкой сертификатов.

  2. admin_html/admin_api: Административный интерфейс и его API.

  3. api: Главный API для обработки запросов аутентификации.

  4. freeradius: Интегрирует сервер FreeRADIUS для обработки запросов RADIUS.

  5. SQLite: Легковесная база для хранения настроек пользователей поставляемый в виде volume.

Совместимость и Требования

Система совместима со всеми RDG версиями Windows Server от 2012 до 2022. Для работы требуются: сервер с Docker Compose, доступ к `api.telegram.org` и `hub.docker.com`, а также регистрация Telegram-бота.

Процесс установки и работы

Подготовка сервера

1. Произведите установку Linux, выбрав Ubuntu 22.04 LTS или CentOS 7 (проверено на этих версиях).

2. Создайте директорию для настроек Free2FA4RDG:

mkdir -p /opt/2fa/ && cd /opt/2fa/

3. Запустите скрипт установки:

curl -o install.sh https://raw.githubusercontent.com/CLLlAgOB/free2fa4rdg/main/install.sh && bash install.sh

4. Следуйте инструкциям скрипта.

5. После завершения скрипта установки, вы можете запустить приложение из директории /opt/2fa/, либо из той директории, где был выполнен скрипт установки. Для запуска приложения используйте команду docker-compose up -d. Опция -d позволяет запустить приложение в фоновом режиме, не блокируя терминал.  

Если вы запустили приложение в фоновом режиме и хотите подключиться к потоку его логов, используйте команду docker-compose logs -f [service_name], где [service_name] - это имя сервиса в вашем docker-compose файле, для которого вы хотите просмотреть логи.  

Крайне рекомендую ограничить доступ к порту 1812 udp, с помощью фаервола на хостовой машине.

Настройка NPS

1. Создайте новую группу в разделе Remote RADIUS Server Groups:

   - Group name: free2fa4rdg

   - Server: IP-адрес Linux-сервера.

   - Shared secret: Ваш секрет, который будет в файле .env (`RADIUS_CLIENT_SECRET`).

   - Load Balancing: поставьте таймауты по 60 секунд.

2. В Connection Requests Policies откройте свойства политики `TS GATEWAY AUTHORIZATION POLICY` и установите `Forward requests to the following remote RADIUS server group for authentication: free2fa4rdg`.

Параметры конфигурации

  • FREE2FA_AUTO_REG_ENABLED: Автоматическая регистрация новых пользователей.(Новые пользователи буду создаваться в базе автоматически с Telegram ID 0, на портале администратора необходимо указать реальный ID)

  • FREE2FA_BYPASS_ENABLED: (true/false) Пропуск пользователей без запроса с Telegram ID 0.

  • RADIUS_CLIENT_SECRET: Секретная фраза для RADIUS.

  • FREE2FA_TIMEOUT: Время ожидания подтверждения входа(от 10 до 20).

  • RADIUS_START_SERVERS: Количество начальных процессов RADIUS сервера.

  • RADIUS_MAX_SERVERS: Максимальное количество процессов RADIUS сервера.

  • RADIUS_MAX_SPARE_SERVERS: Максимальное количество резервных процессов RADIUS сервера.

  • RADIUS_MIN_SPARE_SERVERS: Минимальное количество резервных процессов RADIUS сервера.

  • ADMIN_SECRET_KEY: Ключ администратора (генерируется, если оставить пустым).

  • RESET_PASSWORD: Включение функции сброса пароля(для сброса потребуется указать ADMIN_SECRET_KEY).

  • ALLOW_API_FAILURE_PASS: (true/false) Пускать пользователей без 2FA, если `api.telegram.org` недоступен.

  • ADDITIONAL_DNS_NAME_FOR_ADMIN_HTML: ДНС имя веб сайта админки. Необходимо прописать его в днс или hosts для удобства доступа.

Заключение

Free2FA4RDG представляет собой простое в использовании, но эффективное решение для внедрения двухфакторной аутентификации в инфраструктуру RD Gateway, усиливая безопасность без значительных затрат.

Репозиторий с приложением:

Tags:
Hubs:
You can’t comment this publication because its author is not yet a full member of the community. You will be able to contact the author only after he or she has been invited by someone in the community. Until then, author’s username will be hidden by an alias.