通过质询-响应身份验证提高登录安全性

介绍

今天, Fedora 提供多种方法来改进我们用户帐户的安全身份验证。 当然它有熟悉的用户名和密码来登录。 它还提供额外的身份验证选项,例如生物识别、指纹、智能卡、一次性密码,甚至质询响应身份验证。

每种身份验证方法都有明显的优缺点。 这本身可能是一篇相当长的文章的主题。 Fedora 杂志之前已经介绍了其中一些选项:

  • 使用 YubiKey4 Fedora
  • Fedora 28: OpenSSH 中更好的智能卡支持

现代最安全的方法之一 Fedora 发布是离线硬件挑战-响应。 它也是最容易部署的一种。 就是这样。

质询-响应认证

从技术上讲,当您提供密码时,您就是在响应用户名质询。 此处介绍的离线质询响应首先需要您的用户名。 下一个, Fedora 挑战您提供加密的物理硬件令牌。 令牌使用它通过可插入身份验证模块 (PAM) 框架存储的另一个加密密钥来响应质询。 最后, Fedora 提示您输入密码。 这可以防止某人仅使用找到的硬件令牌,或者仅使用没有正确加密密钥的用户名和密码。

这意味着除了您的用户名和密码之外,您之前还必须在操作系统中注册一个或多个加密硬件令牌。 而且您必须提供该物理硬件令牌才能使用您的用户名进行身份验证。

一些质询-响应方法,如一次性密码 (OTP),采用硬件令牌上的加密代码密钥,并将该密钥通过网络传递到远程身份验证服务器。 然后服务器告诉 Fedora的 PAM 框架,如果它是该用户名的有效令牌。 如果身份验证服务器位于本地网络上,这将非常有用。 不利的一面是,如果网络连接断开或您在没有网络连接的情况下远程工作,则无法使用此远程身份验证方法。 在您可以通过网络连接到服务器之前,您可能会被锁定在系统之外。

有时工作场所需要使用 Yubikey 一次性密码 (OTP) 配置。 但是,在家庭或个人系统上,您可能更喜欢本地质询-响应配置。 一切都是本地的,并且该方法不需要远程网络调用。 以下过程适用于 Fedora 27、28 和 29 日。

准备

硬件令牌密钥

首先,您需要一个安全的硬件令牌密钥。 具体来说,此过程需要 Yubikey 4、Yubikey NEO 或最近发布的同时支持 FIDO2 的 Yubikey 5 系列设备。 您应该购买其中两个以提供备份,以防其中一个丢失或损坏。 您可以在许多工作站上使用这些键。 更简单的 FIDO 或仅 FIDO U2F 版本不适用于此过程,但非常适合使用 FIDO 的在线服务。

备份、备份和备份

接下来,备份所有重要数据。 您可能希望在 Fedora 27/28/29 克隆虚拟机,以确保您在设置个人工作站之前了解该过程。

更新和安装

现在确保 Fedora 已是最新。 然后安装需要的 Fedora Yubikey 通过这些 dnf 命令打包:

$ sudo dnf upgrade
$ sudo dnf install ykclient* ykpers* pam_yubico*
$ cd

如果您在虚拟机环境中,例如 Virtual Box,请确保 Yubikey 设备插入 USB 端口,并在 VM 控件中启用对 Yubikey 的 USB 访问。

配置 Yubikey

验证您的用户帐户是否有权访问 USB Yubikey:

$ ykinfo -v
version: 3.5.0

如果未检测到 YubiKey,则会出现以下错误消息:

Yubikey core error: no yubikey present

接下来,使用以下 ykpersonalize 命令初始化每个新的 Yubikey。 这使用 HMAC-SHA1 算法为 Yubikey 配置槽 2 设置挑战响应,即使字符数少于 64。 如果您已经为挑战响应设置了 Yubikey,则无需再次运行 ykpersonalize。

ykpersonalize -2 -ochal-resp -ochal-hmac -ohmac-lt64 -oserial-api-visible

一些用户在使用时将 YubiKey 留在工作站中,甚至对虚拟机使用挑战-响应。 但是,为了提高安全性,您可能更喜欢手动触发 Yubikey 来响应挑战。

要添加手动挑战按钮触发器,请添加 -ochal-btn-trig 标志。 该标志使 Yubikey 在请求时闪烁 yubikey LED。 它会等待您在 15 秒内按下硬件按键区域上的按钮以产生响应按键。

$ ykpersonalize -2 -ochal-resp -ochal-hmac -ohmac-lt64 -ochal-btn-trig -oserial-api-visible

对每个新硬件密钥执行此操作,每个密钥仅一次。 对密钥进行编程后,使用以下命令将 Yubikey 配置存储到 ~/.yubico:

$ ykpamcfg -2 -v
debug: util.c:222 (check_firmware_version): YubiKey Firmware version: 4.3.4

Sending 63 bytes HMAC challenge to slot 2
Sending 63 bytes HMAC challenge to slot 2
Stored initial challenge and expected response in '/home/chuckfinley/.yubico/challenge-9992567'.

如果您为备份目的设置多个密​​钥,请将所有密钥配置为相同,并使用 ykpamcfg 实用程序存储每个密钥的质询-响应。 如果对现有的注册密钥运行命令 ykpersonalize,则必须再次存储配置。

配置 /etc/pam.d/sudo

现在要验证此配置是否有效, 在同一个终端窗口中 你会设置 sudo 要求使用 Yubikey 质询-响应。 将以下行插入 /etc/pam.d/sudo 文件:

auth required pam_yubico.so mode=challenge-response

将上述 auth 行插入到 auth include system-auth 行上方的文件中。 然后保存文件并退出编辑器。 在默认情况下 Fedora 29 设置,/etc/pam.d/sudo 现在应该是这样的:

#%PAM-1.0
auth     required pam_yubico.so mode=challenge-response
auth     include  system-auth
account  include  system-auth
password include  system-auth
session  optional pam_keyinit.so revoke
session  required pam_limits.so
session  include  system-auth

保持这个原始终端窗口打开,并通过打开另一个新的终端窗口进行测试。 在新的终端窗口中输入:

$ sudo echo testing

您应该注意到按键上的 LED 闪烁。 点击 Yubikey 按钮,您应该会看到一个提示 sudo 密码。 输入密码后,您应该会在终端屏幕上看到“正在测试”。

现在测试以确保正确的故障。 启动另一个终端窗口并从 USB 端口移除 Yubikey。 验证 sudo 在没有 Yubikey 的情况下不再使用此命令:

$ sudo echo testing fail

应立即提示您输入 sudo 密码。 即使您输入密码,它也应该失败。

配置 Gnome 桌面管理器

测试完成后,现在您可以为图形登录添加质询-响应支持。 将 Yubikey 重新插入 USB 端口。 接下来,将以下行添加到 /etc/pam.d/gdm-password 文件中:

auth required pam_yubico.so mode=challenge-response

打开终端窗口,然后发出以下命令。 如果需要,您可以使用其他编辑器:

$ sudo vi /etc/pam.d/gdm-password

您应该看到 yubikey LED 闪烁。 按 yubikey 按钮,然后在提示符处输入密码。

修改 /etc/pam.d/gdm-password 文件以在现有行 auth substack password-auth 之上添加新的 auth 行。 文件的顶部现在应该如下所示:

auth [success=done ignore=ignore default=bad] pam_selinux_permit.so
auth required pam_yubico.so mode=challenge-response
auth substack password-auth
auth optional pam_gnome_keyring.so
auth include postlogin

account required pam_nologin.so

Save 更改并退出编辑器。 如果你使用 vi,按键顺序是按 Esc键 键,然后输入 wq! 在提示保存并退出。

结论

现在退出 GNOME。 将 Yubikey 插入 USB 端口后,在图形登录中单击您的用户名。 Yubikey LED 开始闪烁。 轻触按钮,系统将提示您输入密码。

如果您丢失了 Yubikey,除了您设置的密码,您仍然可以使用二级备份 Yubikey。 您还可以向您的用户帐户添加额外的 Yubikey 配置。

如果有人获得了您的密码,他们仍然无法在没有您的物理硬件 Yubikey 的情况下登录。 恭喜! 您现在已经大大提高了工作站登录的安全性。