!!! ОСТОРОЖНОСТЬ !!!

!!! ОСТОРОЖНОСТЬ !!!

Недавно я попробовал systemd-homed и, сделав это, зарегистрировал свой Yubikey как устройство FIDO2. Когда я пытаюсь аутентифицироваться с помощью созданного дома, homectl authenticate <user>он корректно активирует Yubikey, запрашивает PIN-код и ждет касания, затем следует обычный запрос пароля.

Но когда я продолжаю и вхожу в эту учетную запись с tty, мне предлагают только ввести пароль, U2F полностью пропускается. Тем не менее, ранее заблокированный дом расшифровывается и открывается, даже если Yubikey отключен.

Как я могу заставить U2F использоваться для любой аутентификации? Я знаю о pam-u2f, но если это имеет значение здесь, я не знаю как. Я не могу сопоставить ресурсы по защите «традиционного» входа пользователя с pam-u2fэтим сценарием. Они всегда начинают с создания ключей, но они, похоже, управляются systemd-homedв этом случае (я не смог найти точную информацию об этом).

решение1

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

Все это связано с конфигурацией PAM. Насколько я могу судить по различным выводам в Интернете, это во многом зависит от используемого дистрибутива Linux. В моем случае, на Arch Linux, файл по умолчанию system-auth, отвечающий за аутентификацию пользователя, выглядел следующим образом:

$ cat /etc/pam.d/system-auth

#%PAM-1.0

auth       required                    pam_faillock.so      preauth
auth       [success=2 default=ignore]  pam_unix.so          try_first_pass nullok
-auth      [success=1 default=ignore]  pam_systemd_home.so
auth       [default=die]               pam_faillock.so      authfail
auth       optional                    pam_permit.so
auth       required                    pam_env.so
auth       required                    pam_faillock.so      authsucc
# ...

Это означает, что pam_unix.soмодуль (выполняет аутентификацию по паролю) выполняется первым и пропускает следующие два модуля при успешном завершении. Таким образом, если пароль правильный, pam_systemd_home.soон никогда не будет выполнен, и, таким образом, не будет запрашивать U2F. Поскольку пароль учетной записи зарегистрирован как ключ LUKS, его достаточно для разблокировки контейнера домашнего раздела.

!!! ОСТОРОЖНОСТЬ !!!

Как всегда, при работе с конфигурацией PAM, всегда держите root-оболочку открытой до тех пор, пока вы успешно не проверите свои изменения, иначе вы рискуете остаться без доступа к своему ПК!

Я хотел выполнить аутентификацию только с помощью моего устройства FIDO2, поэтому я сделал следующее:

cat /etc/pam.d/system-auth
#%PAM-1.0

auth       required                    pam_faillock.so      preauth
-auth      [success=2 default=ignore]  pam_systemd_home.so
auth       [success=1 default=ignore]  pam_unix.so          try_first_pass nullok
auth       [default=die]               pam_faillock.so      authfail
auth       optional                    pam_permit.so
auth       required                    pam_env.so
auth       required                    pam_faillock.so      authsucc

Now pam_systemd_home.soвыполняется первым и пропускает запрос пароля по умолчанию при успешном выполнении. Для LUKS этого также достаточно, поскольку устройство FIDO2 зарегистрировано там как токен.

Если вы хотите иметь «настоящую» 2FA, все, что вам нужно сделать, это изменить конфигурации [success=2 default=ignore]и [success=1...на requiredединицы.

Связанный контент