为 i3lock 设置 Yubikey U2F

为 i3lock 设置 Yubikey U2F

我正在运行 i3 窗口管理器,并在我的系统上进行两步身份验证。看来 i3 和 i3lock 不支持 2 因素身份验证的附加提示,而只是通过管道传输我输入的密码作为验证码。

这显然不起作用,除了修改我的 pam 配置并禁用 2 因素身份验证(对于 i3lock)之外,是否有更好的方法可以让我也为 i3lock 利用 2 因素身份验证?

答案1

i3lock 支持 PAM,这意味着它支持 2FA,尽管它可能不支持用户输入的视觉提示。大多数 Yubico 产品提供不同类型的 2FA。看这里例如。

登录时最常见的 2FA 方法是 U2F 和质询响应 (OTP)。 i3lock 两者都可以使用。

不同的 2FA 方法需要用户在登录时执行不同的步骤:

  • U2F要求用户在USB闪烁提示后按下USB上的物理按键。
  • 质询-响应 (OTP) 只需将 Yubikey 插入计算机即可。 (这就是 Windows 和 Mac 上默认登录 2FA 的工作原理)

为 i3lock 设置 Yubikey U2F

  1. 构建您的 pam 模块(例如pam_u2f.so)并将其放置在正确的位置(例如/lib/security)。如果您有 yubikey,请按照尤比科的指南
  2. /etc/pam.d/i3lock如果尚不存在则创建。这是默认文件,只需要密码。
#
# PAM configuration file for the i3lock screen locker. By default, it includes
# the 'login' configuration file (see /etc/pam.d/login)
#

auth    include     login

现在,您可以使用以下选项来使用 Yubikey 进行身份验证,尽管第一个选项(密码后备)只是单因素身份验证。

选项 1:带密码回退功能的 Yubikey

添加以下行线auth include login

auth    sufficient      pam_u2f.so nouserok cue

如果你按回车键,这将解锁你的计算机,这会触发 i3lock 中的 PAM 身份验证(提示将挂在“验证”上),然后按 Yubikey,它应该会闪烁。

您还可以在 yubikey 未插入的情况下,通过输入正确的密码来解锁计算机。如果已插入,模块将等待 yubikey 失败,这将要求您拔出它,或者等待它超时(访问计算机的无聊方式!)。

选项 2:需要 Yubikey 和密码

添加以下行线auth include login

auth    required      pam_u2f.so nouserok cue

如果您输入正确的密码,按回车键,然后按 Yubikey(它应该闪烁)以提供所需的第二个因素,这将解锁您的计算机。

为 i3lock 设置 Yubikey 质询-响应

  1. 构建 pam 模块。看尤比科的指南步骤 2 和 4。
  2. /etc/pam.d/i3lock如果尚不存在则创建。 (参见 U2F 的步骤 2)

选项 1:带密码回退功能的 Yubikey

添加以下行线auth include login

auth    sufficient      pam_yubico.so mode=challenge-response

当用户在锁定屏幕上按 Enter 键时,这会触发 PAM,并且如果插入 Yubikey,计算机就会解锁。

与 U2F 的选项 1 类似,您也可以在未插入 yubikey 的情况下通过输入正确的密码来解锁计算机。

选项 2:需要 Yubikey 和密码

添加以下行线auth include login

auth    required      pam_yubico.so mode=challenge-response

这需要插入 yubikey 和正确的密码。

调试

如果您被锁定,请在虚拟终端 (TTY) 上登录。您可以使用ctrl+ alt+组合键找到其中之一f2。然后,您可以使用 杀死 i3lockkillall i3lock或通过查看 的输出来查找有关问题所在的更多信息journalctl -x

相关内容