Как стать автором
Обновить

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

Уровень сложностиПростой

В мире, где безопасность данных становится все более критичной, необходимость в двухфакторной аутентификации (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, усиливая безопасность без значительных затрат.

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

Теги:
Хабы:
Данная статья не подлежит комментированию, поскольку её автор ещё не является полноправным участником сообщества. Вы сможете связаться с автором только после того, как он получит приглашение от кого-либо из участников сообщества. До этого момента его username будет скрыт псевдонимом.