桌面登录和Linux用户认证¶
简介¶
This guide will walk you through the configuration of Linux to use FIDO Universal 2nd Factor, i.e. FIDO U2F with libpam-u2f
and Nitrokey FIDO2.
如果你想用`Nitrokey Pro 2登录到你的电脑。<https://shop.nitrokey.com/shop/product/nk-pro-2-nitrokey-pro-2-3>`__ Nitrokey Storage 2 和 Nitrokey开始 你可以访问这里提供的说明 ` <../../pro/linux/login-with-pam.html>`_。
要求¶
Ubuntu 20.04带Gnome显示管理器。
Nitrokey FIDO2的配置如下:`这些说明<https://docs.nitrokey.com/fido2/linux>`__。
说明¶
GUI方法¶
在左下角点击
Show Applications
并在搜索栏输入设置如下:在右栏向下滚动到
Users
。在左角点击
Unlock
这将提示您的密码。选择
Administrator
并输入你选择的用户名和密码。一旦你完成了第4步,你应该就完成了。
CLI方法¶
创建一个备份用户并赋予其root权限。
你可以通过使用这些命令来做到这一点。
$ sudo adduser <backup_user> $ sudo usermod -aG sudo <backup_user>
如果你喜欢为单个用户设置U2F,并且被锁定在用户会话之外,你仍然能够用``<backup_user>``登录,并继续进行维护。
警告
下面的指南有可能将你的电脑锁定。你应该意识到这些风险,因为建议首先在第二台电脑上使用下面的说明,或者在完整备份之后使用。
在配置了`PAM模块<https://www.man7.org/linux/man-pages/man8/pam.8.html>`__后,你可能失去对数据的访问。
设置
rules
以识别Nitrokey FIDO2。在``/etc/udev/rules.d`下载``41-nitrokey.rules```
$ cd /etc/udev/rules.d/ $ sudo wget https://raw.githubusercontent.com/Nitrokey/libnitrokey/master/data/41-nitrokey.rules
并重新启动``udev``服务
$ sudo systemctl restart udev
安装
libpam-u2f
。在Ubuntu 20.04上,可以直接下载``libpam-u2f``从官方仓库下载
$ sudo apt install libpam-u2f
备注
点击查看更多选项
另外,你可以从`Git <https://github.com/phoeagon/pam-u2f>`__构建``libpam-u2f``。
为了验证该库是否正确安装,请输入以下命令。
$ file /lib/x86_64-linux-gnu/security/pam_u2f.so
输出应该是如下内容。
/lib/x86_64-linux-gnu/security/pam_u2f.so: \ ELF 64-bit LSB shared object, x86-64, version 1 (SYSV),\ dynamically linked, BuildID[sha1]=1d55e1b11a97be2038c6a139579f6c0d91caedb1, stripped
准备好目录
在你的主目录下创建``.config/Nitrokey/``。
$ mkdir ~/.config/Nitrokey
并插入你的Nitrokey FIDO2。
一旦完成准备工作,我们就可以开始配置计算机,以便在登录和``sudo``时使用Nitrokey FIDO2进行第二因素认证。
生成U2F配置文件。
为了生成配置文件,我们将使用``pamu2fcfg``工具,该工具随``libpam-u2f``附带。为方便起见,我们将直接把该工具的输出写入``u2f_keys```文件中,在``.config/Nitrokey```下。首先插入你的Nitrokey FIDO2(如果你还没有),并输入以下命令。
$ pamu2fcfg > ~/.config/Nitrokey/u2f_keys
一旦你运行上面的命令,你需要在它闪烁的时候触摸按键。一旦完成,``pamu2fcfg``将在其输出中附加``u2f_keys``格式如下。
<username>:Zx...mw,04...0a
注意,输出结果将更长,但敏感部分在这里已经被删除。为了更好的安全,一旦配置文件生成,我们将用这个命令把``.config/Nitrokey``目录移到``etc/``目录下。
$ sudo mv ~/.config/Nitrokey /etc
小技巧
.config/Nitrokey``下的文件必须命名为``u2f_keys
。建议首先用一个用户来测试指令。为此,前面的指令采取``-u``选项,来指定一个用户,就像下面的例子。
$ pamu2fcfg -u <username> > ~/.config/Nitrokey/u2f_keys
对于单个用户的配置,你应该在下一步指向主目录,或者在PAM配置中不包括``authfile``选项。
备份
这一步是可选的,但建议在您的Nitrokey FIDO丢失、被盗或毁坏的情况下拥有一个备份的Nitrokey。
要设置一个备份钥匙,重复上述程序,并使用``pamu2fcfg -n``。这将省略``<username>``字段,输出可以附加到你的``<username>``这一行。
<username>:Zx...mw,04...0a:xB...fw,04...3f
修改可插拔的认证模块
PAM
。最后一步是配置``/etc/pam.d/``下的PAM模块文件。在本指南中,我们将修改``common-auth``文件,因为它处理所有服务共有的认证设置,但其他选项也是可能的。你可以用以下命令修改该文件。
$ cd /etc/pam.d $ sudo $editor common-auth
并在文件顶部添加以下几行:
#Nitrokey FIDO2 config auth sufficient pam_u2f.so authfile=/etc/Nitrokey/u2f_keys cue [cue_prompt=Please touch the device.] prompt nouserok
小技巧
由于我们使用中央认证映射,我们需要告诉``pam_u2f``使用``authfile``选项的文件位置。
如果你经常忘记插入密钥,``prompt``选项会让``pam_u2f``打印``插入你的U2F设备,然后按ENTER.``并给你一个机会插入Nitrokey。
If you would like to be prompted to touch the Nitrokey,
cue
option will makepam_u2f
printPlease touch the device.
message. You can change the message in[cue_prompt=Please touch the device.]
.`nouserok`将确保你仍然可以使用用户名和密码登录,你可能想在某个时候删除这个,一旦设置工作,你不想要常规的基于用户名和密码的登录。
一旦我们修改了``common-auth``,我们可以保存并退出文件。
你可以在终端输入``sudo ls``来测试该配置。你应该得到提示信息``Please touch the device.``并在终端有类似的输出。
nitrouser@nitrouser:~$ sudo ls [sudo] password for nitrouser: Please touch the device.
你也可以通过注销用户会话并重新登录来测试你的配置。一旦你拔掉/重新拔掉你的Nitrokey FIDO2并输入密码,应该会显示类似的屏幕。
使用方法¶
修改PAM模块后,你就可以马上测试你的配置,但建议重新启动你的电脑,并拔掉/重新插入Nitrokey FIDO2的插头。
一旦你正确地测试了本指南中的说明(并建立了一个备份)。建议使用``required`或``requisite``控制标志,而不是``sufficient`。
标志``required``和``requisite``提供更严格的访问控制,并将使Nitrokey FIDO2成为登录和/或使用配置的服务的必要条件。
如果你需要更多关于``PAM``配置行中的控制标志的信息,你可以看看本指南的最后一节,了解它们的区别,以及使用它们各自的意义。
PAM模块¶
有几个PAM模块文件,可以根据你的需要进行修改。
通过修改``/etc/pam.d/common-auth``文件,你将能够使用你的Nitrokey FIDO进行图形登录的第二因素认证和``sudo``。注意:``common-auth``应通过在文件末尾添加额外的配置行进行修改。
If you wish to use FIDO U2F authentication solely for Gnome’s graphic login, you might prefer to modify the
/etc/pam.d/gdm-password
另外,如果你想在使用``/etc/pam.d/sudo``文件时使用FIDO U2F,你可以直接修改``sudo``命令。
控制标志¶
在第7步中,我们使用了``sufficient``控制标志来确定PAM模块在Nitrokey插入或不插入时的行为。然而,可以通过使用以下控制标志来改变这种行为。
required
。这是最关键的标志。模块结果必须是成功的,认证才能继续。如果你没有访问Nitrokey的权限,这个标志会把你的电脑锁住。必要条件":与
required
类似,但在特定模块返回失败的情况下,控制权会直接返回应用程序或上级 PAM 堆栈。如果你没有访问 Nitrokey 的权限,该标记也会将你锁定在计算机之外。sufficient
。如果失败,模块结果将被忽略。``sufficient``标志被认为是安全的测试目的。optional
。该模块的成功或失败只有在它是堆栈中与该服务+类型相关的唯一模块时才重要。``optional``标志被认为是安全的,可用于测试目的。
警告
如果``required`或``requisite``被设置,U2F认证的失败将导致整体认证的失败。当配置的Nitrokey FIDO没有被插上、丢失或毁坏时,就会发生失败。
如果你错误地配置了PAM模块,并且*使用了``required`或``标记,你将失去对你的计算机的访问。
如果你设置了中央认证映射,你也将失去使用``sudo``的能力。*并*使用``required``或``requisite``标志。