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

Как защитить рабочий стол Ubuntu 10.10 с помощью LinOTP 2

• 8 min read • Безопасность • Обновлено 23 Nov 2025
Защита Ubuntu 10.10 рабочей станции с LinOTP 2
Защита Ubuntu 10.10 рабочей станции с LinOTP 2

LinOTP 2 позволяет добавить двухфакторную аутентификацию через одноразовые пароли (OTP) для входа в рабочий стол на Ubuntu 10.10 / Debian Squeeze. В статье показана установка из репозитория, настройка UserIdResolver, регистрация токена mOTP и интеграция с PAM. Приведены рекомендации по отладке, чеклисты для администратора и шаги восстановления при ошибках.

Введение

Эта инструкция проведёт вас по установке LinOTP как автономного бэкенда одноразовых паролей (OTP) на Linux‑машине. LinOTP обеспечивает модульную поддержку многих типов токенов и позволяет добавить второй фактор при входе в систему. Описанные шаги рассчитаны на Ubuntu 10.10 и Debian Squeeze; однако подойдут и для близких по конфигурации дистрибутивов с адаптацией путей и пакетов.

Краткое определение: LinOTP — серверная часть для управления одноразовыми паролями (OTP). Она хранит токены, валидирует OTP и предоставляет API для работы через веб-интерфейс или CLI.

Важно: Ubuntu 10.10 и Debian Squeeze могут быть устаревшими/неподдерживаемыми; при работе в продакшене рассмотрите обновление ОС или изоляцию серверов управления аутентификацией.

Основные цели статьи

  • Быстро развернуть LinOTP 2 на локальной машине
  • Настроить источники пользователей (UserIdResolver)
  • Зарегистрировать мобильный mOTP‑токен и проверить генерацию OTP
  • Интегрировать LinOTP с PAM для входа в GNOME
  • Дать советы по отладке, безопасности и восстановлению

Требования

  • Система: Ubuntu 10.10 или Debian Squeeze (или аналогичная)
  • Доступ root или sudo
  • Установленный Apache2 (LinOTP предлагает интеграцию с Apache)
  • Рабочая установка MySQL/MariaDB (LinOTP предложит создать базу) или возможность создания БД
  • Клиентский телефон с поддержкой mOTP (например, motp)

Настройка онлайн‑репозитория LinOTP

Сначала добавим GPG‑ключ, который подписывал пакеты, затем сам репозиторий. В этом HOWTO используется установка через репозиторий apt.

Скачайте ключ и добавьте его в систему:

wget http://linotp.org/apt/LSE\ LinOTP2\ Packaging\ [email protected]\ \(0xF86258E5\)\ pub.as   
sudo apt-key add http://linotp.org/apt/LSE\ LinOTP2\ Packaging\ [email protected]\ \(0xF86258E5\)\ pub.asc

Добавьте репозиторий в систему:

sudo add-apt-repository "deb http://linotp.org/apt/ubuntu lucid linotp2ce"

Примечание: если add-apt-repository отсутствует, можно добавить строчку вручную в /etc/apt/sources.list.d/linotp.list.

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

Обновите кеш пакетов и установите сервер, клиент управления и PAM‑модуль:

sudo apt-get update
sudo apt-get install linotp linotpuseridresolver libpam-linotp linotpadminclientce

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

  • Запускать LinOTP 2 через Apache2? — Yes
  • Пароль администратора LinOTP — придумайте сложный пароль
  • Создать самоподписанный сертификат? — Yes (для тестовой среды)
  • Какую СУБД использовать для базы токенов? — Mysql
  • Хост базы данных — localhost
  • Имя базы данных — LinOTP2
  • Пользователь базы данных — linotp2
  • Пароль пользователя базы данных — придумайте
  • Введите пароль root для MySQL, чтобы создать базу и таблицы
  • Создать таблицы? — yes

Во время установки будет создан файл ключа шифрования: /etc/linotp2/encKey. Сохраните резервную копию этого файла, он необходим для восстановления токенов.

Важно: права доступа. Если после установки появляется “internal server error”, проверьте /var/log/apache2/error.log и права на /var/log/linotp и /etc/linotp2. Директория /etc/linotp2 должна принадлежать пользователю linotp.

Пример исправления прав:

sudo chown -R linotp:linotp /etc/linotp2
sudo chown -R linotp:linotp /var/log/linotp

Управление LinOTP: веб-интерфейс и CLI

После установки доступны два способа управления:

Если в вебе появляется ошибка, см. логи Apache и LinOTP.

Конфигурация UserIdResolver (источник пользователей)

LinOTP читает пользователей через UserIdResolver. В AGPLv3‑сборке доступен PasswdUserIdResolver для чтения пользователей из файлов в формате /etc/passwd.

Вы можете использовать файл /etc/passwd или собственный файл в том же формате. В Enterprise‑издании доступны резолверы для LDAP и SQL.

Пример настройки резолвера через CLI:

linotpadm.py --url=https://localhost --admin=admin --command=setresolver --resolver=defaultPW --rtype=FILE --rf_file=/etc/passwd

Ожидаемый отклик в JSON:

{ u'status': True,....}

Добавьте резолвер в realm по умолчанию и установите его как default:

linotpadm.py --url=https://localhost --admin=admin --command=setrealm --realm=defrealm --resolver=useridresolver.PasswdIdResolver.IdResolver.defaultPW
linotpadm.py --url=https://localhost --admin=admin --command=setdefaultrealm --realm=defrealm

Проверьте список пользователей:

linotpadm.py --url=https://localhost --admin=admin --command=listuser

Вы должны увидеть пользователей из /etc/passwd.

Регистрация OTP‑токена (пример mOTP)

В качестве примера мы зарегистрируем mOTP‑токен для мобильного телефона. Можно также использовать OATH‑токены или Google Authenticator‑совместимые приложения.

Скачайте приложение motp: http://motp.sourceforge.net и установите на телефон. Инициализируйте токен, введя PIN 0000 при первом запуске — на экране отобразится init‑secret.

Зарегистрируйте токен в LinOTP через CLI (пример для пользователя cornelius):

linotpadm.py --url=https://localhost --admin=admin --command=inittoken --user=cornelius --type=motp --otpkey=860e2e9bf9d50665 --serial=1 --otppin=1234

Пояснение параметров:

  • otpkey — init‑secret, который показал телефон
  • serial — заданный вами серийный номер токена
  • otppin — PIN, который вводится на телефоне перед генерацией OTP

Опционально можно установить строгий PIN для токена:

linotpadm.py --url=https://localhost --admin=admin --command=set --pin=Password --serial=1

После регистрации проверьте портал аутентификации:

https://localhost/auth/index

Для входа используйте имя пользователя и в качестве пароля — сочетание вашего PIN и сгенерированного OTP (в зависимости от конфигурации: PIN может быть в начале или конце). Если аутентификация не проходит, проверьте правильность init‑secret и синхронизацию времени на телефоне.

Интеграция с PAM для входа в GNOME

LinOTP устанавливает модуль /lib/security/pam_linotp.so. Создадим отдельный PAM‑файл и подключим его в нужных службах.

Скопируйте стандартный common‑auth и создайте common‑linotp:

cp /etc/pam.d/common-auth /etc/pam.d/common-linotp

В /etc/pam.d/common-linotp замените строку:

auth    [success=1 default=ignore]      pam_unix.so nullok_secure

на

auth    [success=1 default=ignore]      pam_linotp.so debug nosslhostnameverify nosslcertverify url=https://localhost/validate/simplecheck realm=defrealm resConf=defaultPW

Важно: опция debug выводит подробную информацию, включая пароли, в системные логи. Используйте её только для отладки.

Подключите common-linotp вместо common-auth в нужном PAM‑файле, например для gdm:

@include common-linotp

Если хотите, чтобы разблокировка экрана также требовала OTP, измените /etc/pam.d/gnome-screensaver аналогично.

После этого при входе вас будут спрашивать не обычный «Password», а «Your OTP» или соответствующий локализованный текст в дисплей‑менеджере.

Если вход не проходит, проверьте /var/log/auth.log и логи LinOTP.

Отладка и частые ошибки

  • “Internal server error” в вебе — смотрите /var/log/apache2/error.log. Частая причина — неверные права на /etc/linotp2 или /var/log/linotp.
  • Ошибки при обращении к базе — убедитесь, что MySQL работает и пароль root введён верно во время установки.
  • Неправильный OTP — проверьте init‑secret и время на телефоне (mOTP чувствителен к времени).
  • PAM не срабатывает — проверьте порядок модулей в /etc/pam.d/* и права на библиотеку pam_linotp.so.

Полезные команды для диагностики:

sudo tail -f /var/log/apache2/error.log /var/log/auth.log /var/log/linotp/linotp.log
sudo ps aux | grep linotp
mysql -u root -p -e "SHOW DATABASES;"

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

Если LinOTP не подходит или вы хотите другую архитектуру, рассмотрите:

  • Google Authenticator PAM (простая OATH‑TOTP интеграция)
  • FreeRADIUS + YubiKey/OTP (для сетевой аутентификации и 802.1X)
  • LDAP/Active Directory + LinOTP Enterprise resolver (для централизованного управления пользователями)
  • Аппаратные токены (YubiKey) для более высокого уровня защиты

Выбор зависит от требуемого уровня безопасности, масштаба и наличия аппаратных токенов.

Когда LinOTP может не подойти

  • Если вам нужны аппаратные смарт‑карты с PKI вместо OTP
  • В средах с высокой регуляторной нагрузкой, где требуется HSM для хранения ключей
  • Если ОС устарела и нельзя обеспечить безопасность транспортного канала (TLS)

Ментальные модели и рекомендации

  • Разделение ролей: управление токенами отделено от аутентификации — резервируйте и ограничивайте доступ к LinOTP‑админке.
  • Минимальный привилегированный доступ: сервисы должны иметь минимальные права к БД и файловой системе.
  • Fail‑open vs fail‑closed: решите политику при недоступности LinOTP — блокировать входы или временно откатиться на локальные пароли.

Факты для планирования (без привязки к числам версий)

  • Требуется отдельная база данных для токенов и пользователей (можно локальная MySQL).
  • Необходимо хранить файл encKey и резервную копию для восстановления токенов.
  • Логи аутентификации содержат чувствительные данные при включённом debug — отключайте в продакшне.

Чеклист для администратора перед вводом в эксплуатацию

  • Сделать резервную копию /etc/linotp2/encKey
  • Проверить владельца и права /etc/linotp2 и /var/log/linotp
  • Убедиться, что Apache использует корректный сертификат TLS
  • Создать отдельного пользователя БД с ограниченными правами
  • Отключить debug в pam_linotp после отладки
  • Протестировать вход для 3–5 пользователей с разными токенами

Критерии приёмки

  • LinOTP отвечает на запросы в /manage без 500 ошибок
  • CLI команды (listuser, inittoken) возвращают успешный статус
  • Аутентификация через PAM проходит для тестовых пользователей
  • Резервная копия /etc/linotp2/encKey хранится в надёжном месте

Плейбук восстановления при инциденте

  1. Если LinOTP не отвечает:
    • Проверить статусы Apache и LinOTP‑сервиса
    • Просмотреть /var/log/apache2/error.log и /var/log/linotp/linotp.log
  2. Если база повреждена:
    • Остановить LinOTP
    • Восстановить базу из резервной копии
    • При необходимости восстановить /etc/linotp2/encKey
  3. Если encKey утерян:
    • Токены восстановить нельзя без ключа; восстановите из резервной копии или реинициализируйте токены у пользователей

Тестовые сценарии и критерии приёмки

  • Создать тестового пользователя, инициализировать токен, пройти вход — успех
  • Включить debug, убедиться, что в логах появляется информация, затем выключить
  • Изменить права /etc/linotp2 на неправильные и убедиться, что сервис выдаёт ошибку, затем восстановить права и проверить восстановление

Краткий глоссарий

  • OTP — одноразовый пароль
  • mOTP — мобильная реализация OTP, зависящая от времени
  • Realm — область/контекст пользователей в LinOTP
  • UserIdResolver — модуль, читающий список пользователей

Безопасность и советы по жёсткой защите

  • Используйте валидный TLS‑сертификат вместо самоподписанного в продакшене
  • Ограничьте доступ к веб‑интерфейсу LinOTP по IP или VPN
  • Храните резервные копии encKey в сейфе/на удалённом носителе
  • Минимизируйте привилегии БД и сейфите учётные данные

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

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

Итог

LinOTP 2 даёт гибкий и расширяемый способ добавить двухфакторную аутентификацию на рабочий стол Linux. Следуя шагам этой инструкции, вы сможете установить сервер, зарегистрировать mOTP‑токены и интегрировать проверку OTP в PAM для GNOME. Обязательно настройте права, TLS и резервные копии перед вводом в эксплуатацию.

Важно: перед развёртыванием в продакшене протестируйте все сценарии отказа и план восстановления.

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

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

Несколько аккаунтов Skype: Multi Skype Launcher
Программное обеспечение

Несколько аккаунтов Skype: Multi Skype Launcher

Журнал для работы: повысить продуктивность
Productivity

Журнал для работы: повысить продуктивность

Персональные звуки уведомлений на Android
Android.

Персональные звуки уведомлений на Android

Скачивание шоу Hulu для офлайн‑просмотра
Стриминг

Скачивание шоу Hulu для офлайн‑просмотра

Microsoft Start: персонализированная новостная лента
Новости

Microsoft Start: персонализированная новостная лента

Как изменить имя в Epic Games быстро
Гайды

Как изменить имя в Epic Games быстро