当前位置: 首页 > 科技观察

如何在Linux中为SSH启用多重身份验证_0

时间:2023-03-16 14:03:12 科技观察

译者|康绍景评论|随着违规数量与日俱增,预计到2025年,网络犯罪将给企业造成10.5万亿美元的损失。因此,有必要在技术堆栈之上构建强大的安全层。在本文中,我们将展示如何使用具有多重身份验证的SSH来实现安全性。SSH,即SecureShell,是一种网络协议,允许用户连接到远程机器(服务器)并访问资源。SSH协议实现了两种类型的安全性,基于密码的身份验证和基于密钥的身份验证。Key-based(public->private)authentication通常被认为比password-based身份验证更安全,因此大多数SSH加固指令倾向于禁用password-based身份验证,只启用key-based身份验证。但无论您选择哪种身份验证机制,我们都可以通过实施多因素身份验证设置来提高SSH的安全性。什么是多重身份验证?多因素身份验证(MFA)是一种安全身份验证过程,需要从不同的凭据类别中选择多种身份验证技术。多因素身份验证也称为“双因素身份验证(2FA)”。多因素身份验证在验证您声明的身份时涉及两个因素:第一个是您在创建用户帐户时创建的密码。第二种是生成一次性密码(OTP)的任何应用程序,或向设备发送文本消息或拨打电话的任何协议。根据应用程序的实现方式,身份验证方法会有所不同。MFA使用的一些常用工具包括:安装在移动设备上以生成令牌的应用程序。Yubikey等外部设备。基于OTP密码的指纹面部识别短信或来电要启用SSH多因素身份验证,我们将使用“GoogleAuthenticator”应用程序。它使用OATH-TOTP,以及您可以安装和试用的其他替代方案,例如TwilioAuthy或FreeOTP。我们将从在服务器和移动设备上安装GoogleAuthenticator应用程序开始,并尝试启用MFA和身份验证。安装GoogleAuthenticator首先通过playstore/Itunes在您的Android或IOS设备上安装GoogleAuthenticator应用程序。现在,在您的Linux系统上安装GoogleAuthenticator应用程序。根据发行版,运行以下安装命令。在Ubuntu及其衍生产品上,运行以下命令:$sudodnfinstallgoogle-authenticator-y在基于RHEL的发行版上,运行以下命令:$sudodnfinstallgoogle-authenticator-y在基于Arch的发行版上,运行以下命令;$sudopacman-Slibpam-google-authenticator为用户生成初始令牌作为设置MFA的第一步,您必须从终端运行以下命令。这将通过生成TOTP密钥来完成初始设置。此密钥适用于运行命令的用户,而不适用于系统上的所有用户。$google-authenticator在某些步骤中,系统会提示您使用(y/n)选项。第1步:它会提示您选择基于时间的身份验证令牌。基于时间的身份验证令牌将每30秒生成一个新代码。按“y”继续。运行GoogleAuthenticator命令第2步:一个秘密令牌将与QR码一起生成。打开GoogleAuthenticator移动应用程序并扫描二维码或手动输入密码以注册设备。完成后,现在应用程序将开始每30秒生成一次令牌。密钥和验证码步骤3:在这一步中,它会提示您更新主目录中的google_authenticator文件。所有密钥、验证码、紧急刮擦代码都保存在此文件中。按“y”继续。更新google_authenticator文件第4步:如果您在此步骤中选择“y”,令牌将在身份验证后立即过期。在这种情况下,即使某些黑客获得了您的令牌,它也会过期。禁止多次使用相同的身份验证步骤5:此步骤确定允许的令牌数量和时间范围。选择“n”时,将允许在90秒窗口内使用3个令牌。如果我按“y”,它将在240秒的时间窗口内允许17个令牌。令牌数量第6步:此步骤将要求您启用速率限制。速率限制允许攻击者每30秒只能尝试3次登录尝试。如果令牌错误,则他们必须等待N次重试。限速我们已经完成了第一步。打开文件~/.google_authenticator,你可以找到这些步骤所做的所有设置和密码。$cat~/.google_authenticator查看google_authenticator设置您还可以将参数传递给google-authenticator命令,它会创建密钥和其他设置,而无需经过这一系列步骤。$google-authenticator-q-t-d-f-r3-R30-w3有关这些参数的作用,请参阅google-authenticator帮助部分。$google-authenticator--help显示google-authenticator帮助部分为多重身份验证配置SSH在我们使用MFA之前,我们必须对openSSH进行一些配置更改。注意:最佳做法总是要求在进行任何更改之前备份配置文件。如果出现任何问题,还有空间可以恢复更改。然后在更改SSH配置文件时,确保打开一个单独的会话,这样您就不会把自己锁在外面。运行以下命令备份SSH配置文件。$sudocp/etc/ssh/sshd_config/etc/ssh/sshd_config.backup$sudocp/etc/pam.d/sshd/etc/pam.d/sshd.backup首先,将ChallengeResponseAuthentication选项设置为“yes”启用启用SSH以使用MFA。配置SSH以使用MFA接下来,编辑/etc/pam.d/sshd文件:$sudovi/etc/pam.d/sshd还在文件底部添加以下内容:authrequiredpam_google_authenticator.sonullokauthrequiredpam_permit。所以编辑sshdPam配置文件,如果您希望所有用户都必须使用MFA,请删除“nullok”一词。重新启动SSH服务以使更改生效。$sudosystemctlrestartsshd测试双因素认证接下来测试修改是否生效:通过SSH连接服务器,系统会要求你输入密码作为第一因素,然后输入验证码作为第二因素认证,如下图所示。$sshusername@hostname/IPaddress测试双因素认证输入SSH密码和验证码后,就可以登录了。由于我们没有对所有用户强制执行MFA,现在让我们测试一下是否可以连接到另一个用户没有生成和设置令牌。我有一个测试用户可以连接成功而不会被提示输入验证码。似乎也可以使用备用用户连接在没有验证码的情况下登录。基于密钥的身份验证的多重身份验证如果您设置基于密钥的身份验证,则不会提供密码或验证码。因为默认情况下,SSH首先使用公钥认证,如果找到密钥,则使用它进行认证。如果未找到密钥,它将使用基于密码的身份验证。您可以使用详细模式进行检查。$ssh-vusername@hostname/IPaddress##WithverboseSSHwithverbose在/etc/ssh/sshd_config文件底部添加如下内容:AuthenticationMethodspublickey,passwordpublickey,keyboard-interactive接下来打开/etc/pam.d/sshd并注释掉以下行。通用身份验证如果您不注释掉“@includecommon-auth”,那么它将启用多于两个因素的身份验证。首先,它使用密钥进行身份验证,然后使用密码和令牌进行身份验证。由于我只需要一个密钥和令牌进行身份验证,所以我想禁用它。三因素身份验证重新启动sshd服务并测试更改是否有效。$sudosystemctlrestartsshd现在,如果我尝试连接,它会使用公钥作为第一个因素并使用验证码作为第二个因素进行身份验证。密钥和验证码恢复步骤在某些情况下,您可能会丢失或更改您的移动设备,这时您将不得不重新安装google-authenticator应用程序并注册您的密钥以开始生成令牌。如果您被锁定在系统之外,则需要联系系统管理员为您提供一个新的密钥来注册和使用。但是,还有另一种方法可以登录并自己生成密钥。还记得最初步骤中生成的代码吗?您可以使用紧急刮刮码作为登录令牌。每个刮刮码只能使用一次,可以将其保存在安全的地方以备不时之需。该代码保存在~/.google_authenticator文件中。$cat~/.google_authenticatorscratchcode现在可以运行以下命令来重新生成自己的密钥。$google-authenticator结论本文展示了如何安装GoogleAuthenticator以及如何使用不同的配置为SSH启用多重身份验证。作为管理员,您还可以编写bash脚本来自动生成密钥并与用户共享。在设置MFA之前,您还应该加固SSH以使您的系统更加安全。关于作者Karthick是一位热情的软件工程师,喜欢探索新技术。他是一名公共讲师,喜欢撰写有关Linux和开源等主题的技术文章。译者介绍康少京,社区编辑,目前从事通信行业,从事底层驱动开发岗位,学过数据结构,Python,现对操作系统、数据库等相关领域感兴趣。原标题:HowToSetupMulti-FactorAuthenticationForSSHInLinux,作者:Karthick