如今,启用双因素身份验证(2FA)来增强帐户的安全性变得越来越普遍。
但是你可能会好奇怎么在Raspberry Pi上启用2FA。当你通过Secure Shell(SSH)远程访问树莓派时,系统将要求你先输入动态验证码。
通过SSH访问Raspberry Pi
很多人在家中将Raspberry Pi用作文件或媒体服务器。随着Raspberry Pi 4的发布,这种情况已经相当普遍,它配备了USB 3.0和千兆以太网。
如果你打算将Raspberry Pi塞到电视后面或其他地方,这意味着你需要在没有监视器,键盘或鼠标的情况下启用Secure Shell(SSH)进行远程访问。
但是,出门在外也想访问文件的需求很常见,所以从Internet访问Raspberry Pi是一件有风险的事。
如果你要对Internet开放你的树莓派服务器,那肯定要增加一些安全性,比如使用基于时间的一次性密码(TOTP)或启用双因素身份验证(2FA )。
什么是双因素身份验证?
双因素身份验证是额外的保护层。是除了密码之外,还需要另一条信息才能登录。
如果说第一个因素是“你知道的东西”,那第二个因素将基于“你拥有的东西”(例如智能手机),就像生物特征信息一样。
我们将继续设置,并将智能手机用作保护Raspberry Pi的第二个因素。
更新操作系统
你应该做的第一件事是确保你的Raspberry Pi OS保持最新。如果你正在运行不够新的操作系统,则可以在命令行操作:
$ sudo apt-get update
$ sudo apt-get full-upgrade
启用安全的Shell
Raspbian操作系统在启动时禁用了SSH服务器,如果我们希望通过SSH访问Raspberry Pi,则需要启用它。
启用SSH最简单的方法是先进Raspbian桌面,找到菜单,然后选择“首选项”,Raspberry Pi配置。接下来,选择“Interfaces”选项卡,然后单击按钮启用SSH,再点“确定”。
你还可以在命令行启用它:
$ sudo systemctl enable ssh
$ sudo systemctl start ssh
另外,你可以用raspi-config启用SSH ,如果你是首次安装操作系统,也可以在写SD卡时启用SSH 。
启用挑战响应
接下来,我们需要告诉SSH守护程序启用“挑战响应”密码。继续打开SSH配置文件:
$ sudo nano /etc/ssh/sshd_config
通过将ChallengeResponseAuthentication从默认的no更改为yes来启用挑战响应。
重启SSH服务
$ sudo systemctl restart ssh
在你的笔记本电脑上打开一个终端,确保你仍然可以SSH到你的树莓派——尽管你还没有被提示输入2FA代码。在这个阶段检查是否一切正常是明智的。
安装双因素身份验证App
你需要做的第一件事是将应用程序下载到手机,该应用程序将生成TOTP。Google身份验证器是最常用的一种。它可用于Android ,iOS 和Blackberry ,甚至在GitHub上也有该应用程序的开源版本。
App Store中的Google Authenticator
因此,请继续在你的手机上安装Google Authenticator或另一个2FA应用程序,例如Authy 。然后,在Raspberry Pi上安装Google Authenticator PAM模块。
$ sudo apt install libpam-google-authenticator
现在我们在手机和Raspberry Pi上都安装了2FA,已经准备好进行配置。
配置两因素身份验证
现在,你应该在Raspberry Pi上运行Google Authenticator而不使用sudo来生成QR码:
$ google-authenticator
之后,你可能需要调整“终端”窗口的大小,以便正确显示QR码。不幸的是,它比标准的80个字符略宽。
google-authenticator生成的QR码
此刻先不要下一步! 在执行其他任何操作之前,你应该复制紧急代码并将其放在安全的地方。
这些代码使你可以在丢失手机的情况下访问Raspberry Pi,并关闭2FA。没有它们话,如果你丢失或破坏了用于身份验证的设备,则将无法通过SSH访问Raspberry Pi。
接下来,在我们继续使用Raspberry Pi上的Google Authenticator之前,请在手机上打开Google Authenticator应用,点击右上角的加号(+),然后点击“扫描二维码”。
手机将询问你是否允许该应用访问你的相机;选择“是”,相机镜头将打开,将二维码放置在屏幕上的绿色框中。
使用Google Authenticator应用程序扫描QR码
手机应用程序识别出QR码后,就会添加你的新帐户,并会自动开始生成TOTP代码。
Google Authenticator应用中的TOTP
你的手机将每三十秒生成一次新的TOTP密码。但是,直到我们完成你在Raspberry Pi上所做的工作,此验证码才有用。
切换到终端窗口,并在询问Google Authenticator是否更新你的.google_authenticator文件时回答“Y” 。
然后回答“Y”以禁止多次使用相同的身份验证令牌,“N”以增加时间偏移窗口,“Y”以限制速率,以防止暴力攻击。
接下来,我们要做的就是启用2FA。
启用双因素身份验证
我们将使用Linux可插拔身份验证模块(PAM),它为应用程序和服务提供动态身份验证支持,以便在Raspberry Pi的SSH上添加2FA。
现在我们需要配置PAM以添加2FA:
$ sudo nano /etc/pam.d/sshd
将必需的auth pam_google_authenticator.so添加到文件顶部。你可以在显示@include common-auth的行上方或下方执行此操作。
编辑/etc/pam.d/sshd
由于我希望在输入密码后提示输入验证码,因此我在@include行之后添加了这一行。如果要在输入密码之前提示输入验证码,则应将其添加到@include行之前。
现在重新启动SSH守护程序:
$ sudo systemctl restart ssh
接下来,在笔记本电脑上打开一个终端窗口,然后尝试用SSH访问Raspberry Pi。
收尾
如果一切都按计划进行,那么当你通过SSH访问Raspberry Pi时,输入密码后应该提示你输入TOTP。
用SSH访问我的Raspberry Pi
继续打开手机上的Google身份验证器,然后在出现提示时输入六位验证码。登录Raspberry Pi。
无论是SSH还是SCP,设备的安全性都大大提高了。
现在,你已经在手机上装好Google Authenticator应用程序,可以为重要的服务和网站(例如Google,Twitter,Amazon等)启用2FA了,因为大多数网站都已支持双因素验证。
作者:Alasdair Allan
来自:Raspberrypi.org