安全外壳(SSH)是一种广泛用于从一台计算机到另一台计算机的安全远程登录的协议,它提供了强大的加密功能以防止未经授权的访问。
然而,随着网络威胁的日益复杂,仅仅依靠传统的基于密码的身份验证可能会使系统容易受到暴力攻击和密码盗窃。这就是双因素身份验证(2FA)发挥作用的地方。
它不仅需要密码(你知道的东西),还需要第二个因素,通常是你拥有的东西(比如移动设备)或你身上的东西(就像指纹),从而增加了额外的安全层。
将2FA与SSH集成可显著降低未经授权访问您的系统的风险,即使密码被泄露也是如此。那么,让我们向您展示如何做到这一点。
步骤1:在手机上安装2FA Authenticator应用程序
首先,您必须在移动设备上安装2FA验证器应用程序,才能使用SSH进行双因素身份验证。此应用程序生成时间敏感的一次性使用代码,这些代码是身份验证过程中的第二个因素。
此类应用程序的流行选择包括Google Authenticator或Microsoft Authenticator。它们适用于Android和iOS设备,可以从各自的应用商店下载。
- Android版谷歌验证器
- iOS版谷歌验证器
- 适用于Android的Microsoft Authenticator
- 适用于iOS的Microsoft Authenticator
对于本指南,我们将使用Google Authenticator应用程序。将其预装在您的移动设备上很重要,因为在第3步中,我们将在与SSH服务器的2FA初始设置过程中使用它。
步骤2:安装Google的PAM验证器模块
Google Authenticator是一种基于软件的身份验证工具,使用基于时间的一次性密码(TOTP)算法和基于HMAC的一次性密码算法实现双因素身份验证(2FA)服务,用于验证软件应用程序的用户。
要使您的Linux系统为此做好准备,您必须安装名为“
libpam谷歌验证器
或
谷歌验证器
,”取决于您的分销。但是这个包裹有什么功能?
简而言之,它为Linux提供了一个软件模块,将Google Authenticator集成到可插拔身份验证模块(PAM)系统中。PAM是一个框架,用于将多个低级身份验证方案集成到高级API中,允许在需要用户验证的程序中实现各种身份验证方法。
Ubuntu/Debian
Ubuntu、Debian和其他基于它们的发行版,如Linux Mint或Pop_操作系统,可以使用下面的apt命令安装Google Authenticator:
sudo apt安装libpam谷歌验证器
Rocky Linux/AlmaLinux
对于Rocky和Alma等企业Linux发行版,Google Authenticator可通过EPEL存储库获得。因此,您必须首先将其添加到您的系统中(如果您还没有),然后安装Google Authenticator本身。
sudodnf安装epel版本
sudodnf安装谷歌验证器
Fedora
Fedora用户可以在官方分发库中找到Google Authenticator。要安装它,请执行以下命令:
sudodnf安装谷歌验证器
Arch Linux
Google Authenticator可在发行版针对Arch和基于Arch的衍生品的回购中使用。要安装它,请运行:
sudo pacman-S libpam谷歌验证器
步骤3:配置Google Authenticator
成功安装Google Authenticator后,我们现在准备对其进行配置。要进行配置,请打开终端并执行以下命令。
谷歌验证器
从现在开始,您将需要回答几个问题,第一个问题是:“
您希望身份验证令牌是基于时间的吗?
答复
y
“以启用基于时间的一次性密码(TOTP)。
您的终端屏幕上将显示一个二维码。这就是移动设备上的Google Authenticator应用程序发挥作用的地方。打开它,然后单击右下角的“+”图标。
您将遇到两种选择:“
扫描二维码
和
输入设置密钥
。“鉴于终端中显示的二维码可能太大,难以直接从您的设备上扫描,我们将选择”
输入设置密钥
选项继续并点击它。
在“
账户
字段中,输入您选择的名称,例如
my2fa
。“然后,在”
钥匙
“在移动设备的Google Authenticator应用程序的字段中,键入来自的代码”
你的新密钥是
”线路。最后,点击“
添加
按钮
作为回应,该应用程序将生成一个6位数的代码。
在终端中输入此代码,然后点击“
进来
.”
您应该收到一个“
代码已确认
消息此外,我们建议您写下五个紧急代码,并将其保存在安全的地方。
这些代码是一次性的
并授予您SSH访问权限,例如,当您没有方便的移动设备来生成代码时。回复为“
y
“当被要求更新时”
.google_authenticator
文件
关于下一个问题,为了提高安全性,再次回答“
y
,”确认要禁用同一代码的多次使用。
Google Authenticator的以下配置选项涉及到,如果您无法适应30秒的时间范围,则可能会使用以前生成的代码,这是每个令牌从生成之时起的有效期。
但是,由于此选项会降低安全性,我们强烈建议您回复“
n
.”
最后,回答“
y
“以激活速率限制,允许在30秒内尝试最多三次登录,从而最大限度地减少SSH服务器上成功进行暴力攻击的机会。
我们已经完成了Google Authenticator的设置,所以现在是时候继续配置SSH服务器本身以允许双因素身份验证了。
步骤4:将SSH配置为使用双因素身份验证
打开SSH服务器配置文件,使用首选的终端文本编辑器进行编辑:
sudo-vim/etc/ssh/sshd_config
这里要做的是添加/更改以下两个配置值:
KbdInteractiveAuthentication是
ChallengeResponseAuthentication是
如果在文件中找到这两个设置中的任何一个,请将其值更改为“
对
“。如果它们不在那里,只需像下面的例子一样将它们添加到文件的末尾,然后保存并退出文件。
现在,让我们来分析一下这两个选项的含义:
- Kbd交互身份验证
–当在SSH中启用时,它允许服务器参与2FA交互过程。例如,在输入密码(第一个因素)后,服务器可能会提示您从2FA应用程序中输入代码(第二个因素)。
- ChallengeResponseAuthentication
–启用后,SSH服务器可以使用质询-响应方法进行身份验证。这包括键盘交互式身份验证等方法,提示用户输入信息以响应挑战。换句话说,在这种情况下,它允许SSH服务器提示用户输入2FA应用程序生成的代码。
最后,重新启动SSH服务器,然后我们可以进入为SSH服务器设置双因素身份验证的最后一步。
sudo systemctl重新启动ssh
步骤5:为SSH的双因素身份验证设置PAM
PAM(Pluggable Authentication Modules,可插拔身份验证模块)在SSH的身份验证过程中发挥着至关重要的作用,为身份验证提供了一个灵活的模块化框架。这意味着SSH没有其硬编码的身份验证方法,而是使用PAM根据需要插入各种身份验证机制。
因此,最后一步是将其配置为允许SSH 2FA。为此,我们打开其配置文件:
sudo vim/etc/pam.d/sshd
然后,我们应该在开头添加以下行:
auth
必修的
pam_google_authenticator
所以
代码语言:
CSS
(
css
)
保存文件,退出,然后进入最后一个最激动人心的部分。
步骤6:测试SSH 2FA
现在,让我们检查一下是否一切正常。要从远程计算机执行此操作,请尝试通过SSH连接到配置为使用双因素身份验证的服务器。
系统将提示您输入验证码。在您的移动设备上打开Google Authenticator应用程序,并在终端中键入它显示的6位数代码。当你打字时,它不会显示在屏幕上。
接下来,您需要输入用户的密码。一旦放入正确的密码,您将获得对服务器的SSH访问权限。
如果你在systemd日志中查看幕后发生的事情,你会发现登录过程运行得很好。来自Google Authenticator的双因素身份验证代码和用户密码被成功接受。
然而,正如systemd日志所示,即使您键入了正确的密码但使用了错误的代码,也不允许您通过SSH连接到服务器。
干得好!您已经成功地设置了双因素SSH身份验证,使您的服务器更加安全,并得到很好的保护,免受未经授权的访问。
可选:在SSH 2FA中包含基于密钥的身份验证
好吧,我们已经取得了很好的进展,但我们可以让事情变得更好。让我们为双因素身份验证过程添加一个SSH密钥。这增加了一层额外的安全性,同时避免了依赖用户密码的不太安全的方法。
为了实现这一点,我们假设您已经生成了一对私钥和公钥,并对设置和运行的服务器进行了无密码SSH身份验证。然而,如果您还没有,我们提供了一个指南,可以帮助您快速简单地完成任务。现在,回到主题上来。
首先,打开“
/etc/ssh/shd_config
“文件并设置”
密码身份验证
“选项到”
不
,”如下图所示。
这告诉SSH服务器禁用密码身份验证,这样用户就无法使用常规用户名和密码登录。相反,他们必须使用其他身份验证方法,如基于SSH密钥的身份验证。
然后,将下面显示的选项添加到您的“
sshd_config
文件
身份验证方法公钥、键盘交互
- 身份验证方法
:指定必须成功完成才能授予用户访问权限的身份验证方法。
- 公钥
:这表示第一种身份验证方法基于公钥身份验证。
- 键盘交互式
:这是继“
公钥
”方法已成功完成。它通常涉及用户输入信息以响应提示。在我们的案例中,这涉及到引入由Google Authenticator应用程序生成的2FA代码。
保存文件,关闭它,然后重新启动SSH服务。
sudo systemctl重新启动ssh
现在,打开“
/etc/pam.d/sshd
文件,找到行
@包括公共身份验证
,”并在其前面加上注释标记(#)。这将阻止PAM使用用户的帐户密码登录。
现在尝试通过SSH再次登录——神奇的事情发生了!要求您输入用户密码的提示消失了。
只需在您的移动设备上输入Google Authenticator应用程序生成的6位代码,您就会登录。SSH密钥将在后台自动发送到服务器。
然而,我们再次澄清,在实现此方法之前,您需要设置SSH服务器的无密码身份验证。
结论
为SSH访问设置双因素身份验证(2FA)对于增强远程连接的安全性至关重要。本文详细介绍了配置Google Authenticator、修改SSH服务器设置以及为SSH的2FA设置PAM的步骤。
结果是,您的SSH服务器现在可以很好地抵御暴力攻击和未经授权的访问尝试。此外,将基于密钥的身份验证结合到SSH 2FA过程中增加了一层安全性,超越了仅依赖密码。
谢谢你抽出时间!一如既往,我们非常欢迎您的反馈和意见。
在首次引入 Windows 大约 41 年后,记事本终于更新了自动更正和拼写检查功能。这家科技巨头于今年 3 月推出了拼...
大鱼 2024 年 7 月 9 日
在Ubuntu及其他基于Debian的Linux发行版中,软件包管理是系统维护的一个重要方面。apt和apt-get是两...
大鱼 2024 年 6 月 26 日
远程桌面是一种允许您远程接管和使用另一台计算机的服务。在Ubuntu中,可以在图形客户端机器上启用它来控制主机。此功能对...
大鱼 2024 年 5 月 7 日
利用当天的视频 苹果2024年5月的“放开”活动标志着iPad系列的一个重要里程碑,该公司推出了自成立以来最重大的升级。...
大鱼 2024 年 5 月 19 日
已升级到新iPhone,是否要从旧设备中移动所有照片?或者你只是想从别人的iPhone上转移照片?以下是在两部iPhon...
大鱼 2024 年 5 月 19 日