Iker Pedrosa 发布的文章

Fedora 39 通过 SSSD 和 FreeIPA 为集中管理的用户开启了 FIDO2 认证功能。此篇文章将指导你如何进行配置和启用该功能。

FIDO2

FIDO2 是以 公钥加密 为基础的开放式认证标准,比起密码和一次性密码(OTP),它的安全性更高且易用性更强。它通常以类似小型 USB 和基于 NFC 的硬件安全令牌的方式提供。有几种符合 FIDO 认可的密钥品牌,例如:YubiKey、NitroKey、SoloKey v2 等等。

此协议的优势包括:

  • 通过使用公钥加密来消除密码,从而实现无密码认证。
  • 采用 多因素认证(MFA)以实现强力认证。
  • 减少了应用程序之间密码或公钥的重复使用,降低数据泄露的风险。
  • 私钥位于安全令牌中并且永不离开,这大大减少了被网络钓鱼的威胁。

前面的文章

在 Fedora 杂志中,有多篇文章阐述了如 FIDO2 的应用场景:《如何使用 FIDO2 验证本地用户》 和 《如何解锁硬盘》。而此篇文章介绍了如何使用 FIDO2 验证远程用户。请注意,上述所说的设备,主要是指那些来自 Yubico 采用了其他协议的设备,而此篇指南的目的并非讨论这些协议。

集中管理的用户

SSSDFreeIPA 最近新增了一个名为 通行密钥 passkey 的特性,以便对集中管理的用户执行 FIDO2 认证。此功能目前只在 SSSD 2.9.0FreeIPA 4.11.0 等版本中支持。

Fedora 39 已经包含了这些版本,因此,它是第一个为集中管理的用户启用 FIDO2 认证的发行版。此外,用户在认证成功后,也会一并获取一个 Kerberos 票据,实现对其他服务的身份证明。

请注意,从这里开始,我将交替使用 FIDO2 和通行密钥这两个术语。

FIDO2 认证

FIDO2 配置

作为额外的安全措施,应在设备中启用 MFA 以防你丢失了密钥,恶意行为者无法使用它进行认证。

列出连接的通行密钥设备:

$ fido2-token -L

为你的通行密钥设备设置 PIN(将大写字母替换为所需的):

$ fido2-token -C /dev/hidrawX

如果你有一个兼容的设备,你还可以启用其他认证因素,例如指纹。

集中用户配置

首先,我们来创建一个用户,并将通行密钥(passkey)设置为其认证方式(请根据需要将大写字母替换为相应的):

$ ipa user-add USERNAME --first NAME --last SURNAME --user-auth-type=passkey

或者,如果你已有一个用户,并只需要将 passkey 设置为其认证方式:

$ ipa user-mod USERNAME --user-auth-type=passkey

集中管理用户的 FIDO2 注册

接下来,我们为该用户注册这个通行密钥。这个步骤会提示你输入 PIN 码,随后触摸设备:

$ ipa user-add-passkey USERNAME --register
Enter PIN:
Please touch the device.
------------------------------------
Added passkey mappings to user "USERNAME"
------------------------------------
    User login: USERNAME
    Passkey mapping: passkey:XR/MXigmgiBz1z7/RlWoWZkXKIEf1x9Ux5uPNxtzzSTdTiF407u2nRYMPkK8pWjwUR8Aa2urCcC9cnpLbkKgFg==,MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEZqgERsFFv4Yev1dyo2Ap4PvLirg3P3Uhig5mNA4qf061C9q5rg0nMDz9AOYxZmBrwvQEXHCasMNO9VAIVnBIVg==

此刻,用户的认证已准备就绪。

注意,如果你想在生产环境中使用此用户,我建议你至少注册两个不同的设备。这样,即使你丢失了其中一个设备,你也可以用另一个进行认证。

集中管理的用户的 FIDO2 认证

在初次尝试中,只有在物理连接令牌的系统中才能进行认证。这意味着你可以使用 su 或图形界面,但不能远程使用 ssh。

我们来试试使用 su,记得将大写字母替换为所需的。当要求你输入 PIN,然后触摸设备时,当设备灯闪烁时触摸它:

$ su - USERNAME@DOMAIN
Insert your passkey device, then press ENTER.
Enter PIN:

如果一切进行顺利,Kerberos 票据也应已被授予,然后你就可以向其他服务进行远程认证:

$ klist
Ticket cache: KCM:879400005:34862
Default principal: USERNAME@DOMAIN
Valid starting Expires        Service principal
10/20/23 09:46:04  10/21/23 09:32:37  krbtgt/DOMAIN@DOMAIN

结论

此认证机制的目标是提升安全性。通过使用一种众所周知、开放式的标准实现无密码和多因素认证,从而降低数据泄露和网络钓鱼威胁的风险。用户只需要一个硬件令牌及另外一个如 PIN 或者指纹的认证方式,从而消除对密码的需求,同时提供了方便的多因素认证方法。更进一步,每个应用或服务都使用一个唯一的密钥,这样任何一个应用或服务的数据泄露都不会影响其他的。最后,用户并不需要知道他们的凭据的具体细节,只需了解他们使用了一个实体令牌,这极大地降低了社交工程攻击的可能性。

(题图:MJ/838d5392-79b4-4c22-ab0f-c2ada4bf2833)


via: https://fedoramagazine.org/fido2-for-centrally-managed-users/

作者:Iker Pedrosa 选题:lujun9972 译者:ChatGPT 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出