简介如今,Fedora提供了多种方式来提高我们帐户身份验证的安全性。当然,它有大家熟悉的用户名和密码登录方式,还提供其他身份验证选项,如生物识别、指纹、智能卡、一次性密码,甚至挑战-响应身份验证。每种身份验证方法都有明显的优点和缺点。仅此一项就可以成为一篇相当冗长的文章的主题。FedoraMagazine之前介绍过其中一些选项:在FedoraFedora28中使用YubiKey4:在OpenSSH中更好地支持智能卡在今天的Fedora版本中,最安全的方法之一是离线硬件质询-响应。它也是最简单的部署方法之一。下面是具体方法。质询-响应身份验证从技术上讲,当您输入密码时,您是在响应用户名质询。离线查询和响应由这些部分组成:首先,需要您的用户名,然后Fedora会要求您提供一个加密的物理硬件令牌。令牌通过可插入身份验证模块(PAM)框架传递它存储的另一个加密密钥来响应质询。最后,Fedora会提示您输入密码。这可以防止其他人仅使用找到的硬件令牌,或仅使用没有正确加密密钥的帐户名和密码。这意味着除了您的帐户名和密码之外,您之前必须已经在您的操作系统中注册了一个或多个加密硬件令牌。您必须确保您的物理硬件令牌与您的用户名匹配。一些挑战-响应方法,例如一次性密码(OTP),捕获硬件令牌上的加密代码密钥,然后通过网络将此密钥传输到远程身份验证服务器。服务器然后告诉Fedora的PAM框架这是否是该用户的有效令牌。如果身份验证服务器在本地网络上,这会很好用。但它的缺点是如果网络连接丢失或者您在没有网络的远程端工作。在您可以通过网络连接到身份验证服务器之前,您将被锁定在系统之外。有时生产环境通过Yubikey使用一次性密码(OTP)设置,但是,在家庭或个人系统上,您可能更喜欢质询-响应设置。一切都在本地,不需要通过远程网络调用此方法。以下过程适用于Fedora27、28和29。准备硬件令牌密钥首先,您需要一个安全的硬件令牌密钥。具体来说,此过程需要Yubikey4、YubikeyNEO或最近发布的也支持FIDO2的Yubikey5系列设备。您应该购买其中两个,并准备一个作为备用,以防其中一个丢失或损坏。您可以在不同的工作地点使用这些键。FIDO和FIDOU2F比较简单的版本不适合这个流程,但是非常适合使用FIDO的在线服务。备份,备份,再备份接下来,备份你所有的重要数据,你可能想测试在虚拟机中克隆的Fedora27/28/29中的配置,以确保你在设置自己的个人工作环境之前了解这个过程.升级,然后立即安装,确保您的Fedora是最新的,并通过dnf命令安装所需的FedoraYubikey包。$sudodnfupgrade$sudodnfinstallykclient*ykpers*pam_yubico*如果您使用的是VM环境,例如VirtualBox,请确保Yubikey设备已插入USB端口,然后允许VM控制的USB访问育碧钥匙。配置Yubikey确保您的帐户可以访问USBYubikey:$ykinfo-vversion:3.5.0如果未检测到Yubikey,将出现以下错误消息:Yubikeycoreerror:noyubikeypresent接下来,使用以下命令初始化您的个性化设置ykpersonalize命令每个新的Yubikey。这将设置Yubikey以配置插槽2以使用HMAC-SHA1算法(即使少于64个字符)进行质询响应。如果您已经为查询响应设置了Yubikey。您不需要再次运行ykpersonalize。ykpersonalize-2-ochal-resp-ochal-hmac-ohmac-lt64-oserial-api-visible一些用户在使用YubiKey时将它们留在工作站上,甚至将它们用于请求-响应虚拟机。但是,为了更好的安全性,您可能更愿意手动触发YubiKey来响应查询。要添加手动请求按钮触发器,请添加-ochal-btn-trig选项,这会导致Yubikey根据请求闪烁其LED。等待您在15秒内按下硬件密钥区域上的按钮以生成响应密钥。$ykpersonalize-2-ochal-resp-ochal-hmac-ohmac-lt64-ochal-btn-trig-oserial-api-visible对每个新硬件密钥执行此操作。每个键执行一次。编程完成后,使用以下命令将Yubikey配置保存到~/.yubico:$ykpamcfg-2-vdebug:util.c:222(check_firmware_version):YubiKeyFirmwareversion:4.3.4Sending63bytesHMACchallengetoslot2Sending63bytes对插槽2的HMAC挑战在“/home/chuckfinley/.yubico/challenge-9992567”中存储了初始挑战和预期响应。如果要设置多个密??钥进行备份,请将所有密钥设置为相同,然后使用ykpamcfg工具存储每个密钥的挑战-响应。如果对现有注册表项运行ykpersonalize命令,则必须再次存储配置信息。配置/etc/pam.d/sudo现在验证配置是否有效,在同一个终端窗口中,您需要设置sudo以要求Yubikey的质询-响应。将以下行插入/etc/pam.d/sudo文件。authrequiredpam_yubico.somode=challenge-response将上面的auth行插入到authincludesystem-auth行上方的文件中,然后保存并退出编辑器。在默认的Fedora29设置中,/etc/pam.d/sudo应该如下所示:#%PAM-1.0authrequiredpam_yubico.somode=challenge-responseauthincludesystem-authaccountincludesystem-authpasswordincludesystem-authsessionoptionalpam_keyinit。所以revokesession需要pam_limits.sosessionincludesystem-auth保持这个初始终端窗口打开,然后打开一个新的终端窗口进行测试,在新的终端窗口中键入:$sudoechotesting你应该注意到Yubikey上的LED闪烁。单击Yubikey按钮,您应该会看到输入sudo密码的提示。输入密码后,您应该会在终端屏幕上看到“testing”。现在测试并确保故障正常,启动另一个终端窗口并从USB插座上拔下Yubikey。使用以下命令验证sudo在没有Yubikey的情况下是否不再有效。$sudoechotestingfail您应该立即被提示输入sudo密码,但即使您输入了正确的密码,登录也应该会失败。设置Gnome桌面管理器(GDM)测试完成后,您可以为图形登录添加质询-响应支持。再次将Yubikey插入USB端口。然后将以下行添加到/etc/pam.d/gdm-password文件:authrequiredpam_yubico.somode=challenge-response打开终端窗口并运行以下命令。如果你愿意,你可以使用另一个编辑器:$sudovi/etc/pam.d/gdm-password你应该看到Yubikey上的LED闪烁,按下Yubikey按钮,并在提示符下输入你的密码。修改/etc/pam.d/gdm-password文件并向现有的auth子堆栈password-auth行添加一个新行。此文件的顶部应如下所示:auth[success=doneignore=ignoredefault=bad]pam_selinux_permit.soauthrequiredpam_yubico.somode=challenge-responseauthsubstackpassword-authauthoptionalpam_gnome_keyring.soauthincludepostloginaccountrequiredpam_nologin.sosavechanges而要退出编辑器,如果你使用的是vi,进入的关键是按Esc键,然后输入wq!在提示保存并退出。结论现在退出GNOME。将Yubikey插入USB端口,然后在GUI登录屏幕上单击您的用户名。YubikeyLED将开始闪烁。触摸该按钮,系统将提示您输入密码。如果您丢失了Yubikey,除了重置密码外,您还可以使用备份的Yubikey。您还可以向您的帐户添加其他Yubikey配置。如果其他人获得了您的密码,他们仍然无法在没有您的物理硬件Yubikey的情况下登录。恭喜!您已经显着提高了工作场所登录的安全性。