当前位置: 首页>>技术教程>>正文


security – 如何使用双因素身份验证进一步保护我的系统?

,

问题描述

标题基本说明了一切。我听到了更多关于双因素身份验证、one-time 密码、hard-tokens 和其他改进的安全功能的信息。随着仅使用密码的安全性降低,我想知道如何提高 Ubuntu 的安全性。我正在使用 Unity 14.04 LTS。

最佳方案

您可以使用 Google 创建的开源可插入身份验证模块 (PAM),即 Google Authenticator 。此模块可在标准存储库以及 GitHub 中找到,因此您可以从源代码构建。与同名的 Android、iOS 或 Blackberry 应用程序结合使用,它会创建基于时间的 time-sensitive 代码,用于与您的密码一起进行身份验证。由于它是一个 PAM 模块,因此几乎可以将其放入任何地方。让我们开始吧!

Installing

首先,你可以使用以下命令安装 PAM:

sudo apt-get install libpam-google-authenticator

简单的!

设置:

安装完成后,您还需要安装适用于 Android、iOS 或 Blackberry 的相应移动应用程序(具体取决于您的移动平台)。每个应用程序都离不开另一个。获得移动设备所需的应用程序后,在终端中运行以下命令:

google-authenticator

首先会问您几个问题,第一个问题是唯一一个您必须回答 “Yes” 的问题,它会询问您是否希望代码基于时间。之后,阅读每个问题并做出对您最有意义的选择。

完成初始 set-up 后,您将在终端中看到一个非常大的二维码,以及一些其他信息。如果您不想使用二维码配对设备,则“您的新密钥是:”这一行非常必要,因此在完成 set-up 之前不要关闭此窗口!这给您的 “scratch codes” 也很重要,因为如果您丢失了移动设备,您将用它们来 log-in。把它们写下来并存放在安全的地方。

现在,在您的移动设备上,打开您的 Google Authenticator 应用程序并选择“设置帐户”。您可以扫描生成的二维码,也可以选择“使用提供的密钥”。如果您扫描二维码,所有内容将自动保存在名为 “your_user@your_host” 的帐户下。但是,如果您选择“使用提供的密钥”,则必须手动输入名称、密钥和令牌类型。名称可以是任何您想要的名称。密钥将是之前生成的密钥。类型将是默认的基于时间的类型。设置完成后,您将在 Google Authenticator 应用程序的主窗格上看到该帐户,旁边还有一个 circle-shaped 计时器。该计时器每 30 秒耗尽一次,并生成一个新代码。

启用它!

魔法来了。由于这是一个 PAM 模块,因此它可以用于各种地方。我将逐步介绍如何向 sudo 请求、SSH log-ins 和 lightdm log-in 添加身份验证。但是,阅读本教程后,您将能够基于相同的技术在其他地方启用它。

SSH

我先做这个,因为还有一个额外的步骤。你需要做的第一件事是编辑你的 SSH 配置文件:

gksudo gedit /etc/ssh/sshd_config

搜索以下行:

ChallengeResponseAuthentication no

并将 “no” 更改为 “yes”。

现在,您需要编辑 ssh 的 PAM 模块:

gksudo gedit /etc/pam.d/sshd

在此文件的最末尾,添加以下行:

auth required pam_google_authenticator.so nullok

“nullok” 参数告诉系统,如果用户没有 set-up 双因素身份验证,则不要请求验证码。编辑完成后,继续并重新启动 ssh 服务:

sudo service ssh restart

sudo 请求

编辑 sudo 的 PAM 文件:

gksudo gedit /etc/pam.d/sudo

在最后添加以下行:

auth required pam_google_authenticator.so nullok

现在每个 sudo 请求都会要求输入验证码和密码。

LightDM(GUI Log-In)

编辑 LightDM 的 PAM 文件:

gksudo gedit /etc/pam.d/lightdm

在最后添加以下行:

auth required pam_google_authenticator.so nullok

就是这样!每次你通过 GUI 输入 log-in 时,它都会在你输入密码后要求输入验证码。

System-Wide 和 TTY Log-In

即使你启用了上述方法,如果你切换到带有 CTRL + ALT + F# 的 TTY,它仍然不会要求输入验证码。要解决此问题,请编辑 common-auth PAM 文件:

gksudo gedit /etc/pam.d/common-auth

并在最后添加以下行:

auth required pam_google_authenticator.so nullok

注意:由于此 common-auth 文件包含在所有其他身份验证类型文件中,因此您需要从其他文件中删除身份验证所需的行。否则,它将要求输入两次验证码,并且之后不允许您输入 log-in。

Wrap-Up

如您所见,添加此身份验证非常容易。如果您使用 LightDM 以外的显示管理器,则可以轻松地相应地更改上面的 lightdm 行。由于您的移动设备和系统已经共享此密钥,因此它们应该始终是 in-sync。此 set-up 与 Google 服务器或任何其他互联网资源没有交互。即使两个设备都完全离线,应用程序中显示的验证码也将是正确的。每当您需要通过您启用的方法之一访问 log-in 时,只需确保打开您的移动应用程序并获取当前验证码即可。

玩得开心!!

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/14589.html,未经允许,请勿转载。