我使用 Ubuntu 16.04 并寻求以特殊方式加强我的 SSH 身份验证。
我有一台带有最小Ubuntu服务器的机器,我主要用来通过其本地OpenSSH服务器传输文件。现在,由于一些原因,我在那台机器上没有防火墙,而且我也避免使用密钥对,因此我只使用了密码。我为抵御蛮力攻击而留下的唯一方法之一,也是我目前最想要的方法,是使用一种机制,在 Y 次连接尝试后阻止用户 X 小时。
我希望有一个独立的机制(即,不作为防火墙的一部分)阻止用户 X 小时,在 Y 数量的连接尝试作为防御蛮力攻击的一种方式之后。
您是否知道可以让我实现所需情况的实用程序(和特定配置)?
这个答案旨在提供一种可能的方式来满足主要问题:保护 Ubuntu OpenSSH 服务器免受暴力攻击,但没有防火墙或 SSH 密钥对?
实际上,我更喜欢使用防火墙和 SSH 密钥对,并发现Doug Smythies 提供的答案非常有用。
双因素身份验证 (2FA) 是一种多因素身份验证。在此示例中,2FA 通过使用这两个不同组件的组合来确认用户声称的身份:
基于时间的六位数令牌代码 - 身份验证代码。默认情况下,这些令牌的有效期为 30 秒,外加 60 秒以补偿可能的时间偏差。
用户的密码,它本身应该足够安全。
其实当你已经设置好PermitRootLogin no并且用户名选择好了,对我来说,这种方法可以称为3FA。
此外,如果您登录的计算机没有针对暴力登录尝试进行强化,您可以为身份验证模块启用速率限制。
让我们开始:
sudo apt-get install libpam-google-authenticator
Run Code Online (Sandbox Code Playgroud)
编辑/etc/pam.d/sshd并添加此指令:
# Google Authenticator
auth required pam_google_authenticator.so
Run Code Online (Sandbox Code Playgroud)
将其添加到文件的开头。这样系统会先询问验证码,然后才询问密码。将它添加到文件的末尾 - 系统会询问第一个密码。
编辑/etc/ssh/sshd_config和修改或添加这些指令:
ChallengeResponseAuthentication yes
UsePAM yes
PasswordAuthentication no # You can leave this 'yes' it doesn't matter.
Run Code Online (Sandbox Code Playgroud)切换到应该使用双因素身份验证的用户并在终端中输入:
$ 谷歌身份验证器 Enter 您是否希望身份验证令牌基于时间 (y/n) https://www.google.com/chart?chs=200x200&chld=M|0&cht=qr&chl=otpauth://totp/user@host%3Fsecret%3DE3CY3TNSNBXXXXXXyEnter您的新密钥是:E3CY3TNSNBXXXXXX 您的验证码是 229999 您的紧急刮刮码是: 19999711 ... 你想让我更新你的“/home/user/.google_authenticator”文件(是/否) yEnter 您想禁止多次使用同一身份验证令牌吗?这将限制您大约每 30 秒登录一次,但它增加了您注意到甚至防止中间人攻击的机会 (是/否) yEnter 默认情况下,令牌的有效期为 30 秒,为了补偿客户端和服务器之间可能的时间偏差,我们允许在当前时间之前和之后使用额外的令牌。如果您遇到时间同步不佳的问题,您可以将窗口从其默认大小 1:30 分钟增加到大约 4 分钟。你想这样做吗 (是/否) yEnter 如果您登录的计算机没有针对暴力登录尝试进行强化,您可以为身份验证模块启用速率限制。默认情况下,这会将攻击者限制为每 30 秒不超过 3 次登录尝试。您要启用限速吗 (是/否) yEnter
此对话将生成一个名为的身份验证文件,.google_authenticator放置在用户的主目录中。如果您希望所有用户都使用相同的令牌,则此文件也可用于其他用户的帐户。此外,该文件可以自定义,也可以用于Apache2 中的 2FA,但这是另一回事。
E3CY3TNSNBXXXXXX上面步骤中生成的密钥 --用于在某些应用程序中生成身份验证代码,如下所示:
在这个例子中使用了 Chromium/Chrome 的 Authenticator 扩展:
编辑:
在某些情况下,google 的时钟和服务器的时钟之间可能存在差异。这里有一些针对这个问题的提示:
不幸的是:如果是 VPS,您可能无权执行此操作...如果您使用的是 VPS,请联系您的提供商为您处理。
如果您的提供商不想响应您的要求,上述设置将起作用,但需要时移。键入date您的服务器的控制台,并测量该时移。然后,只需处理身份验证代码生成时刻与其使用时刻之间的时间转换。
| 归档时间: |
|
| 查看次数: |
2860 次 |
| 最近记录: |