如何使用 OPIE 获取 FreeBSD 10.1 的一次性密码

介绍

SSH是远程登录服务器的最流行的方式,它是一种加密协议,可以保护您的密码免受中间人和重播攻击。

但是,您必须记住,SSH 只能在数据过境时保护您的数据,攻击者可以通过其他方式发现您的 SSH 密码,例如使用键盘记录器或战略性地放置的摄像头。

只要你使用一个值得信赖的计算机(例如,一个属于你或你的公司),并从一个安全的位置这样做,你不必担心这种攻击。

在本教程中,您将学习如何生成和使用一次性密码登录您的远程 FreeBSD 服务器. 您可以在安全位置时预生成一个或多个一次性密码,并在您从不安全的位置访问服务器时将其保存到以后。

<$>[注] 注: 截至 2022 年 7 月 1 日,DigitalOcean 不再支持通过控制面板或 API 创建新的 FreeBSD Droplets。

前提条件

为了遵循本教程,您将需要:

  • 通过 SSH 访问的 FreeBSD 10.1 服务器 * 允许切换到 root 的用户;DigitalOcean 上的默认 freebsd 用户是好的

步骤 1 – 创建一个新的 OPIE 用户

为了确保您不会从远程服务器中被锁定,最好创建一个单独的用户,以便与OPIE一起使用。

切换到 root,键入:

1sudo su

若要创建您想要使用一次性密码的新用户,请键入:

1adduser

您将被要求输入有关用户的各种细节。 让用户名为 sammy. 当您被要求使用密码时,请确保您输入强大的密码。

 1[secondary_label Interactive]
 2Username: sammy
 3Full name: Sammy the Shark
 4Uid (Leave empty for default):
 5Login group [sammy]:
 6Login group is sammy. Invite sammy into other groups? []: 
 7Login class [default]:
 8Shell (sh csh tcsh zsh nologin) [sh]: 
 9Home directory [/home/sammy]:
10Home directory permissions (Leave empty for default):
11Use password-based authentication? [yes]:
12Use an empty password? (yes/no) [no]:
13Use a random password? (yes/no) [no]:
14Enter password: password
15Enter password again: password
16Lock out the account after creation? [no]:
17Username   : sammy
18Password   : ****
19Full Name  : My Test User
20Uid        : 1001
21Class      :
22Groups     : sammy
23Home       : /home/sammy
24Shell      : /usr/local/bin/zsh
25Locked     : no
26OK? (yes/no): yes
27adduser: INFO: Successfully added (sammy) to the user database.
28Add another user? (yes/no): no
29Goodbye!

输入以确认详细信息,当您被问及是否要添加另一个用户时,请键入,以退出添加者

您现在可以重返原始用户,即默认用户 freebsd或通常的 sudo 用户:

1exit

在此时刻,您应该与您的非OPIE sudo用户登录到您的服务器。

步骤 2 – 登录为新 OPIE 用户

从当前的终端会话中,使用ssh登录为 sammy,OPIE用户。

1ssh sammy@localhost

这很重要,因为OPIE设置只能从安全的终端进行,如果您使用不安全的协议,如rshtelnet,OPIE将投诉。

步骤 3:为新用户启用 OPIE

<$>[警告] [标签警告] 一旦您为用户启用OPIE,该用户将无法使用正常密码登录! 因此,请确保您至少保持一个用户在没有OPIE的情况下可访问; 在本教程中,我们将使用标准SSH密钥登录的 freebsd用户。

若要将用户添加到 OPIE 身份验证系统,请使用命令 opiepasswd. -c 选项告诉命令,您正在使用可信计算机并处于安全位置。

1opiepasswd -c

当您被要求使用秘密通道时,请输入至少十个字符长的通道短语。 该通道短语不应与用户的SSH密码相同。

该命令的完整输出将是这样的:

1[secondary_label Interactive]
2Adding sammy:
3Only use this method from the console; NEVER from remote. If you are using
4telnet, xterm, or a dial-in, type ^C now or exit with no password.
5Then run opiepasswd without the -c parameter.
6Using MD5 to compute responses.
7Enter new secret pass phrase: Sammy's secret pass phrase
8Again new secret pass phrase: Sammy's secret pass phrase

您将收到一个新的OPIE种子和一个随机通行句子:

1[secondary_label Output]
2ID sammy OTP key is 499 si5509
3RITE NERO BASS SOFA BEND TO

在此输出中, sammy 是用户, 499iteration count,和 si5509seed

现在 sammy 已被添加到 OPIE 身份验证系统中,您不再可以使用实际的 SSH 密码登录。

1ssh sammy@your_server_ip

你会看到一个快递,看起来像这样:

1[secondary_label Prompt]
2otp-md5 498 zi5509 ext
3Password:

您现在需要输入一次性密码,因为我们尚未生成一次性密码,因此您目前无法登录。

步骤4:创建一次性密码

当用户被添加到 OPIE 身份验证系统时,将与用户关联一个从 499 开始的迭代数和随机种子。

<$>[警告] [标签警告] 请记住,始终从安全位置生成一次性密码。

如果您已经登录为 sammy,您应该在这个时候,您可以使用命令opieinfo来确定这些值。

1opieinfo

它的输出将包含两个值. 第一是序列号,第二是种子。

1[secondary_label Output]
2498 zi5509

<$>[注] [标签 注释标签] 如果您目前与非OPIE用户登录,您将收到这样的错误:

1[secondary_label Output]
2freebsd not found in database.

在这种情况下,您可以通过打开一个新的终端窗口来获取信息,并尝试与OPIE用户登录。密码提示将包含当前迭代计数和种子。

将这些值传输到opiekey命令中,以生成一次性密码,请记住,就像opiepasswd一样,opiekey也只能从可信的计算机运行。

1opiekey 498 zi5509

或者,你可以输入:

1opiekey `opieinfo`

您将被要求输入 OPIE 用户的pass 语句。 输入您在上一步中选择的pass 语句。

1[secondary_label Interactive]
2Using the MD5 algorithm to compute response.
3Reminder: Don't use opiekey from telnet or dial-in sessions.
4Enter secret pass phrase: Sammy's secret pass phrase
5PER POE TURF LITE ZONE BART

最后一行包含六个短词是您的一次性密码。

打开新终端以尝试再次登录:

1ssh sammy@your_server_ip

您的快递将保持相同:

1[secondary_label Prompt]
2otp-md5 498 zi5509 ext
3Password:

请注意,您在这个提示中看到的数字匹配了opieinfo的输出,以及您传递给opiekey的参数。

现在你可以粘贴你的通行句子,或者手动输入它. 在你开始输入长密码之前,为了避免错误,请按‘ENTER’。

1[secondary_label Prompt]
2otp-md5 498 zi5509 ext
3Password [echo on]:

现在输入一次性密码,你将能够登录到你的服务器作为 sammy

通过键入退出或关闭终端来结束 SSH 会话。

打开另一个终端,并尝试建立新的连接:

1ssh sammy@your_server_ip

这一次,速度将略有不同。

1[secondary_label Prompt]
2otp-md5 497 zi5509 ext
3Password:

正如你所看到的,序列号已经改变了;它已被缩小为一个. 你将无法再次登录,直到你使用这些新值的opiekey生成一个新的一次密码。

步骤5:创建多个一次密码

如果你知道你无法在几天内访问一个受信任的计算机,你可能需要多个一次密码才能访问你的服务器多次。你可以通过运行opiekey选项来指定想要的一次密码的数量。

1opiekey -n 3 `opieinfo`

<$>[注] [标签注] 您可以提供迭代计数号和种子,而不是使用opieinfo

输出将包含三个密码,以及它们的序列号:

1[secondary_label Interactive]
2Using the MD5 algorithm to compute response.
3Reminder: Do not use opiekey from telnet or dial-in sessions.
4Enter secret pass phrase: Sammy's secret pass phrase
5495: BEAM BOW TOO CAVE BOWL AUK
6496: HIVE KITE HUGE SANG VAT FOAM
7497: THIN ALL BUT NIL SUP BALE

一次性密码也可以通过使用 -x 选项生成以六进制数字的形式:

1opiekey -x -n 3 `opieinfo`

当然,密码现在看起来不那么容易理解:

1[secondary_label Interactive]
2Using the MD5 algorithm to compute response.
3Reminder: Do not use opiekey from telnet or dial-in sessions.
4Enter secret pass phrase: Sammy's secret pass phrase
5495: 5484 C106 B214 B801
6496: 98F1 E6CF 7F54 3108
7497: 6010 2C11 192A EDAC

您现在应该把这些写在纸上,并在旅行时携带纸张。下一次您需要登录时,使用纸张查找 SSH 提示中显示的序列号的密码,然后输入它。

当你用完了纸上的所有密码时,只需重复这一步骤来生成更多的密码。但是,如果你用完了所有498个密码,你的序列号变为零,你将不得不再次拨打opiepasswd -c

结论

在现实情况下,您应该提前准备出一个安全位置的适当数量的密码,在纸上写下它们,并在您需要从不安全位置登录时一次使用它们。

在本教程中,您已经学会了如何使用OPIE身份验证系统安全地登录您的远程FreeBSD服务器,从不受信任的计算机上的终端。您已经学会了如何生成一次性密码,并每次需要登录时使用它们。

Published At
Categories with 技术
Tagged with
comments powered by Disqus