分类: BSD
2010-07-13 10:18:40
开始使用opie之前,你必须自己在/etc/opiekeys目录中添加opie数据库。默认时,此数据库为空,这意味着如果运行more命令你只能得到下面的提示符:
BSD#more /etc/opiekeys |
为添加自己的数据库,可以使用带参数的opiepasswd命令∶
BSD# opiepasswd - c |
注意开始部分的警告,当运行opiepasswd - c命令时,你或者坐在你要登录到其上的机器旁边(控制台),要么经由ssh连接到该机器。否则,你的秘密通行短语和一次性口令将以明文文本的形式通过网络发送——很明显,这是一个严重的的安全隐患。接下来在提示符下故意输入一个字符数较短的通行短语如“ace6nm/”,看一下它有何反应:
Secret pass phrases must be between 10
and 127 characters long。 |
这里我们收到一个警告,因为刚才输入的通行短语太短,按要求通行短语的长度应在10到127个字符之间。此通行短语在概念上于SSH系统中的产生公/私密钥对的通行短语相仿。此通行短语本身并不充当一个口令,而是用来证明我是将root帐户添加到数据库以及有权建立“应答”(或一次性口令)的那个人。从下文可以看到,应答包含六个单词,每个单词由毫无意义的大写字母组成。按照提示输入正确的通行短语之后,屏幕输出如下:
ID root OTP key is 499 gr9306 |
此时回到命令提示符,我可以再次使用more命令验证opie数据库∶
BSD# more /etc/opiekeys |
注意,在数据库中,存在包含我的用户名root的一个登记项,后面跟着计数器( 499),然后是一个种子值( dh0391),再后面是一个一次性口令(4f0d07ed32197333),最后面是登记项增到数据库的日期与时间。对我们来说重要的是计数器和种子值,因为每次通过一次性口令等录时都要用到它们。
如果需要验证我们的计数器和种子值,可用此命令进行∶
BSD# opieinfo
498 gr9306
opieinfo命令显示下次登录时使用的资料。请注意,下次通过一次性口令登录时的预期应答与“ 498 ”有关,而非关上面more /etc/opiekeys命令中见到的“ 499 ”对应的应答,即4f0d07ed32197333。为得到所预期的应答, 我们需要用到一个OTP计算器,实际上就是opiekey命令。
登录
现在,用下面的命令退出本次会话准备重新登录:
BSD#logout |
此时我们实际上有两种选择:(1)每次登录时使用某终端上的计算器产生一个应答,或者(2)一次产生一列应答,并以此建立一个应答表,直到将表上的应答用完为止。让我们先从第一方案开始∶
login: root |
登录时,您会收到了一个OTP挑战,其中包含您的种子值和当前的计数器。如今,opie正在等待我们的应答(或一次性口令),很明显该应答与当前计数器498有关。需要说明的是,在默认的情况下,登录时用户能够决定是否使用OTP,也就是说如果您在Password:提示符下输入您的可重用口令,您将象往常一样登录。
如果您决定使用OTP登录,眼下要做的事便是计算正确的应答。俗话说得好,不管白猫黑猫,只要能逮住老鼠就是好猫;与此相仿,您在哪儿计算应答无关紧要,只要不通过一个非加密网络连接使用计算器就行。因此,您可以使用另一个虚拟终端来产生应答,例如,您能够按Alt - F3,在本地登录然后运行计算器;另外,如果您能访问室内另一台计算机,甚至一个运行计算器软件的Palm,在那里计算应答也未尝不可。
利用计算器产生正确的应答时,有三样东西必不可少∶(1)当前计数器,(2)您的种子值和(3)您的秘密通行短语。当前计数器和种子在挑战中出现,实际上他们是公开的,但重要的是您的秘密通行短语只有您本人知道;换句话说,一旦某人得到了您的通行短语,他就能够以您的身份计算应答并且登录——很不幸,您的“嘴脸”并没有深深地烙在计算机的脑海里,除非您使用的是更高级的生物鉴别系统。
现在让我们利用种子值和计数器计算所需要的应答,如下∶
BSD# opiekey 498 gr9306 |
请注意,在按照提示输入秘密通行短语后,我们得到了与计数器498对应的应答∶BEAM GWYN WART MOLT WAD RUDY。现在,让我们继续进行先前未完成的OPIE登录∶
login: root |
这里需要说明的是,不要在Password:提示符后键入您的可重用口令,而是按回车键开启echo,这样就允许您看到所键入的应答。但对可重用口令系统来说,Echo可绝不是个“好玩意”,所以使用可重用口令时它总是被关闭。然而,对一次性口令技术来说,每次登录时的应答都不相同,所以即使有人看着您输入也不要紧,因为下次它就不可用了。另外,与可重用口令不同的是,该应答不区分大小写,所以无论是大写或小写字母的应答,它都会来者不拒。
现在如果您运行opieinfo命令的话,您将看到下一个预期应答与计数器497相关。也就是说,每次使用一次性口令登录后,该计数器将自动减1。现在您可以放心地使用了,但一定注意绝不要让您的计数器减少为0,至于为什么,我想不用我说您也一定猜得到。
建立密钥表
就像有人吃苹果时喜欢现吃现洗,而有人则一次把苹果都洗干净,嘴馋时拿过来就往嘴里送一样,并不是所有人都喜欢上面介绍的方法。现在让我们展示第二方法——一次产生多个应答。为此,在使用计算器时,除了需要参数n外,还需要一个数字作为参数,以便指出想一次计算多少个应答。在这里,假设我们想产生10个应答,当前计数器为497,见下面的命令:
BSD# opiekey -n 10 497 gr9306 |
以上便是备您今后十次登录所需的口令列表。您当然可以为它做一份硬拷贝,比如把它打印到一张纸上,然后将其保存到一个安全的地方。在此强烈建议男士们将其放到您的钱包中,因为携伴外出时,可爱的女士们常常为其男伴的钱包而“揪心”:一则怕其随小偷而去,更重要的是“不知这次他有没有把钱带够呀?”。现在让我们把口令表输出到名为secretlist的文件中∶
BSD# opiekey -n 10 497 gr9306 > secretlist |
接下来您可以打印了,不过请注意,一旦打印完毕,请立刻将该文件从硬盘上抹去,除非您疯狂到要留十个口令副本在硬盘上的地步。
如果您的计数器小得到了危险的地步,比方说10左右,建议您使用opiepasswd命令重置它。在您连到口令数据库后,可以用带n(数字开关)以及s(种子值开关)而非c开关的opiepasswd命令完成这项工作。比如,您打算将计数器重置为366,同时将您的种子值改为mssp298,假设当前的种子值为7,执行命令时的情形如下∶
BSD# opiepasswd -n 366 -s mssp298 |