Вход в систему рабочего стола и аутентификация пользователей Linux

Введение

This guide will walk you through the configuration of Linux to use FIDO Universal 2nd Factor, i.e. FIDO U2F with libpam-u2f and Nitrokey FIDO2.

Если вы хотите войти в компьютер с помощью Nitrokey Pro 2, Nitrokey Storage 2 и Nitrokey Start вы можете посетить инструкции, доступные здесь.

Требования

Инструкции

Метод графического интерфейса

  1. В левом нижнем углу нажмите на Show Applications и введите в строке поиска следующие параметры:

    имг1
  2. Прокрутите правую полосу вниз до Users.

    имг2
  3. В левом углу нажмите на Unlock и это запросит ваш пароль.

    img3
  4. Выберите Administrator и введите выбранные вами имя пользователя и пароль.

    имг4
  5. После завершения Шага 4 вы должны быть готовы

    имг5

Метод CLI

  1. Создайте резервного пользователя и предоставьте ему привилегии root.

    Это можно сделать с помощью следующих команд:

    $ sudo adduser <backup_user>
    $ sudo usermod -aG sudo <backup_user>
    

    В случае если вы предпочитаете настроить U2F для одного пользователя, и ваш пользовательский сеанс заблокирован, вы все равно сможете войти в систему с помощью <backup_user>, и продолжить обслуживание.

    Предупреждение

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

    Вы можете потерять доступ к своим данным после настройки ` модулей PAM <https://www.man7.org/linux/man-pages/man8/pam.8.html>`__.

  2. Настройте rules для распознавания Nitrokey FIDO2.

    Под /etc/udev/rules.d скачать 41-nitrokey.rules

    $ cd /etc/udev/rules.d/
    $ sudo wget https://raw.githubusercontent.com/Nitrokey/libnitrokey/master/data/41-nitrokey.rules
    

    И перезапустите службу udev.

    $ sudo systemctl restart udev
    
  3. Установка libpam-u2f.

    На Ubuntu 20.04 можно загрузить непосредственно libpam-u2f из официального репозитория

    $ sudo apt install libpam-u2f
    

    Примечание

    Нажмите для получения дополнительных опций

    • В качестве альтернативы вы можете собрать libpam-u2f из Git.

    • Чтобы убедиться, что библиотека установлена правильно, введите следующую команду:

    $ file /lib/x86_64-linux-gnu/security/pam_u2f.so
    

    Выходные данные должны быть примерно следующими:

    /lib/x86_64-linux-gnu/security/pam_u2f.so: \ ELF 64-bit LSB shared object, x86-64, version 1 (SYSV),\ dynamically linked, BuildID[sha1]=1d55e1b11a97be2038c6a139579f6c0d91caedb1, stripped
    
  4. Подготовка каталога

    Создайте .config/Nitrokey/ в вашем домашнем каталоге

    $ mkdir ~/.config/Nitrokey
    

    И подключите свой Nitrokey FIDO2.

    После завершения подготовки мы можем начать настройку компьютера на использование Nitrokey FIDO2 для двухфакторной аутентификации при входе в систему и sudo.

  5. Сгенерируйте файл конфигурации U2F.

    Для создания конфигурационного файла мы будем использовать утилиту pamu2fcfg, которая поставляется вместе с libpam-u2f. Для удобства мы запишем вывод утилиты непосредственно в файл u2f_keys в разделе .config/Nitrokey. Сначала подключите Nitrokey FIDO2 (если вы этого еще не сделали) и введите следующую команду:

    $ pamu2fcfg > ~/.config/Nitrokey/u2f_keys
    

    Запустив вышеуказанную команду, тебе нужно будет дотронуться до клавиши, пока она мигает. После этого pamu2fcfg добавит свой вывод в u2f_keys в следующем формате:

    <username>:Zx...mw,04...0a
    

    Обратите внимание, вывод будет намного длиннее, но чувствительные части здесь удалены. Для большей безопасности и после создания файла конфигурации мы переместим каталог .config/Nitrokey в каталог etc/ этой командой:

    $ sudo mv ~/.config/Nitrokey /etc
    

    Совет

    • Файл под .config/Nitrokey должен иметь имя u2f_keys.

    • Рекомендуется сначала протестировать инструкции с одним пользователем. Для этого предыдущая команда принимает опцию -u для указания пользователя, как в примере ниже:

      $ pamu2fcfg -u <username> > ~/.config/Nitrokey/u2f_keys
      
    • Для индивидуальной конфигурации пользователя вы должны указать домашний каталог на следующем шаге, или не включать опцию authfile в конфигурацию PAM.

  6. Бэкап

    Этот шаг необязателен, однако рекомендуется иметь резервный Nitrokey на случай потери, кражи или уничтожения вашего Nitrokey FIDO.

    Чтобы установить резервный ключ, повторите описанную выше процедуру и используйте pamu2fcfg -n. При этом поле <username> будет опущено, и вывод можно будет добавить к строке с вашим <username> следующим образом:

    <username>:Zx...mw,04...0a:xB...fw,04...3f
    
  7. Модификация подключаемого модуля аутентификации PAM.

    Последний шаг - настройка файлов модуля PAM в разделе /etc/pam.d/. В этом руководстве мы изменим файл common-auth, поскольку он обрабатывает настройки аутентификации, которые являются общими для всех сервисов, но возможны и другие варианты. Вы можете изменить этот файл с помощью следующей команды:

    $ cd /etc/pam.d
    $ sudo $editor common-auth
    

    И добавьте следующие строки в верхней части файла:

    #Nitrokey FIDO2 config
    auth    sufficient pam_u2f.so authfile=/etc/Nitrokey/u2f_keys cue [cue_prompt=Please touch the device.] prompt nouserok
    

    Совет

    • Поскольку мы используем Central Authentication Mapping, нам нужно указать pam_u2f расположение файла для использования с опцией authfile.

    • Если вы часто забываете вставить ключ, prompt опция сделает pam_u2f печать Insert your U2F device, then press ENTER. и даст вам шанс вставить Nitrokey.

    • If you would like to be prompted to touch the Nitrokey, cue option will make pam_u2f print Please touch the device. message. You can change the message in [cue_prompt=Please touch the device.].

    • nouserok будет гарантировать, что вы все еще можете войти в систему, используя имя пользователя и пароль, вы можете захотеть удалить это в какой-то момент, когда установка будет работать и вам не нужны будут обычные логины на основе имени пользователя и пароля.

    Как только мы изменили common-auth, мы можем сохранить и выйти из файла.

    Вы можете проверить конфигурацию, набрав sudo ls в терминале. Вам должно быть выдано сообщение Please touch the device. и аналогичный вывод на терминале:

    nitrouser@nitrouser:~$ sudo ls
    [sudo] password for nitrouser:  Please touch the device.
    

    Вы также можете проверить свою конфигурацию, выйдя из сеанса пользователя и снова войдя в систему. Аналогичный экран должен появиться после того, как вы отключите/подключите Nitrokey FIDO2 и введете пароль:

    img6

Использование

После модификации модуля PAM вы сможете сразу же протестировать свою конфигурацию, но рекомендуется перезагрузить компьютер и отключить/подключить Nitrokey FIDO2.

После того, как вы должным образом проверили инструкции данного руководства (и создали резервную копию), рекомендуется использовать либо флаг управления required, либо requisite вместо sufficient.

Флаги required и requisite обеспечивают более жесткий контроль доступа и делают Nitrokey FIDO2 необходимым для входа и/или использования настроенного сервиса.

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

Модули PAM

Существует несколько файлов модулей PAM, которые могут быть изменены в соответствии с вашими потребностями:

  • Изменив файл /etc/pam.d/common-auth, вы сможете использовать Nitrokey FIDO для двухфакторной аутентификации для графического входа и sudo. Примечание: common-auth следует изменить, добавив дополнительную строку конфигурации в конце файла.

  • If you wish to use FIDO U2F authentication solely for Gnome’s graphic login, you might prefer to modify the/etc/pam.d/gdm-password

  • Также вы можете просто изменить файл /etc/pam.d/sudo, если хотите использовать FIDO U2F при использовании команды sudo.

Флаги управления

В шаге 7 мы использовали управляющий флаг sufficient для определения поведения модуля PAM, когда Nitrokey подключен или нет. Однако это поведение можно изменить, используя следующие управляющие флаги:

  • required: Это самый важный флаг. Для продолжения аутентификации результат модуля должен быть успешным. Этот флаг может заблокировать ваш компьютер, если у вас нет доступа к Nitrokey.

  • requisite: Аналогично required, однако в случае, когда определенный модуль возвращает отказ, управление возвращается непосредственно приложению или вышестоящему стеку PAM. Этот флаг также может заблокировать ваш компьютер, если у вас нет доступа к ключу Nitrokey.

  • sufficient: Результат модуля игнорируется в случае неудачи. Флаг sufficient считается безопасным для целей тестирования.

  • optional: Успех или неудача этого модуля важны только в том случае, если это единственный модуль в стеке, связанный с данным типом сервиса. Флаг optional считается безопасным для использования в целях тестирования.

Предупреждение

  • Если установлено значение required или requisite, сбой аутентификации U2F приведет к сбою всей аутентификации. Сбой произойдет, если настроенный Nitrokey FIDO не подключен, потерян или уничтожен.

  • Вы потеряете доступ к своему компьютеру, если неправильно настроили модуль PAM и использовали флаги required или requisite.

  • Вы также потеряете возможность использовать sudo, если вы установили Central Authentication Mapping. и использовали флаги required или requisite.