Хотел бы спросить, особенно тех, кто запускает большие среды с большим количеством пользователей, есть ли какие-либо стандартизированные или рекомендуемые в отрасли способы безопасного распространения проверочных кодов среди удаленных пользователей и / или принуждения пользователя к повторному запуску Google-Authenticator в первую очередь когда они входят через ssh на хост Linux, который настроен с помощью модуля libpam, требующего от пользователя ввода пароля unix плюс проверочный код каждый раз, когда они входят в систему через ssh? Предполагая, что системный администратор настраивает учетную запись, есть ли способ сделать это;
(а) не требовать google-Authenticator при первом входе в систему и заставлять их запускать его, чтобы они могли безопасно получить свой проверочный код; или (б) системный администратор запускает его для них как часть создания учетной записи, и безопасно (и легко, учитывая, что может быть много пользователей) распространяет код плюс пароль unix пользователю?
Обратите внимание, что системный администратор может использовать команду «chage», чтобы заставить пользователя изменить свой пароль unix при первом входе в систему.
Меня интересуют все практические решения для этого, особенно те, которые успешно реализованы в больших средах. Как передать двухфакторный код новым пользователям? Отправить его через текстовое сообщение на их сотовые телефоны? Напишите это на листках бумаги и вручите им? ....?
Мне не известны какие-либо общедоступные решения (с открытым исходным кодом или иным образом) для распространения ключей в локальные системы. Я сделал это двумя способами.
1) FreeIPA (Redhat IDm)
Если у вас есть возможность использовать FreeIPA для своей системы управления пользователями, вы можете добавить TOTP / Google Authentication для всех учетных записей, управлять тем, какие системы требуют 2FA с помощью HBAC.
2) Внутреннее приложение, написанное разработчиками
В одном случае мы централизованно хранили секреты BASE32 в базе данных SQL (с шифрованием 2016) и распространили эти ключи на серверы аутентификации шлюза (радиус). У каждого из этих серверов есть агент, который извлекает ключи из конечной точки API и записывает их в определенную папку. Наше внутреннее приложение также используется для другой информации о сотрудниках, поэтому именно здесь мы показываем их QR-коды. Мы не используем google-auth для генерации кода, только сам модуль pam.
Мы также не писали одноразовые ключи, поскольку эти ключи фактически не будут одноразовыми, и перераспределение этих файлов предотвратит ротацию этих ключей.
Также примите во внимание права доступа к локальным файлам, пользователей службы и selinux, не запускайте pam от имени пользователя root.
Насколько я знаю, отраслевого стандарта в отношении google 2fa не существует.
Если у вас есть решение для управления конфигурацией, вы можете использовать его для развертывания Google 2fa для всех своих пользователей.
У меня были те же потребности, что и у вас, в моем случае я написал модуль Ansible, который устанавливает, настраивает и отображает аварийные ключи для пользователя, ожидая, что пользователь будет достаточно ответственным, чтобы записать их для себя.
Модуль также создает пользователя с именем «rescue», который всегда может получить доступ к машине.
С небольшим дополнением к модулю вы можете заставить модуль экспортировать аварийные ключи каждого пользователя на некоторый общий сетевой диск, которым вы будете управлять / делать резервную копию.
Я не уверен, что это полный ответ для вас, но взгляните на мои модуль.