Как поставить 2fa в Телеграмме

В статье описывается настройка сервера CentOS для включения двухфакторной аутентификации с Telegram ботом при подключении через ssh терминал.

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

Использование второго фактора на 99% сокращает риск неправомерного доступа и совершенно не усложняет процесс подключения для пользователей.

Возможные способы аутентификации:

  • Мобильное приложение MultiFactor
  • Telegram

Принцип работы​

  1. SSHD использует модуль PAM_RADIUS для второго фактора проверки подлинности
  2. Модуль подключается через RADIUS протокол к сервису Мультифактор
  3. Мультифактор отправляет через Telegram бота сообщение пользователю с подтверждением доступа
  4. Пользователь подтверждает в Telegram чате запрос доступа и подключается к терминалу

Перед началом работы​

Не закрывайте текущую ssh сессию, пока не убедитесь, что все работает.

Настройка Мультифактора​

  1. Зайдите в систему управления Мультифактором, зайдите в раздел «Ресурсы» и создайте новый Linux сервер. После создания вам будут доступны два параметра: Client ID и Shared Secret, они потребуются для последующих шагов.

Linux сервер

Как подключить 2FA через Telegram-бот?

  1. В разделе «Группы», зайдите в параметры группы «All users» и уберите флаг «Все ресурсы», чтоб только только пользователи определенной группы могли подключаться к Linux серверам.
  2. Создайте новую группу «Linux users», отключите все способы аутентификации кроме Telegram и укажите, что пользователи имеют доступ к созданному ресурсу Linux сервер.

Группа пользователей VPN

  1. В разделе «Пользователи» создайте пользователей, которые будут иметь доступ к Linux серверам, добавьте в группу «Linux users». Логин пользователя должен совпадать с логином на Linux сервере.

Пользователь VPN

  1. Отправьте пользователям ссылку на почту для настройки второго фактора аутентификации.

Пользователь VPN

Двухфакторная аутентификация (2FA) VPN с Telegram

Установка и настройка модуля PAM_RADIUS​

$ sudo yum -y install epel-release $ sudo yum -y install pam_radius

Далее создайте файл конфигурации

$ sudo vi /etc/pam_radius_ssh.conf

Впишите в него настройки RADIUS сервера Мультифактора, сохраните и закройте редактор (:x)

radius.multifactor.ru SHARED_SECRET 40

  • radius.multifactor.ru: адрес сервера
  • SHARED_SECRET: скопируйте из соответствующего параметра настроек Linux ресурса Мультифактор
  • 40: таймаут ожидания запроса с запасом

В файле хранится секретный ключ, поэтому установите на него права доступа на чтение только пользователю root

$ sudo chmod 0600 /etc/pam_radius_ssh.conf

Настройка PAM модулей ssh​

Откройте для редактирования файл /etc/pam.d/sshd

$ sudo vi /etc/pam.d/sshd

В файле закомментируйте строку auth substack password-auth и добавьте в конец следующую настройку:

auth required pam_radius_auth.so skip_passwd client_id=NAS_Identifier conf=/etc/pam_radius_ssh.conf

  • NAS_Identifier: скопируйте из соответствующего параметра настроек Linux ресурса Мультифактор.

Сохраните и закройте файл (:x). В итоге он должен выглядеть подобным образом:

#%PAM-1.0 auth required pam_sepermit.so #auth substack password-auth auth include postlogin # Used with polkit to reauthorize users in remote sessions -auth optional pam_reauthorize.so prepare account required pam_nologin.so account include password-auth password include password-auth # pam_selinux.so close should be the first session rule session required pam_selinux.so close session required pam_loginuid.so # pam_selinux.so open should only be followed by sessions to be executed in the user context session required pam_selinux.so open env_params session required pam_namespace.so session optional pam_keyinit.so force revoke session include password-auth session include postlogin # Used with polkit to reauthorize users in remote sessions -session optional pam_reauthorize.so prepare auth required pam_radius_auth.so skip_passwd client_id=rs_760d86a9b5b7f7607d11735e67757 conf=/etc/pam_radius_ssh.conf

Еще по теме:  Обозначение смайлов в Телеграмме в телефоне

Закомментированная строка отключает проверку пароля, а добавленная подключает второй фактор.

Настройка службы SSHD​

Отредактируйте файл /etc/ssh/sshd_config

$ sudo vi /etc/ssh/sshd_config

Источник: multifactor.ru

Второй фактор для Windows-аутентификации на Telegram (opensource)

Привет уважаемому сообществу! Решил представить на этой площадке новую версию своего opensource-проекта.

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

Предыдущую версию я представлял на хабре https://habr.com/ru/post/565298/, в принципе все новые функции текущей версии это результат обсуждения той статьи.

Не буду здесь приводить технические детали проекта, они есть на хабре, кратко расскажу о возможностях.

ServiceLogonMultifactor (SLMF) предназначен для отправки сообщения о заходе на компьютер и запроса на разрешение (второй фактор) в мессенджер «Телеграм».

SLMF полностью бесплатен, код открыт, не требует никаких подписок и не зависит от внешних поставщиков услуг кроме мессенджера.

По сравнению с предыдущей версией пользователю полностью блокируется интерфейс до получения разрешения.

Добавлена возможность получать данные о внешнем IP при подключении через шлюз удаленных рабочих столов (RDG) или VPN

Отличие от других решений:

  • Решение с открытым кодом, аналогичных решений я не нашел.
  • Используется мессенджер для доставки сообщений и подтверждений. Полагаю у Телеграмм надежность выше, чем у любой собственной, даже крупной разработки;
  • SLMF показывает информацию откуда совершен вход: консоль или IP в случае удаленного подключения.
  • Пользователь и/или администратор могут гибко регулировать уровень «бдения» от просто оповещать, до полной блокировки со списком доверенных узлов, при подключении с которых приходит только уведомление.
  • Есть базовые функции мониторинга: посмотреть процессы, загрузку памяти, uptime, пользователей. Подробнее здесь https://github.com/Constantine-SRV/ServiceLogonMultifactor/wiki/RU-7.-Примеры-команд
  • Блокировка реализована так, чтобы не влезать в процесс логина пользователя, что полностью исключает повреждение ОС при ошибках. Это существующая проблема других решений, например в документации CISCO 2FA https://duo.com/docs/rdp на первой же странице целый абзац как восстанавливать систему. Да и у меня лично были случаи когда из-за сбоя коммерческого 2FA приходилось восстанавливать OS.

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

Вот что я вижу для коммерческой версии:

  • Получение данных от RDG или VPN сервера о внешнем ИП;
  • Белые списки на основе стран, провайдеров или автономных систем AS;
  • Настройка уведомлений администратору при подключении из другой страны;
  • Отчетность по источникам подключений;
  • Централизованное управление конфигурациями;
  • Централизованный сбор логов;
Еще по теме:  Описание бота в Телеграмм

Основное из этого списка уже сделано, что-то делается, что-то еще в стадии планирования.

Что я надеюсь получить от этой публикации – советидеюпартнера, как дальше развивать этот проект. Я сам технарь, мои навыки продажника скорее отрицательны, и сам я этот проект коммерчески успешным не сделаю.

У меня уже был проект www.skypetime.ru, который хоть и окупился, даже принеся неплохую прибыль, но не оправдал возложенные на него надежды.

Бонус 5 000₽ на рекламу в Яндексе для новых клиентов

Подключить
25 комментариев
Написать комментарий.

О, старожилы с хабры потянулись на ВиСи, это радует.

Развернуть ветку

Так там уже почти никого не осталось. Комментариев мало, а адекватных комментариев вообще единицы.

Развернуть ветку

хабра постами больше славится, нежели комментариями, думаю, что не показатель вовсе.

Развернуть ветку

Уже не славится. Крючков просрал все полимеры.

Развернуть ветку

«Что я надеюсь получить от этой публикации – советидеюпартнера, как дальше развивать этот проект.»
Возможно, есть смысл нанять копирайтера — понял суть идеи только прочитав комментарии и статью второй раз. И даже сейчас не уверен, что правильно все понял))

Развернуть ветку

если на рынок выводить, то обязательно и не только копирайтера.
А вообще это нишевое решение, а для персонального компютера и подавно.

Развернуть ветку

Инвесторы нишевые решения не любят.

Развернуть ветку

На этом этапе инвестор не нужен. Закончить техническую часть средств достаточно. В данный момент больше наужно понимание надо ли это кому то, и если да то какой функционал? Что надо доделать добавить?
А с нишевыми решениями я еще в вышеупомянутом www.skypetime.ru столкнулся. Это система учета рабочего времени на основе данных из Skype for Business и Active directory.
C одной стороны рынок очень узкий, а с другой если человек пониает, что ему это нужно, то реальных альтернатив нет.

Развернуть ветку

Оно очень простое, несколько строчек кода — запускается поверх всех окон и блокирует ввод каждые полсекунды. Можно нажать ctrl+alt+del и даже открыть диспетчер задач только за полсекунды его можно разве что увидеть мелькнувшим на экране

По умолчанию блокировка 5 секунд если надо больше запускайте с параметром formBlockAccess.exe [sec].

Free, open-source software for adding a second authentication factor to Microsoft Windows for…
Free, open-source software for adding a second authentication factor to Microsoft Windows for…
Развернуть ветку

Я за полсекунды успеваю закрыть приложение из диспетчера задач. Делал раньше вирус, который просто был поверх экрана.
А через диспетчер методом «наития» закрывал это.

Развернуть ветку

Абсолютно не реально, пробуйте, приложение есть.
Когда тестировал и за секунду ничего не сделать, 500миллисекунд поставленно для гарантии.
Но можно и 300 и 100 миллисекунд интервал повторных блокировок поставить.

Развернуть ветку

Я делал на Delphi форму поверх других. Видимо, у нас что-то отличается. Мне удавалось.

Еще по теме:  Если утьебя есть Телеграм канал видно ли кто смотрел твой пост

Развернуть ветку

Все равно звучит как огромный недоделанный костыль. Почему бы не сделать v2, которая будет прерывать как раз таки виндовый вход? Потому что за полсекунды можно как минимум запустить удаление всего с рабочего стола.

Развернуть ветку

Вы код не смотрели и не пробовали.
Вот в этом модуле блокировка:
https://github.com/Constantine-SRV/ServiceLogonMultifactor/blob/master/formBlockAccess/BlockAndDisplay.cs
Поверх других окон это только косметическое, главное это полная блокировка ввода мыш, клавиатура, тачскрин через WinAPI.
[DllImport(«user32.dll», SetLastError = true)]
static extern bool BlockInput(bool fBlockIt);
Ничего сделать нельзя, ни в консоле ни в терминале.

Free, open-source software for adding a second authentication factor to Microsoft Windows for…
Развернуть ветку

Интересно. Такое решение может помочь учителю который оставил ноут на столе на время перемены. Теперь условный двоечник не сможет открыть ЭЖД и поправить себе оценку. Зачёт! Конкурент «windows hello».

Но от загрузки с флешки и даже от холодного рестарта shift+reboot это не спасает. Тут уже надо отдельно битлокер настраивать.

Развернуть ветку

Да именно для отдельностоящего компьютера оно и разрабатывалось.

От загрузки в safe mode или с флешки действительно защищает только битлокер.
Если есть возможность, его конечно надо использовать, иначе при наличии физического доступа с компьютером можно делать все что угодно.

Развернуть ветку

«Блокировка реализована так, чтобы не влезать в процесс логина пользователя»

Как такое возможно?

Развернуть ветку

Ничего не понятно, но очень круто!

Развернуть ветку

Привязывать двуфакторное решение к телеграмму плохо, а если опять забанят его, что тогда пилить свое приложение?

Развернуть ветку

Свое мобильное приложение — это еще и свой сервер с пуш уведомлениями. А в этом случае сразу отпадает вариант простой установки на один компьютер. Или нужна будет подписка на облачный сервис.
Да действительно смотришь на функционал ботов в телеграмме и понимаешь, что если начнутся попытки монетизации, то скорее всего они начнутся с функционала ботов.
Код написан так, что заменить телеграмм или добавить другой способ связи с пользователем не сложно. Если развивать платную версию, то конечно свое мобильное приложение и свой сервер делать придется.
Зато можно будет сделать более функционально с нормальным мониторингом и историей.

Развернуть ветку

А если не будет интернета, как сработает второй фактор, я не попаду на свой комп?

Развернуть ветку

Если источник подключения добавлен в белый список, то попадете, если нет то нет, все настраиваемо в конфигурационном файле.
Документация здесь:
https://github.com/Constantine-SRV/ServiceLogonMultifactor/wiki/RU-3.3.-Параметры-файла-Service.Config.xml

Развернуть ветку

Попробовал на одном терминале все работает, спасибо, полезная вещь.
На гите нет функционала получения внешних IP, как на него посмотреть?

Развернуть ветку

Спасибо за теплые слова!
Приглашаю принять участие в тестировании этого и других функционалов не включенных в бесплатную версию.
Пишите [email protected] с рабочего мейла и пару слов об инфраструктуре, где предполагается тестирование.

Развернуть ветку

Комментарий удален модератором

Развернуть ветку

Комментарий удален модератором

Источник: vc.ru

Рейтинг
( Пока оценок нет )
Загрузка ...