14.5 Ò»´ÎÐÔ¿ÚÁî

¡¡¡¡Ä¬ÈÏÇé¿öÏ£¬ FreeBSD ÌṩÁË OPIE (One-time Passwords In Everything) Ö§³Ö£¬ ËüĬÈÏʹÓà MD5 É¢ÁС£

¡¡¡¡ÏÂÃæ½«½éÉÜÈýÖÖ²»Í¬µÄ¿ÚÁî¡£ µÚÒ»ÖÖÊÇÄú³£ÓÃµÄ UNIX® ·ç¸ñ»ò Kerberos ¿ÚÁ ÎÒÃÇÔÚºóÃæµÄÕ½ÚÖн«³ÆÆäΪ ¡°UNIX ¿ÚÁ¡£ µÚ¶þÖÖÊÇʹÓà OPIE µÄ opiekey(1) ³ÌÐòÉú³É£¬ ²¢Îª opiepasswd(1) ÒÔ¼°µÇ¼ÌáʾËù½ÓÊܵÄÒ»´ÎÐÔ¿ÚÁÎÒÃÇ³ÆÆäΪ ¡°Ò»´ÎÐÔ¿ÚÁ¡£ ×îºóÒ»Àà¿ÚÁîÊÇÄúÊäÈë¸ø opiekey ³ÌÐò (ÓÐЩʱºòÊÇ opiepasswd ³ÌÐò) ÓÃÒÔ²úÉúÒ»´ÎÐÔ¿ÚÁîµÄÃØÃÜ¿ÚÁÎÒÃÇ³ÆÆäΪ ¡°ÃØÃÜ¿ÚÁ »òͨË׵ؼò³ÆÎª ¡°¿ÚÁ¡£

¡¡¡¡ÃØÃÜ¿ÚÁîºÍÄúµÄ UNIX ¿ÚÁîºÁÎÞ¹ØÏµ£¬ ¾¡¹Ü¿ÉÒÔÉèÖÃΪÏàͬµÄ£¬ µ«²»ÍƼöÕâô×ö¡£ OPIE ÃØÃÜ¿ÚÁî²¢²»Ïñ¾ÉʽµÄ UNIX ¿ÚÁîÄÇÑùÖ»ÄÜÏÞÓÚ8λÒÔÄÚ[1]¡£ ÄúÏëÒªÓö೤µÄ¿ÚÁî¶¼¿ÉÒÔ¡£ ÓÐÁù¡¢Æß¸ö´ÊµÄ¶Ì¾äÊǺܳ£¼ûµÄÑ¡Ôñ¡£ ÔÚ¾ø´ó¶àÊýʱºò£¬ OPIE ϵͳºÍ UNIX ¿ÚÁîϵͳÍêÈ«Ï໥¶ÀÁ¢µØ¹¤×÷¡£

¡¡¡¡³ýÁË¿ÚÁîÖ®Í⣬ ¶ÔÓÚ OPIE »¹ÓÐÁ½×éÖÁ¹ØÖØÒªµÄÊý¾Ý¡£ ÆäÒ»±»³Æ×÷ ¡°ÖÖ×Ó¡± »ò ¡°key¡±£¬ Ëü°üÀ¨Á½¸ö×Ö·ûºÍÎå¸öÊý×Ö¡£ ÁíÒ»¸ö±»³Æ×÷ ¡°µü´úÂÖÊý¡±£¬ ÕâÊÇÒ»¸ö 1 µ½ 100 Ö®¼äµÄÊý×Ö¡£ OPIE ͨ¹ý½«ÖÖ×Ó¼Óµ½ÃØÃÜ¿ÚÁîºóÃæ£¬ ²¢Ö´Ðеü´úÂÖÊýÄÇô¶à´ÎµÄ MD4/MD5 É¢ÁÐÔËËãÀ´µÃµ½½á¹û£¬ ²¢½«½á¹û±íʾΪ 6 ¸ö¶ÌµÄÓ¢Îĵ¥´Ê¡£ Õâ 6 ¸öÓ¢Îĵ¥´Ê¾ÍÊÇÄúµÄÒ»´ÎÐÔ¿ÚÁî¡£ Ñé֤ϵͳ (Ö÷ÒªÊÇ PAM) »á¼Ç¼ÉÏ´ÎʹÓõÄÒ»´ÎÐÔ¿ÚÁ Èç¹ûÓû§ÌṩµÄ¿ÚÁîµÄÉ¢ÁÐÖµÓëÉÏ´ÎÒ»Ö£¬ Ôò¿ÉÒÔͨ¹ýÉí·ÝÑéÖ¤¡£ ÓÉÓÚʹÓÃÁ˵¥ÏòµÄÉ¢Áк¯Êý£¬ Òò´Ë¼´Ê¹½Ø»ñÁËÉÏ´ÎʹÓõĿÚÁ ҲûÓа취»Ö¸´³öÏ´ν«ÒªÊ¹ÓõĿÚÁ ÿ´Î³É¹¦µÇ¼¶¼½«µ¼Öµü´úÂÖÊýµÝ¼õ£¬ ÕâÑùÓû§ºÍµÇ¼³ÌÐò½«±£³Öͬ²½¡£ ÿµ±µü´úÂÖÊý¼õÉÙµ½ 1 ʱ£¬ ¶¼±ØÐëÖØÐ³õʼ»¯ OPIE¡£

¡¡¡¡½ÓÏÂÀ´½«ÌÖÂÛºÍÿ¸öϵͳÓйصÄÈý¸ö³ÌÐò¡£ opiekey ³ÌÐòÄܹ»½ÓÊÕ´øµü´ú¼ÆÊý£¬ ÖÖ×ÓºÍÃØÃÜ¿ÚÁ ²¢Éú³ÉÒ»¸öÒ»´ÎÐÔ¿ÚÁ »òÒ»ÕŰüº¬Á¬ÐøµÄÒ»×éÒ»´ÎÐÔ¿ÚÁîµÄ±í¸ñ¡£ opiepasswd ³ÌÐòÓÃÓÚ³õʼ»¯ OPIE£¬ ²¢Ð޸ĿÚÁî¡¢ µü´ú´ÎÊý¡¢ÖÖ×ÓºÍÒ»´ÎÐÔ¿ÚÁî¡£ ºÍ opieinfo ³ÌÐò¿ÉÒÔÓÃÓÚ¼ì²éÏàÓ¦µÄÑéÖ¤Êý¾ÝÎļþ (/etc/opiekeys) ²¢ÏÔʾִÐÐÃüÁîµÄÓû§µ±Ç°µÄµü´úÂÖÊýºÍÖÖ×Ó¡£

¡¡¡¡ÎÒÃǽ«½éÉÜËÄÖÖ²»Í¬µÄ²Ù×÷¡£ ÔÚ°²È«µÄÁ¬½ÓÉÏͨ¹ý opiepasswd À´µÚÒ»´ÎÉèÖÃÒ»´ÎÐÔ¿ÚÁ »òÐ޸ĿÚÁî¼°ÖÖ×Ó¡£ µÚ¶þÀà²Ù×÷ÊÇÔÚ²»°²È«µÄÁ¬½ÓÉÏʹÓà opiepasswd ¸¨ÒÔÔÚ°²È«Á¬½ÓÉÏÖ´ÐÐµÄ opiekey À´Íê³ÉͬÑùµÄ¹¤×÷¡£ µÚÈýÀà²Ù×÷ÊÇÔÚ²»°²È«µÄÁ¬½ÓÉÏʹÓà opiekey À´µÇ¼¡£ ×îºóÒ»Àà²Ù×÷ÊDzÉÓà opiekey À´Éú³É´óÅúµÄÃÜÂ룬 ÒԱ㳭ÏÂÀ´»ò´òÓ¡³öÀ´£¬ÔÚûÓа²È«Á¬½ÓµÄµØ·½Ê¹Óá£

14.5.1 °²È«Á¬½ÓµÄ³õʼ»¯

¡¡¡¡µÚÒ»´Î³õʼ»¯ OPIE ʱ£¬ ¿ÉÒÔʹÓà opiepasswd ÃüÁ

% opiepasswd -c
[grimreaper] ~ $ opiepasswd -f -c
Adding unfurl:
Only use this method from the console; NEVER from remote. If you are using
telnet, xterm, or a dial-in, type ^C now or exit with no password.
Then run opiepasswd without the -c parameter.
Using MD5 to compute responses.
Enter new secret pass phrase:
Again new secret pass phrase:
ID unfurl OTP key is 499 to4268
MOS MALL GOAT ARM AVID COED

¡¡¡¡ÔÚ Enter new secret pass phrase: »ò Enter secret password: Ìáʾ֮ºó£¬ Ó¦ÊäÈëÒ»¸öÃÜÂë»ò¿ÚÁî×Ö¡£ ÇëÁôÒ⣬ Õâ²¢²»ÊÇÄúÓÃÓڵǼµÄ¿ÚÁ ËüÓÃÓÚÉú³ÉÒ»´ÎÐԵĵǼÃÜÔ¿¡£ ¡°ID¡± ÕâÒ»Ðиø³öÁËËùÐèµÄ²ÎÊý£º ÄúµÄµÇ¼Ãû£¬ µü´úÂÖÊý£¬ ÒÔ¼°ÖÖ×Ó¡£ µÇ¼ϵͳʱ£¬ ËüÄܹ»¼ÇסÕâЩ²ÎÊý²¢³ÊÏÖ¸øÄú£¬ Òò´ËÎÞÐè¼ÇÒäËüÃÇ¡£ ×îºóÒ»Ðиø³öÁËÓëÄúµÄÃØÃÜ¿ÚÁî¶ÔÓ¦µÄ¡¢ÓÃÓڵǼµÄÒ»¸öÒ»´ÎÐÔ¿ÚÁ Èç¹ûÄúÁ¢¼´ÖØÐµÇ¼£¬ ÔòËü½«ÊÇÄúÐèҪʹÓõÄÄǸö¿ÚÁî¡£

14.5.2 ²»°²È«Á¬½Ó³õʼ»¯

¡¡¡¡Èç¹ûÄúÐèҪͨ¹ýÒ»¸ö²»°²È«µÄÁ¬½ÓÀ´³õʼ»¯£¬ ÔòÓ¦Ê×ÏÈÔÚ°²È«Á¬½ÓÉÏÖ´ÐйýÒ»´Î opiekey£» Äú¿ÉÄÜÏ£ÍûÔÚ¿ÉÐŵĻúÆ÷µÄ shell Ìáʾ·ûÏÂÍê³É¡£ ´ËÍ⻹ÐèÒªÖ¸¶¨Ò»¸öµü´úÂÖÊý (100 Ò²ÐíÊÇÒ»¸ö½ÏºÃµÄÑ¡Ôñ) Ò²¿ÉÒÔÑ¡ÔñÒ»¸ö×Ô¼ºµÄÖÖ×Ó£¬ »òÈüÆËã»úËæ»úÉú³ÉÒ»¸ö¡£ ÔÚ²»°²È«µÄÁ¬½ÓÉÏ (µ±È»ÊÇÁ¬µ½ÄúÏ£Íû³õʼ»¯µÄ»úÆ÷ÉÏ)£¬Ê¹Óà opiepasswd ÃüÁ

% opiepasswd

Updating unfurl:
You need the response from an OTP generator.
Old secret pass phrase:
        otp-md5 498 to4268 ext
        Response: GAME GAG WELT OUT DOWN CHAT
New secret pass phrase:
        otp-md5 499 to4269
        Response: LINE PAP MILK NELL BUOY TROY

ID mark OTP key is 499 gr4269
LINE PAP MILK NELL BUOY TROY

¡¡¡¡ÎªÁ˽ÓÊÜĬÈϵÄÖÖ×Ó£¬ °´Ï Return £¨»Ø³µ£©¡£ ÔÚÊäÈë·ÃÎÊ¿ÚÁî֮ǰ£¬ µ½Ò»¸öÓа²È«Á¬½ÓµÄ»úÆ÷ÉÏ£¬ ²¢¸øËüͬÑùµÄ²ÎÊý£º

% opiekey 498 to4268
Using the MD5 algorithm to compute response.
Reminder: Don't use opiekey from telnet or dial-in sessions.
Enter secret pass phrase:
GAME GAG WELT OUT DOWN CHAT

¡¡¡¡ÏÖÔڻص½²»°²È«µÄÁ¬½Ó£¬ ²¢½«Éú³ÉµÄÒ»´ÎÐÔ¿ÚÁîÕ³Ìùµ½ÏàÓ¦µÄÓ¦ÓóÌÐòÖС£

14.5.3 Éú³ÉÒ»¸öÒ»´ÎÐÔÃÜÂë

¡¡¡¡Ò»µ©³õʼ»¯¹ý OPIE£¬ µ±ÄúµÇ¼ʱ½«¿´µ½ÀàËÆÕâÑùµÄÌáʾ£º

% telnet example.com
Trying 10.0.0.1...
Connected to example.com
Escape character is '^]'.

FreeBSD/i386 (example.com) (ttypa)

login: <username>
otp-md5 498 gr4269 ext
Password: 

¡¡¡¡ÁíÍ⣬ OPIE ÌáʾÓÐÒ»¸öºÜÓÐÓõÄÌØÐÔ (ÕâÀïûÓбíÏÖ³öÀ´)£º Èç¹ûÄúÔÚ¿ÚÁîÌáʾ´¦°´Ï Return (»Ø³µ) ϵͳ½«»ØÏÔ¸Õ¼üÈëµÄ¿ÚÁ Äú¿ÉÒÔ½å´Ë¿´µ½×Ô¼ºËù¼üÈëµÄÄÚÈÝ¡£ Èç¹ûÊÔͼÊÖ¹¤¼üÈëÒ»¸öÒ»´ÎÐÔÃÜÂ룬 Õâ»á·Ç³£ÓÐÓá£

¡¡¡¡´ËʱÄúÐèÒªÉú³ÉÒ»¸öÒ»´ÎÐÔÃÜÂëÀ´»Ø´ðÕâÒ»Ìáʾ¡£ ÕâÏ×÷±ØÐëÔÚÒ»¸ö¿ÉÐŵÄϵͳÉÏÖ´ÐÐ opiekey À´Íê³É¡£ (Ò²¿ÉÒÔÕÒµ½ DOS¡¢ Windows® ÒÔ¼° Mac OS® µÈ²Ù×÷ϵͳÉÏÔËÐеİ汾)¡£ Õâ¸ö³ÌÐòÐèÒª½«µü´úÂÖÊýºÍÖÖ×ÓÌṩ¸øËü¡£ Äú¿ÉÒԴӵǼÌáʾÄÇÀï¸´ÖÆºÍÕ³ÌùËüÃÇ¡£

¡¡¡¡ÔÚ¿ÉÐŵÄϵͳÉÏ£º

% opiekey 498 to4268
Using the MD5 algorithm to compute response.
Reminder: Don't use opiekey from telnet or dial-in sessions.
Enter secret pass phrase:
GAME GAG WELT OUT DOWN CHAT

¡¡¡¡ÏÖÔھͿÉÒÔÓøոջñµÃµÄÒ»´ÎÐÔ¿ÚÁîµÇ¼ÁË¡£

14.5.4 ²úÉú¶à¸öÒ»´ÎÐÔ¿ÚÁî

¡¡¡¡ÓÐʱ£¬»áÐèÒªµ½²»ÄÜ·ÃÎÊ¿ÉÐŵĻúÆ÷»ò°²È«Á¬½ÓµÄµØ·½¡£ ÕâÖÖÇéÐÎÏ£¬ ¿ÉÒÔʹÓà opiekey ÃüÁîÀ´Ò»´ÎÉú³ÉÐí¶àÒ»´ÎÐÔ¿ÚÁî¡£ ÀýÈ磺

% opiekey -n 5 30 zz99999
Using the MD5 algorithm to compute response.
Reminder: Don't use opiekey from telnet or dial-in sessions.
Enter secret pass phrase: <secret password>
26: JOAN BORE FOSS DES NAY QUIT
27: LATE BIAS SLAY FOLK MUCH TRIG
28: SALT TIN ANTI LOON NEAL USE
29: RIO ODIN GO BYE FURY TIC
30: GREW JIVE SAN GIRD BOIL PHI

¡¡¡¡-n 5 °´Ë³ÐòÇëÇó 5 ¸ö¿ÚÁ 30 ÔòÖ¸¶¨ÁË×îºóÒ»¸öµü´úÂÖÊýÓ¦¸ÃÊǶàÉÙ¡£ ×¢ÒâÕâЩ¿ÚÁ°´ÓëʹÓÃ˳ÐòÏà·´µÄ˳ÐòÀ´ÏÔʾ¡£ Èç¹ûÄú±È½Ïƫִ£¬ ¿ÉÒÔÊÖ¹¤Ð´ÏÂÕâЩ½á¹û£» Ò»°ãÀ´Ëµ°ÑËüÕ³Ìùµ½ lpr ¾Í¿ÉÒÔÁË¡£ ×¢Ò⣬ÿһÐж¼ÏÔʾµü´úÂÖÊý¼°Æä¶ÔÓ¦µÄÒ»´ÎÐÔµÄÃÜÂ룻 һЩÈ˽¨ÒéÓÃÍêÒ»¸ö¾Í»®µôÒ»¸ö¡£

14.5.5 ÏÞÖÆÊ¹Óà UNIX® ¿ÚÁî

¡¡¡¡OPIE ¿ÉÒÔ¶Ô UNIX ¿ÚÁîµÄʹÓýøÐлùÓÚ IP µÄµÇ¼ÏÞÖÆ¡£ ¶ÔÓ¦µÄÎļþÊÇ /etc/opieaccess£¬ Õâ¸öÎļþĬÈÏÇé¿öϾÍÊÇ´æÔڵġ£ Çë²ÎÔÄ opieaccess(5) ÒÔÁË½â¹ØÓÚÕâ¸öÎļþ½øÒ»²½µÄÇé¿ö£¬ ÒÔ¼°°²È«·½ÃæÐèÒª½øÐеÄһЩ¿¼ÂÇ¡£

¡¡¡¡ÏÂÃæÊÇÒ»¸öʾ·¶µÄ opieaccess Îļþ£º

permit 192.168.0.0 255.255.0.0

¡¡¡¡ÕâÐÐÔÊÐíÖ¸¶¨ IP µØÖ·µÄÓû§ (ÔÙ´ÎÇ¿µ÷ÕâÖÖµØÖ·ÈÝÒ×±»Î±Ôì) ÔÚÈκÎʱºòʹÓà UNIX ¿ÚÁîµÇ¼¡£

¡¡¡¡Èç¹û opieaccess ÖÐûÓÐÆ¥ÅäµÄ¹æÔò£¬ Ôò½«Ä¬ÈϾܾøÈÎºÎ·Ç OPIE µÇ¼¡£

±¸×¢

[1]

ÔÚ FreeBSD Öбê×¼µÄµÇ¼¿ÚÁî×²»Äܳ¬¹ý 128 ¸ö×Ö·û¡£

±¾ÎĵµºÍÆäËüÎĵµ¿É´ÓÕâÀïÏÂÔØ£ºftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

Èç¹û¶ÔÓÚFreeBSDÓÐÎÊÌ⣬ÇëÏÈÔĶÁÎĵµ£¬Èç²»Äܽâ¾öÔÙÁªÏµ<questions@FreeBSD.org>.
¹ØÓÚ±¾ÎĵµµÄÎÊÌâÇë·¢ÐÅÁªÏµ <doc@FreeBSD.org>.