Secure Shell 或 SSH 是一种加密网络协议,可以通过不安全的网络安全访问设备。 它可以在各种用例中找到它的应用程序,例如远程登录、远程命令行访问和远程命令执行。
如果您使用过 SSH,那么您已经知道它使用单因素身份验证机制,该机制需要 SSH 密钥或密码进行身份验证。 尽管一开始这似乎并不令人担忧,但它确实使系统暴露在几个开放式漏洞中。
因此,通常建议为 SSH 启用双重身份验证 (2FA) 以增强其安全性。 在本文中,我们将详细讨论双因素身份验证,以及有关如何为 SSH 启用 2FA 的综合指南。
什么是双重身份验证?
双因素身份验证或 2FA 是一种多因素身份验证 (MFA) 机制,除了第一个因素外,还需要第二个身份验证因素来验证您的登录并保护您的帐户免受未经授权的访问。
您可以将 2FA 视为由代码生成器应用程序或硬件令牌生成器生成的验证码,您需要在登录时提供,输入密码后才能访问您的帐户。
当您在任何在线服务上注册帐户时,您会创建一个密码来保护它。 此密码充当您的第一个身份验证因素,每次登录您的帐户时服务都需要它来验证您的身份。
为什么要为 SSH 启用 2FA?
默认情况下,SSH 在您与其他设备/服务器之间建立连接之前,会使用公钥或密码对您进行身份验证。
一般来说,这个配置工作得很好,在大多数情况下你可以侥幸逃脱。 但是,当您通过 SSH 连接到保存敏感或个人信息的设备/服务器时,您需要在该系统上提供额外的保护层。
一种方法是在服务器/主机上启用双重身份验证,以保护其通过 SSH 进行的访问,并需要第二个身份验证因素来验证客户端登录。
结果,即使有人设法获得了客户端/主机的密码,他们仍然无法通过 SSH 访问系统,除非他们还提供 2FA 代码。
如何在 Linux 中为 SSH 设置 2FA
在 Linux 上启动和运行 SSH 的 2FA 涉及一系列步骤。 以下是每个步骤的细分,以指导您完成整个过程。
先决条件
不用说,您需要在要启用 2FA 的系统上安装 SSH 服务器程序。 要验证这一点,请打开终端并输入:
ssh -V
如果您安装了 SSH 服务器,请继续下一步。 如果没有,请输入以下命令进行安装:
sudo apt install openssh-server
安装完成后,验证系统上是否启用了 SSH。 为此,请输入:
sudo systemctl status ssh
如果您的状态反映 活跃:活跃(运行),您可以继续进行。 但如果它显示其他情况,请输入以下命令:
sudo systemctl enable ssh
在某些情况下,防火墙配置可能会干扰 SSH,您可能需要发出以下给出的命令来启用系统上的 SSH 服务器。
sudo ufw allow ssh
第 1 步:安装 Google Authenticator PAM
在您的主机上启动并运行 OpenSSH 服务器后,您需要做的第一件事就是安装一个可插入的身份验证模块 (PAM),它提供了必要的基础架构,以便在 Linux 中集成 SSH 的多因素身份验证。
Google Authenticator PAM 是这方面最受欢迎的选择,因为它比其他一些身份验证模块更容易实现和使用。 它提供了使用基于时间的一次性密码 (TOTP) 代码对用户进行身份验证所需的所有必要基础设施,并在 Android 和 iOS 上提供代码生成器应用程序。
要安装 Google Authenticator PAM,请打开终端窗口并运行以下命令:
sudo apt install libpam-google-authenticator
Enter 是的 在安装提示处确认该过程。
第 2 步:配置 SSH
现在您的系统上安装了 Google Authenticator PAM,是时候让 SSH 使用此模块进行身份验证了。 为此,您需要编辑几个配置文件。
我们建议对这些文件进行备份,以避免在此过程中出现问题时遇到问题。 完成后,继续执行以下步骤:
- 使用打开 PAM 配置文件 纳米. 随意使用任何其他 Linux 文本编辑器。
sudo nano /etc/pam.d/sshd
- 将以下行追加到文件中。
auth required pam_google_authenticator.so
- Save 并退出文件编辑窗口。
- 重新启动 sshd 使用 systemctl 服务。
sudo systemctl restart sshd.service
接下来,编辑 SSH 配置文件,该文件负责 SSH 配置。
- 使用 nano 打开文件。
sudo nano /etc/ssh/sshd_config
- 在这个文件中,找到该行 ChallengeResonseAuthentication 否 并将其状态从“不“ 到 ”是的“。这将指示 SSH 在有人尝试登录系统时要求提供身份验证码。
- Save 文件并重新启动 SSH 守护程序。
sudo systemctl restart sshd.service
第 3 步:在 Linux 上配置身份验证器
现在您已经安装并配置了 SSH,您需要配置 Google Authenticator 以生成 TOTP 代码。
为此,请打开终端并使用以下命令启动 Google Authenticator:
google-authenticator
Google Authenticator 现在将向您提出一系列问题。 回答这些问题 是的 (是的) 或 不 (n)。 对于大多数问题,默认答案是 是的 除非您选择选择非默认选项。
以下是应用程序将向您提出的问题列表(缩写形式):
- 使身份验证令牌基于时间(是/否): 是的
- 更新你的“~/.google_authenticator“文件(是/否): 是的
- 不允许多次使用同一个身份验证令牌?: 是的
- 增加代码生成频率(y/n): n
- 启用速率限制 (y/n): 是的
第 4 步:在电话上配置身份验证器
一旦您以“是”回答第一个 Google 身份验证问题,Google PAM 就会在您的屏幕上生成一个二维码以及一个密钥和一些恢复代码。 请按照以下步骤在您的手机上注册 Google Authenticator。
但首先,您需要在智能手机上下载 Google Authenticator 应用程序。
- 点击 加 (+) 签名并选择 扫码 从菜单选项。
- 将设备的摄像头对准计算机屏幕上的 QR 码,以在应用程序上自动创建一个条目。
- 或者,选择 Enter 设置键 来自 加 (+) 菜单并填写所需条目。 为此,首先,为您的条目命名 – 它应该是您可以轻松识别的名称 – 然后输入屏幕上二维码下方显示的密钥。
- 最后,点击 添加 保存条目。
作为预防措施,请复制 QR 码下方显示的所有恢复码并将其保存到安全位置。 如果您无法在手机上访问 Google Authenticator 或失去访问权限,您可能需要它们。
使用 2FA 保护 Linux 上的 SSH 访问
如果您正确遵循了上述说明,您应该在 Linux 系统上启用了 SSH 的双重身份验证。
现在,每次您想通过 SSH 访问此服务器/设备时,您需要首先输入 SSH 密码(第一个因素),然后输入来自 Google Authenticator 应用程序的 TOTP 代码(第二个因素)以验证您的登录。 这是管理和保护您的远程 SSH 登录免受互联网入侵者的好方法。