Настройка двухфакторной аутентификации с помощью pam_usb

Используйте внешний накопитель как дополнительный ключ доступа – это просто. Не нужно тянуть лишние пакеты: достаточно базовой установки из стандартного репозитория Red OS.

Команда для установки: dnf install pam_usb. Все. Драйвера и зависимости подтянутся автоматически.

Проверьте, как система видит флешку. Подключите её, выполните lsusb и dmesg | grep sd. Устройство должно стабильно определяться как /dev/sdX – без плясок с UUID и сменой адреса при перезагрузке.

Важно: перед началом убедитесь, что учетная запись root не будет отрезана от консоли в случае сбоя модуля. Иначе – привет, аварийный режим.

Создайте каталог для конфигурации: mkdir -p /etc/pamusb.conf.d. Основной конфиг – /etc/pamusb.conf. Добавьте пользователя, устройство, путь к ключу, метод сопоставления. Без абстракций, всё напрямую. Пример секции:


user {
    device "SanDiskCruzer"
    keyfile "/dev/sdb1/.authkey"
}

Файл авторизации – простой бинарник. Можно сгенерировать через pamusb-genkey, но проще – руками. Любой 64-байтовый файл с энтропией, например из /dev/urandom.

Модуль подключается в PAM-цепочку. Пример для /etc/pam.d/login:


auth sufficient pam_usb.so
auth required pam_unix.so

Внимание! pam_usb должен быть первым в списке. Иначе он не успеет прервать аутентификацию при ошибке ключа.

В Red OS могут быть конфликты с system-auth. Если включено использование common-auth, модуль нужно вставлять именно туда, иначе вход продолжится по старому сценарию.

Тестируйте на второй консоли. Один терминал – сессия администратора, второй – проверка. Не торопитесь. Любая ошибка в конфиге = невозможность войти в систему.

Журнал покажет всё: journalctl -xe | grep pam_usb. Здесь будут все сигналы: успешно ли смонтирован, видит ли флешку, принят ли ключ.

Не используйте китайские noname-брелоки – они часто теряют связь или меняют ID. Подойдут только те, что стабильно монтируются в одно и то же устройство.

Для удалённого входа через SSH модуль не поможет. USB-носитель должен быть локальным. Если нужен аналог для SSH – смотрите в сторону ключей и PKCS#11.

Читайте также:  S3FS: Монтирование корзин Amazon S3 на системах Ubuntu и Debian

И да, не забывайте: всегда должен быть бэкап-доступ. Один сбой – и можно остаться перед чёрным экраном GRUB с руками по швам.

Установка pam_usb и подготовка USB-носителя для аутентификации

Ставим пакет напрямую. Без обёрток. Red OS уже содержит нужный RPM:

dnf install pam_usb

Никаких лишних зависимостей. Всё чисто. Проверка наличия:

rpm -q pam_usb

Флешка нужна простая. Без U3, без аппаратного шифрования. Обычный FAT32, до 4 ГБ. Почему? Потому что стабильность монтирования > удобства.

Подключаем. Смотрим, как система её видит:

lsblk -p | grep -i sd
dmesg | tail -n 20

Нас интересует стабильный путь. Например, /dev/sdb1. Убедитесь, что он не меняется при перезагрузке. Если скачет – используйте udev-правила.

Создаём ключ. Можно руками:

dd if=/dev/urandom of=/media/user/usbkey/.authkey bs=64 count=1

Права доступа: только чтение для root. Ни в коем случае не делайте ключ исполняемым. Пример:

chmod 400 /media/user/usbkey/.authkey

Теперь настройка профиля. Создаём файл /etc/pamusb.conf. Пример структуры:


user {
    device "KingstonDT"
    keyfile "/dev/sdb1/.authkey"
}

Проверьте ID флешки. Можно так:

pamusb-conf --add-device KingstonDT

Или вручную – через udevadm info --query=all --name=/dev/sdb | grep ID_MODEL

Важно помнить: при смене порта USB, некоторые модели меняют ID. Надёжнее привязаться к серийному номеру.

Для проверки используйте pamusb-check user. Если всё видит – конфигурация работает. Не видит? Ищите ошибки в правописании или доступе к файлу.

Смонтируйте вручную, если нужно:

mount /dev/sdb1 /mnt/usb

Отключите автоматическое монтирование в DE. GNOME и KDE любят вмешиваться. Используйте терминал.

Внимание! Не доверяйте ключам, созданным на машине без источника энтропии. Только /dev/random или /dev/urandom в окружении с работающей сетью и пользовательской активностью.

Всё. Флешка готова. Система знает, как её читать. Двигаемся к интеграции в PAM.

Читайте также:  Создание установочной флешки с Ред ОС - подробное руководство

Настройка конфигурационных файлов pam_usb на основе структуры системы

Файл /etc/pamusb.conf – точка входа. Если он отсутствует, модуль не работает. Никаких исключений.

Создайте вручную. Или используйте генератор:

pamusb-conf --add-user root --device USBKEY

Результат – блок с описанием учетной записи и флешки. Структура примитивная. Вот базовый пример:


root {
    device "USBKEY"
    keyfile "/dev/sdb1/.authkey"
}

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


device "USBKEY" {
    vendor "SanDisk"
    model "Cruzer Blade"
    serial "4C530001230511118291"
}

Имена должны совпадать с udevadm info --query=all --name=/dev/sdb. Не угадывайте. Копируйте точно.

Проверьте наличие файла-ключа. Путь должен быть абсолютным. Если флешка автоматически монтируется в другое место – задайте фиксированный mount point через udev-правила или fstab.

Red OS использует PAM-профили system-auth и password-auth, которые включаются в login, gdm-password, sudo. Не лезьте во все файлы сразу. Измените system-auth:


auth [success=1 default=ignore] pam_usb.so
auth requisite pam_unix.so

Порядок критичен. pam_usb должен стоять первым. Он даёт шанс – либо флешка, либо отказ. pam_unix запустится, только если флешки нет.

Помните: если перепутать последовательность, вы заблокируете систему. Проверяйте всё на отдельной консоли перед финальным применением.

Если вход в систему идёт через LightDM или GDM – правьте соответствующие файлы, например /etc/pam.d/gdm-password. Используйте тот же блок, что и выше.

Модуль не пишет в лог по умолчанию. Включите отладку:

echo "debug" > /etc/pamusb.conf.d/debug

Или задайте напрямую:


options {
    debug true
}

Проверка командой:

pamusb-check root

Ожидаем сообщение: USB device detected и authentication succeeded. Иначе – ошибка в пути, правах или ID.

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

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

Проверка работы двухфакторной аутентификации и устранение частых ошибок

Начинайте с простого: команда pamusb-check root. Она скажет больше, чем сто логов. Ожидаемый результат – строка USB device detected и Authentication succeeded. Нет этих слов? Система вас не узнаёт.

Читайте также:  Полное руководство по использованию Ngrok для создания публичных адресов для локальных серверов

Смотрите журнал:

journalctl -xe | grep pam_usb

Если пишет device not found – значит неправильно указан идентификатор. Проверьте udevadm info --name=/dev/sdb. Скопируйте значения ID_VENDOR, ID_MODEL, ID_SERIAL дословно. Без кавычек. Без сокращений. Без самодеятельности.

Ошибка keyfile not found? Это значит, путь к ключу невалиден. Или точка монтирования не совпадает с тем, что указан в конфиге. Или флешка монтируется в /run/media/user, а вы ждёте её в /media/usb.

Не угадывайте. Узнайте командой:

findmnt | grep sdb1

Убедитесь, что путь совпадает с keyfile в конфиге. Ошиблись – нет доступа. Всё просто.

Внимание! Если ключевик читается, но вход не проходит, проверьте SELinux. В режиме enforcing он может блокировать доступ к /dev. Временно переключитесь в permissive: setenforce 0.

Проблема с порядком PAM-блоков? Да, бывает. Используйте pam_tally2 --user root – может вы сами себя залочили при тестировании. Разблокировка:

pam_tally2 -u root -r

Ошибка user not configured? Значит в /etc/pamusb.conf нет соответствующего блока. Добавьте вручную или сгенерируйте:

pamusb-conf --add-user root --device USBKEY

Флешка физически не определяется? Проверьте:

lsusb
lsblk
dmesg | tail

Если не видно – аппаратная проблема или брак устройства. Меняйте накопитель. Не обсуждается.

Конфигурация верна, флешка читается, вход не работает? Смотрите цепочки PAM. Возможно, вы правили не тот файл. Для терминала – /etc/pam.d/login. Для GUI – /etc/pam.d/gdm-password. Для su и sudo – /etc/pam.d/su, /etc/pam.d/sudo.

Важно помнить: изменение PAM-файлов без понимания их логики – прямой путь к потере доступа. Всегда держите открытую сессию root в другом терминале.

Последний тест – войти в систему без флешки. Должно отказать. Если пропускает – значит pam_usb.so не сработал или стоит в неверном порядке. Перепроверьте всё. Прямо по байтам.

Только после успешной блокировки и корректной разблокировки можно считать схему внедрённой. Остальное – имитация.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *