1. 从 Yubico PPA 安装 U2F 工具

1. 从 Yubico PPA 安装 U2F 工具

Yubico 官方指南仅涵盖为 GDM 登录启用它,如何为所有登录启用它,包括 TTY、ssh、sudo 等?

答案1

免责声明:本指南更改了默认的 PAM 配置,该配置可能会导致您无法使用计算机。对于因这些说明而导致的任何不良后果,我概不负责。与往常一样,在更改文件之前请备份所有文件,准备好实时磁盘以在需要时恢复更改,并研究任何您不确定的内容以了解正在发生的事情。
我已经使用 YubiKey 4 对此进行了测试并确认它可以正常工作。它应该适用于支持 U2F 规范的任何安全密钥,包括大多数 YubiKey。

这是基于Yubico 指南保护范围有所改变。


1. 从 Yubico PPA 安装 U2F 工具

第一的,启用 Yubico PPA并安装 U2F PAM 模块:

sudo add-apt-repository ppa:yubico/stable && sudo apt-get update
sudo apt-get install libpam-u2f

2. 配置您的密钥

Yubico 指南会在您的主目录中创建配置,但如果您的主目录已加密,则您将无法在重新启动时访问该目录。为了解决这个问题,我们需要在未加密的地方创建配置。这取决于个人喜好,但在这里我们将在 下创建它/etc

pamu2fcfg | sudo tee /etc/u2f_keys

当您的设备闪烁时,触摸联系人即可将密钥与您的帐户关联。

如果您希望向您的帐户添加更多密钥,请运行以下命令:

pamu2fcfg -n | sudo tee -a /etc/u2f_keys

(拥有多个密钥是个好主意:如果您的主密钥丢失或损坏,您仍然可以使用其他密钥访问您的帐户。)

3. 测试您的密钥配置

为了测试此配置,我们首先仅为 sudo 命令启用它。从计算机中移除密钥并编辑/etc/pam.d/sudo

sudo nano /etc/pam.d/sudo

在下面添加以下行@include common-auth

auth       required   pam_u2f.so authfile=/etc/u2f_keys

打开一个新的终端窗口,然后运行sudo echo test。系统将提示您输入密码,然后命令将失败。这是意料之中的,因为您的密钥不在计算机中。

插入钥匙,sudo echo test再次运行。输入密码,并在提示触摸时触摸钥匙,之后您的终端应该会echo test

这确认配置正确,我们可以继续为所有身份验证启用此功能。/etc/pam.d/sudo再次编辑,并删除我们添加的行。

4 为所有身份验证启用 2FA

这是我们偏离 Yubico 指南的地方,因为该指南仅涵盖为 GDM 启用 2FA,而我们希望为所有身份验证启用它,包括 TTY、SSH、sudo 等。首先我们需要编辑/etc/pam.d/common-auth

sudo nano /etc/pam.d/common-auth

在文件底部添加以下行:

auth    required   pam_u2f.so nouserok authfile=/etc/u2f_keys cue
  • nouserok意味着没有关联密钥的用户将不会被提示进行 2FA,因此仍然可以登录。如果省略此选项,则没有密钥的用户将无法登录。
  • authfile/etc告诉模块在默认位置(主目录)中查找文件。
  • cue将提示触摸并显示一条消息(“请触摸设备”)。

(看Yubico 的文档以获取完整的选项列表。

至此,我们已完成。任何登录尝试都需要使用密钥进行 2FA。以下内容是可选的。

5. 禁用 sudo 的 2FA

就我个人而言,我不想使用我的密钥来运行 sudo。禁用它非常简单,尽管有点麻烦。我不确定是否有更好的方法来做到这一点。再次编辑 sudo pam 文件:

sudo nano /etc/pam.d/sudo

删除显示 的行@include common-auth。接下来,将 的内容复制并粘贴到/etc/pam.d/common-auth我们删除的行所在的位置,但删除我们在启用 U2F 模块之前添加的行。最后一点至关重要:如果保留该行,您仍然需要密钥来运行 sudo。删除该行将不再需要密钥来运行 sudo。

如果要禁用 ssh 或其他身份验证方案的 2FA,可以调整此过程。如果运行ls /etc/pam.d,它将显示可用的文件:每个文件都以它们控制的方案命名。再次提醒,除非您知道自己在做什么并在进行更改之前备份文件,否则不要这样做。

6. 确保物理访问安全

当然,任何人都可以通过使用实时 CD/USB 驱动器启动并恢复更改来禁用此功能,因此如果您的威胁模型包括物理访问,您将需要启用完整系统加密、禁用 USB/CD 启动并设置 BIOS 密码或其他方法来防止第三方篡改。请记住,您的安全性取决于配置中最薄弱的环节。

相关内容