Вход в систему рабочего стола и аутентификация пользователей Linux#
Введение#
Это руководство поможет вам настроить Linux для использования FIDO Universal 2nd Factor, т.е. FIDO U2F с libpam-u2f
и Nitrokey FIDO2.
Если вы хотите войти в компьютер с помощью Nitrokey Pro 2, Nitrokey Storage 2 и Nitrokey Start вы можете посетить инструкции, доступные здесь.
Требования#
Ubuntu 20.04 с Gnome Display Manager.
Nitrokey FIDO2 настроен, следуя этим инструкциям.
Инструкции#
Метод графического интерфейса#
В левом нижнем углу нажмите на
Show Applications
и введите в строке поиска следующие параметры:Прокрутите правую полосу вниз до
Users
.В левом углу нажмите на
Unlock
и это запросит ваш пароль.Выберите
Administrator
и введите выбранные вами имя пользователя и пароль.После завершения Шага 4 вы должны быть готовы
Метод CLI#
Создайте резервного пользователя и предоставьте ему привилегии 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>`__.
Настройте
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
Установка
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
Подготовка каталога
Создайте
.config/Nitrokey/
в вашем домашнем каталоге$ mkdir ~/.config/Nitrokey
И подключите свой Nitrokey FIDO2.
После завершения подготовки мы можем начать настройку компьютера на использование Nitrokey FIDO2 для двухфакторной аутентификации при входе в систему и
sudo
.Сгенерируйте файл конфигурации 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.
Бэкап
Этот шаг необязателен, однако рекомендуется иметь резервный Nitrokey на случай потери, кражи или уничтожения вашего Nitrokey FIDO.
Чтобы установить резервный ключ, повторите описанную выше процедуру и используйте
pamu2fcfg -n
. При этом поле<username>
будет опущено, и вывод можно будет добавить к строке с вашим<username>
следующим образом:<username>:Zx...mw,04...0a:xB...fw,04...3f
Модификация подключаемого модуля аутентификации
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 prompt nouserok
Совет
Поскольку мы используем Central Authentication Mapping, нам нужно указать
pam_u2f
расположение файла для использования с опциейauthfile
.Если вы часто забываете вставить ключ,
prompt
опция сделаетpam_u2f
печатьInsert your U2F device, then press ENTER.
и даст вам шанс вставить Nitrokey.Если вы хотите, чтобы вам было предложено коснуться клавиши Nitrokey,
cue
опция заставитpam_u2f
напечатать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 и введете пароль:
Использование#
После модификации модуля PAM вы сможете сразу же протестировать свою конфигурацию, но рекомендуется перезагрузить компьютер и отключить/подключить Nitrokey FIDO2.
После того, как вы должным образом проверили инструкции данного руководства (и создали резервную копию), рекомендуется использовать либо флаг управления required
, либо requisite
вместо sufficient
.
Флаги required
и requisite
обеспечивают более жесткий контроль доступа и делают Nitrokey FIDO2 необходимым для входа и/или использования настроенного сервиса.
Если вам нужна дополнительная информация о флагах управления в строке конфигурации PAM
, вы можете посмотреть последний раздел этого руководства, чтобы понять разницу и последствия использования каждого из них.
Модули PAM#
Существует несколько файлов модулей PAM, которые могут быть изменены в соответствии с вашими потребностями:
Изменив файл
/etc/pam.d/common-auth
, вы сможете использовать Nitrokey FIDO для двухфакторной аутентификации для графического входа иsudo
. Примечание:common-auth
следует изменить, добавив дополнительную строку конфигурации в конце файла.Если вы хотите использовать аутентификацию FIDO U2F только для графического входа в Gnome, вы можете изменить
/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
.