Гид по технологиям

Массовая запись YubiKey в LinOTP

5 min read Аутентификация Обновлено 03 Oct 2025
Массовая запись YubiKey в LinOTP
Массовая запись YubiKey в LinOTP

О чём эта инструкция

YubiKey по умолчанию содержит секрет, привязанный к сервису Yubico. Во многих организациях это неприемлемо — вы хотите хранить ключи локально и контролировать процесс аутентификации. YubiKey поддерживает режим RFC-совместимого HOTP-токена: в устройство можно записать HMAC-секрет, а затем использовать его с сервером аутентификации, например LinOTP.

LinOTP — это сервер аутентификации с открытым кодом на Linux, поддерживающий mOTP, TOTP, HOTP, OCRA, SMS и другие методы. Начиная с LinOTP 2.4.1 (и в версии 2.5.0 на момент написания), реализована возможность массовой записи YubiKey.

Важно: процедура записывает секреты в устройства; храните их и базу LinOTP в соответствии с политиками безопасности вашей организации.

Ключевые понятия

  • YubiKey — аппаратный токен от Yubico, поддерживает HOTP/TOTP и другие режимы.
  • HOTP — одноразовые пароли на основе HMAC, RFC 4226.
  • LinOTP — сервер для управления OTP-токенами и верификации.
  • linotpadm.py — CLI-клиент администратора LinOTP.

Требования и подготовка

  • Рабочий сервер с установленным LinOTP и доступом администратора.
  • Установленный клиент linotpadm (linotpadminclientce).
  • Физический доступ к YubiKey и USB-порты на машине, где выполняется запись.
  • Права на изменение udev-прав или возможность запуска от пользователя, имеющего доступ к USB-устройству.

Установка LinOTP сервера

LinOTP — Python-веб-приложение. Можно установить вручную через easy_install/pip или пакеты .deb из репозитория/домашней страницы проекта. В репозитории доступны собранные пакеты (на момент публикации — для Ubuntu 12.04 LTS). Инструкции по установке сервера см. на официальном сайте LinOTP.

Теперь предполагаем, что сервер LinOTP установлен, администратор настроен, а userstore сконфигурирован.

Установка клиента администратора LinOTP

LinOTP предоставляет консольный admin client (linotpadminclientce). Он дополняет Web UI и содержит команды, недоступные в веб-интерфейсе.

Установить клиент можно из репозитория (если вы добавили репозиторий) или из PyPI:

apt-get install linotpadminclientce 

или

pip install linotpadminclientce

После установки клиент готов к использованию.

Доступ к YubiKey по USB (udev)

Обычно обычный пользователь не имеет прав на запись HMAC-ключа в YubiKey. Не рекомендуется запускать linotpadm как root. Вместо этого добавьте правило udev, чтобы консольный пользователь мог получить доступ к USB-устройству.

Создайте файл /etc/udev/rules.d/70-yubikey-enrollment.rules:

vi /etc/udev/rules.d/70-yubikey-enrollment.rules

Вставьте в него следующее содержимое (пример из yubikey-personalization):

# Udev rules for letting the console user access the Yubikey USB
# device node, needed for challenge/response to work correctly.
ACTION=="add|change", SUBSYSTEM=="usb", \
  ATTRS{idVendor}=="1050", ATTRS{idProduct}=="0010|0110|0111", \
  TEST=="/var/run/ConsoleKit/database", \
  RUN+="udev-acl --action=$env{ACTION} --device=$env{DEVNAME}"

После создания правила перезагрузите udev или систему, чтобы изменения вступили в силу.

Пошаговая методика массовой записи YubiKey

  1. Убедитесь, что пользователь, выполняющий запись, находится в консольной сессии и имеет доступ к USB (udev).
  2. Запустите linotpadm от имени администратора LinOTP (не root-сессии операционной системы, а аутентификация в LinOTP производится через параметры команды).
  3. По очереди вставляйте YubiKey и нажимайте Enter для записи.
  4. Завершите запись, введя «x».

Команда для запуска массовой записи:

% linotpadm.py -U https://localhost -a admin -C yubikey_mass_enroll

Пример вывода:

Please enter password for ‘admin’:
Please insert the next yubikey and press enter (x=Exit):
{ u’status’: True, u’value’: True}
Please insert the next yubikey and press enter (x=Exit): x

linotpadm.py читает серийный номер YubiKey и создаёт токен в базе LinOTP с идентификатором вида YUBI123456 (в соответствии с серийным номером). Это упрощает дальнейшее назначение токенов пользователям.

Контроль качества и критерии приёмки

  • Токен отображается в списке токенов LinOTP и имеет серийный номер YubiXYZ.
  • Для токена установлен тип HOTP и корректные параметры (counter, digits).
  • При ручной проверке challenge/response аутентификация проходит успешно.
  • Администратор зафиксировал список серийных номеров и назначил токены пользователям.

Роль‑ориентированные чеклисты

Администратор сервера:

  • Установил и настроил LinOTP.
  • Создал учётную запись администратора LinOTP для команды записи.
  • Настроил безопасный доступ к серверу (TLS, firewall).

Оператор по записи YubiKey:

  • Имеет доступ к консоле с udev-политиками.
  • Проверил, что клиент linotpadm установлен и работает.
  • Имеет список учётных записей, кому выдаются токены.
  • Фиксирует серийный номер каждого устройства.

Что может идти не так (частые ошибки и решения)

  • Нет доступа к USB: проверьте udev-правила и перезапустите udev.
  • linotpadm не запускается: проверьте версию python, зависимости и путь к клиенту.
  • Токен создан, но аутентификация не проходит: проверьте настройки HOTP (digits, counter) и синхронизацию счётчика.
  • Серийный номер не читается: убедитесь, что устройство корректно подключено и не заблокировано другим процессом.

Альтернативные подходы

  • Ручная персонализация каждого YubiKey с помощью yubikey-personalization GUI/CLI.
  • Использование готовых корпоративных решений управления ключами от поставщиков HSM для центрального хранения секретов.
  • Выпуск временных одноразовых паролей с последующей сменой на постоянные секреты уже в LinOTP.

Когда этот подход не подходит

  • Если вы хотите привязать устройство исключительно к сервисам Yubico (без локального контроля).
  • Когда требуется централизованное аппаратное хранение ключей на HSM с тонким разграничением прав — возможно, лучше интегрировать LinOTP с HSM.

Безопасность и рекомендации

  • Не запускайте linotpadm как системный root-аккаунт без необходимости.
  • Ограничьте доступ к машине, где происходит запись, и логируйте операции.
  • Резервно храните базу LinOTP и политику восстановления доступа.
  • Планируйте процесс замены/отзыва токенов (SOP на случай потери устройства).

Краткое руководство для оператора (cheat sheet)

  • Подготовка: убедиться в udev-правиле и наличии linotpadm.
  • Запуск: linotpadm.py -U https://localhost -a admin -C yubikey_mass_enroll
  • Вставлять YubiKey по одному, нажимать Enter.
  • Ввод «x» — закончить сессию.

Словарь (одна строка)

HOTP — стандарт одноразовых паролей на основе HMAC (RFC 4226).

Итог

Массовая запись YubiKey в LinOTP позволяет централизованно выпускать и управлять аппаратными HOTP-токенами, сохраняя контроль над секретами и интегрируя токены в существующие политики аутентификации. Следуйте правилам безопасности, проверяйте доступ по USB и фиксируйте серийные номера для дальнейшего распределения токенов.

Примечание: перед началом массовой записи отработайте процесс на 2–3 тестовых устройствах, чтобы избежать ошибок при полном развёртывании.

Удачной аутентификации!

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Установка OpenERP 6 на Ubuntu 10.04 LTS
Установка

Установка OpenERP 6 на Ubuntu 10.04 LTS

Как изменить гамму монитора в Windows
Мониторы

Как изменить гамму монитора в Windows

ИГ: курс по Kali Linux и реальные риски
Кибербезопасность

ИГ: курс по Kali Linux и реальные риски

Разблокировать iPhone без пароля — эффективные способы
iPhone

Разблокировать iPhone без пароля — эффективные способы

Как восстановить аккаунт Snapchat за 30 дней
Социальные сети

Как восстановить аккаунт Snapchat за 30 дней

Как посмотреть понравившиеся посты в Instagram
Социальные сети

Как посмотреть понравившиеся посты в Instagram