Вход в систему рабочего стола и аутентификация пользователей Linux¶
Compatible Nitrokeys |
|||||||
|---|---|---|---|---|---|---|---|
✓ active |
✓ active |
⨯ inactive |
⨯ inactive |
✓ active |
⨯ inactive |
⨯ inactive |
✓ active |
Введение¶
This guide will walk you through the configuration of Linux to use FIDO Universal 2nd Factor, i.e. FIDO U2F with libpam-u2f and compatible Nitrokeys.
You will set up your Nitrokey as a second factor for authentication. This means you will need your usual login method (likely your password) and your Nitrokey to login.
Если вы хотите использовать Nitrokey в качестве альтернативного метода входа (пароль ИЛИ Nitrokey), смотрите Альтернативный метод аутентификации после завершения основного руководства.
If you want to login to you computer using Nitrokey Pro 2, Nitrokey Storage 2 and Nitrokey Start you can visit the instructions available here.
Предупреждение
Следующее руководство может потенциально заблокировать ваш компьютер. Вы должны знать об этих рисках, так как рекомендуется сначала использовать приведенные ниже инструкции на дополнительном компьютере или после полного резервного копирования.
Вы можете потерять доступ к своим данным после настройки ` модулей PAM <https://www.man7.org/linux/man-pages/man8/pam.8.html>`__.
Требования¶
Ubuntu 24.04 with Gnome Display Manager (GDM).
Инструкции¶
Создайте резервного пользователя и предоставьте ему привилегии root.
$ sudo adduser <backup_user> $ sudo usermod -aG sudo <backup_user>
В случае если вы предпочитаете настроить U2F для одного пользователя, и ваш пользовательский сеанс заблокирован, вы все равно сможете войти в систему с помощью
<backup_user>, и продолжить обслуживание.Установка
libpam-u2f.On Ubuntu 24.04 it is possible to download directly
libpam-u2ffrom the official repos$ 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
Сгенерируйте файл конфигурации U2F.
To generate the configuration file we will use the
pamu2fcfgutility. First plug your Nitrokey (if you did not already), and enter the following command:$ pamu2fcfg > ~/u2f_keys
Once you run the command above, you will need to touch the device while it flashes. Once done,
pamu2fcfgwill append its output theu2f_keysfile in the format:<username>:KeyHandle,PublicKey,flags
This will look something like the following:
nitrouser:fS6vQ9uWa0VizcczyZ/bvk5kcQJkIJOC/21/e7dXFe/fnONSL705EkeiUpZpL/3seAWL/qW4/mqb0/WtiZoP/NOLTRM4EEAg1ANLsfYgSzRd/AjsW3z8kJwgckbvwDUyB90ByR09XtBhuE41vMsEk6J+9CS0+ZuPSB0KXRG7z2yZpQLldjE/ijsdIdd8Ct2oXSiZ/zTb/t5kRafNJVkp=,Oo4U9XvIhI9r0WNnvoMwG5/pbgwYd4GMCYEinhWcsI2hKUebYj92JOxDsSa3zd2A9OB0ofXgB16FD2naev3YmLch==,es256,+presence
Обратите внимание, что этот вывод не был сгенерирован непосредственно
pamu2fcfgи не содержит никакой конфиденциальной информации. Он предназначен только для того, чтобы показать ожидаемый формат и длину вывода.Совет
The file must be named
u2f_keysРекомендуется сначала протестировать инструкции на одном пользователе. Конфигурация других пользователей будет добавлена в разделе 7.
Setting up a backup Nitrokey
This step is optional, however it is advised to have a second Nitrokey as backup in the case of loss, theft or destruction of your primary Nitrokey.
To set up a backup key, repeat the procedure above, and use
pamu2fcfg -nlike this:$ pamu2fcfg -n >> ~/u2f_keys
This will omit the
<username>field, and the output is appended to the line with your<username>, this will look something like this:<username>:Zx...mw,04...0a:xB...fw,es256,+presence:04...3f,es256,+presence
Securing the config file
Для большей безопасности после создания файла конфигурации мы переместим созданный файл
~/u2f_keysна/etc/Nitrokey/и изменим разрешения доступа с помощью этих команд:$ sudo mkdir /etc/Nitrokey $ sudo mv ~/u2f_keys /etc/Nitrokey/ $ sudo chmod 644 /etc/Nitrokey/u2f_keys
Модификация подключаемого модуля аутентификации
PAM.Настройте файлы модуля PAM по адресу
/etc/pam.d/. Это этап тестирования - на шаге 8 конфигурация будет введена в действие, как только вы убедитесь, что она работает.In this guide we will modify the
common-authfile as it handles the authentication settings which are common to all services, other options are described in PAM Modules. You can modify the file with the following command:$ sudo editor /etc/pam.d/common-auth
Add the following line at the bottom of the file:
#Nitrokey config auth sufficient pam_u2f.so authfile=/etc/Nitrokey/u2f_keys cue [cue_prompt=Please touch the device.] prompt
Совет
Для тестирования мы используем значение sufficient, а на шаге 8 изменим его на required.
Поскольку мы используем Central Authentication Mapping, нам нужно указать
pam_u2fрасположение файла для использования с опциейauthfile.If you often forget to insert the key,
promptoption makespam_u2fprintInsert your U2F device, then press ENTER.and give you a chance to insert the Nitrokey.If you would like to be prompted to touch the Nitrokey,
cueoption will makepam_u2fprintPlease touch the device.message. You can change the message in[cue_prompt=Please touch the device.].
Примечание
Почему именно нижнее размещение? PAM обрабатывает модули сверху вниз. Размещение конфигурации U2F в нижней части обеспечивает проверку подлинности пароля в первую очередь, создавая рабочий процесс со вторым фактором (пароль + U2F).
Альтернативные варианты аутентификации (пароль ИЛИ Nitrokey) и подробные объяснения того, как положение строки и управляющие флаги влияют на аутентификацию, см. в разделе Альтернативный метод аутентификации.
Как только мы изменили
common-auth, мы можем сохранить и выйти из файла.You can test the configuration by typing
sudo lsin the terminal. After typing in your password you should be prompted with the messagePlease touch the device.and have a similar output on the terminal:nitrouser@nitrouser:~$ sudo ls [sudo] password for nitrouser: Please touch the device.
You can also test your configuration by logging out of the user session and logging back. A similar screen should be displayed once you you unplug/replug yout Nitrokey and type your password:
Setting up multiple users
Убедившись, что аутентификация с помощью Nitrokey прошла успешно, вы можете настроить файл конфигурации U2F для других пользователей вашей системы.
Предупреждение
Если вы не настроите всех пользователей в файле конфигурации U2F и продолжите применение аутентификации Nitrokey в шаге 8, вы не сможете войти в систему ни с одним не настроенным пользователем!
To configure u2f for multiple users,
pamu2fcfgtakes the-u <username>option, the output can be appended to theu2f_keysfile like this:$ sudo pamu2fcfg -u <username> >> /etc/Nitrokey/u2f_keys
Чтобы добавить резервный Nitrokey к этому пользователю, подключите резервный Nitrokey и выполните те же действия, что и для основного пользователя:
$ sudo pamu2fcfg -n >> /etc/Nitrokey/u2f_keys
После этого повторите этот процесс для всех пользователей в вашей системе.
Enforcing Nitrokey second factor authentication
Возможно, вы заметили, что аутентификация с помощью Nitrokey еще не применялась. Убедившись, что аутентификация с помощью Nitrokey действительно работает, мы можем усилить ее, изменив флаг
sufficientнаrequired.Предупреждение
Прежде чем продолжить этот шаг, убедитесь, что у вас есть:
Проверьте, что аутентификация с помощью Nitrokey действительно работает, иначе вы можете потерять доступ к компьютеру.
Создайте резервную копию Nitrokey. Иначе, если вы потеряете или сломаете Nitrokey, вы потеряете доступ к своему компьютеру!
Действуйте осторожно!
Для этого необходимо отредактировать файл конфигурации
PAM:$ sudo editor /etc/pam.d/common-auth
В строке, которую вы добавили ранее в нижней части файла, замените слово
sufficientнаrequired. Это должно выглядеть следующим образом:#Nitrokey config auth required pam_u2f.so authfile=/etc/Nitrokey/u2f_keys cue [cue_prompt=Please touch the device.] prompt
After completing the setup, it is recommended to reboot your computer and unplug/replug the Nitrokey.
Alternative Authentication Method¶
Если вы предпочитаете использовать Nitrokey в качестве альтернативы паролю (пароль ИЛИ Nitrokey), вы можете настроить это вместо него:
Configuration Steps:
Переместите строку конфигурации PAM в верхнюю часть **** ` /etc/pam.d/common-auth` (перед другими модулями аутентификации).
Держите флаг управления sufficient
Это позволяет выполнять аутентификацию только с помощью одного из факторов. Обратите внимание, что это обеспечивает меньшую безопасность, чем аутентификация по второму фактору.
Понимание режимов аутентификации
Комбинация положения линии и флажка управления определяет режим аутентификации:
Position |
Control Flag |
Authentication Mode |
Use Case |
|---|---|---|---|
Внизу (после pam_unix) |
|
Second factor (testing) |
Безопасный этап тестирования |
Внизу (после pam_unix) |
|
Второй фактор (принудительный) |
Production security (main guide) |
Вверху (до pam_unix) |
|
Alternative factor |
Convenience (password OR key) |
Как работает PAM:
PAM обрабатывает модули последовательно, сверху вниз. Флаг управления определяет, как успех или неудача влияют на общую аутентификацию:
sufficient: Успех завершает аутентификацию; неудача игнорируется, если другие модули достигли успехаrequired: Успех обязателен; неудача приводит к общему сбою аутентификации
Что это значит для вас:
Альтернативная аутентификация (верхняя + нижняя):
Вы можете войти в систему, используя свой пароль ИЛИ только Nitrokey.
If authentication with the Nitrokey succeeds, no password is required
Если аутентификация с помощью Nitrokey не удалась или была пропущена, пароль все равно будет работать
Это удобнее, но менее безопасно, чем аутентификация по второму фактору.
Security implications:
Злоумышленник с вашим паролем может войти в систему без Nitrokey.
Злоумышленник, имеющий физический доступ к вашему Nitrokey, может войти в систему без вашего пароля
Используйте его только в том случае, если удобство важнее максимальной безопасности
Подробное объяснение флагов управления и их последствий см. в разделе Флаги управления.
Модули PAM¶
Существует несколько файлов модулей PAM, которые могут быть изменены в соответствии с вашими потребностями:
By modifying
/etc/pam.d/common-authfile, you will be able to use you Nitrokey for 2nd factor authentication for graphic login andsudo.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.
Флаги управления¶
Флаг управления определяет поведение модуля PAM при успешной или неудачной аутентификации. На шаге 6 мы использовали флаг sufficient для тестирования, а затем изменили его на required для принудительного применения.
Доступны следующие флаги управления:
required: The module result must be successful for authentication to continue. This is the most critical flag and can lock you out of your computer if you do not have access to the Nitrokey.requisite: Аналогичноrequired, однако в случае, когда определенный модуль возвращает отказ, управление возвращается непосредственно приложению или вышестоящему стеку PAM. Этот флаг также может заблокировать ваш компьютер, если у вас нет доступа к ключу Nitrokey.sufficient: The module result is ignored if it fails. In case of success, control is directly returned to the application, or to the superior PAM stack. This means no other PAM modules will be executed. Thesufficientflag is considered safe for testing purposes.optional: The success or failure of this module is only important if it is the only module in the stack associated with this service+type. Theoptionalflag is considered safe to use for testing purposes.
Предупреждение
If
requiredorrequisiteis set, the failure of U2F authentication will cause a failure of the overall authentication. Failure will occur when the configured Nitrokey is not plugged, lost or destroyed.Вы потеряете доступ к своему компьютеру, если неправильно настроили модуль PAM и использовали флаги
requiredилиrequisite.Вы также потеряете возможность использовать
sudo, если вы установили Central Authentication Mapping. и использовали флагиrequiredилиrequisite.Вы также можете потерять возможность входа в систему с помощью диспетчера Gnome Display, если вход по смарт-карте принудительный и вы использовали флаги
requiredилиrequisite. Дополнительную информацию см. в разделе Устранение неполадок.
Устранение неполадок¶
Проблемы с входом в учетную запись пользователя с помощью GDM¶
В некоторых случаях, например, если у вас установлен opencs-pkcs11, Gnome Display Manager (GDM) может по умолчанию начать принудительный вход с помощью смарт-карты, как только к ней будет подключена любая смарт-карта (например, Nitrokey), даже если смарт-карта никогда не была настроена. Это может помешать вам войти в свою учетную запись пользователя с помощью u2f. Если вы установили флаг контроля sufficient, отключите все смарт-карты и войдите в систему, используя свой пароль. Чтобы отключить принудительное использование смарт-карт, выполните следующую команду:
$ sudo -u gdm env -u XDG_RUNTIME_DIR -u DISPLAY DCONF_PROFILE=gdm dbus-run-session gsettings set org.gnome.login-screen enable-smartcard-authentication false