Windless
订阅/Feed
稗田千秋(i@wind.moe)

Yubikey 4 使用探索

稗田千秋
Dec.25 2016 daily

平安夜舍友都出去浪了,只有我这种单身汪孤零零的在宿舍写着博客 (′_>′ )

心痒Yubikey很久了,恰逢黑五活动,想着能多出个赠品进行容灾备份,走的顺丰转运到今天正好一个月到手,参照匮乏的资料在Arch上面试了一些功能。

安装基础包

先安装相关程序,同时下载GUI方便进行配置

sudo pacman -S yubikey-personalization yubikey-personalization-gui

同时打开所有功能

ykpersonalize -m86

U2F

目前还是只有 Chrome 浏览器实现了 U2F 的完全支持,操作系统方面倒是基本都或多或少兼容了,先写系统方面的认证,这里参考官方说明

Linux PAM( Pluggable Authentication Modules ) 提供了一个框架,用于进行系统级的用户认证,来自arch wiki的介绍,于是先安装AUR里的包

yaourt pam_u2f

然后注册一下用户

pamu2fcfg -u username

这时光标会下移一行,同时Yubikey的灯开始闪烁,触摸一下,终端就会输出一行代码如下

<username>:<KeyHandle1>,<UserKey1>

接着使用当前用户 touch 一个 ~/.config/Yubico/u2f_keys,在里面填上上面出现的代码,然后修改所需的PAM服务,在 /etc/pam.d 文件夹下,比如我修改了 sudo(sudo) 和 gdm(gdm-password) 的服务,在文件开头填上如下一句

auth sufficient pam_u2f.so

这时可以切到终端,随便执行一下sudo命令,便可以看到yubikey有规则的闪烁,轻触一下就执行了sudo指令。

Windows 上的认证倒是纯gui随手可实现,不过由于需要改为本地用户,我就不尝试了。

TOTP

这是我比较关心的一个功能,之前使用 Google Authenticator 来协助二次验证,但偶尔刷下机什么的备份起来就很麻烦,于是回到了洋葱的云备份,但是把 TOTP 的密钥放在别人手里始终有一种不安,尤其是在天朝公司手里,所以存在 Yubikey 里是一种相对安心的选择,但是切记 做好容灾备份!

OTP的客户图形端可在官网下载,Arch 可以在 AUR 直接下

yaourt yubico-yubioath-desktop

然后按照提示一步步来,不过生成的桌面程序我是打不开。。。在这个issues里找到了答案,可以通过安装启用acsccid来解决问题

yaourt -S aur/acsccid
sudo systemctl enable pcscd.service
sudo systemctl start pcscd.service 
sudo systemctl status pcscd.service

接着用GUI界面来配置,执行 yubioath gui,可以看到如下窗口

在 File 里可以看到三个选项 Add | Set/Change Password | Setting,选择 Add 添加

这里有个很方便的功能就是 'Scan a QR Code',可以快速识别屏幕上的二维码,不过很遗憾,在我的 Gnome 上并没有生效,不过手动添加也是一样,手动识别二维码填入Secret Key即可,下面还有个‘Require touch’功能,有字面意思就可知道需要触摸 Yubikey 才会显示密码。

另外如果不选择‘Require touch’的话,可以通过直接在终端输入yubioath来查看二次验证码(如有菊苣知道能在终端查看第二行的话请务必告知 Orz chiaki in ~ λ yubioath Chiaki:i@wind.moe 341153 Chiaki:wind.moe [Touch credential]

这篇文章还在草稿的时候差点就把Yubikey丢了。。。剩下的功能琢磨透了再来记录吧

引用

--END--
文章创建于 2016-12-25 00:20:51,最后更新 2016-12-25 00:20:51
Comment
尝试加载Disqus评论, 失败则会使用基础模式.
    • play_arrow

    About this site

    version:1.02 Alpha
    博客主题: Lime
    联系方式: i@wind.moe
    写作语言: zh_CN & en_US
    博客遵循 CC BY-NC-SA 4.0许可进行创作

    此外,本博客会基于访客的Request Headers记录部分匿名数据用于统计(Logger的源码见Github),包含Referer, User-Agent & IP Address.个人绝不会主动将数据泄露给第三方