FreeBSDのssh認証をワンタイムパスワードにして、Windows Mobileなマシンと組み合わせる

パスワード認証は、肩越しにみられるとか、実はキーロガーがインストールされている!*1という状況に対する対策ができないし、公開鍵認証だとそのキーがあるマシンでしか入れない*2。というわけで、その中間にあたるワンタイムパスワードによる認証を使うことにした。

ワンタイムパスワードでなら、そのログインするのに使うパスワードをみられても平気だし*3、重要なOTP生成用のパスワードさえ、スマートフォンに入れずにすむ。

FreeBSDでサーバー側で、OPIEを設定するには、One-time Passwords - FreeBSD Handbookを参照すること。一応日本語版もあるのだが、この内容は opie ではなくて、S/keyとちょいコマンド名が違うので、読み替える必要がある。

たいがいの場合では、ハンドブックいうところのSecure Connection Initializationをできない。その場合、以下のように使う


% opiepasswd

Updating unfurl:
You need the response from an OTP generator.
Old secret pass phrase:
otp-md5 498 to4268 ext
Response: (後述のskeyで計算したレスポンス文字列を入れる)
New secret pass phrase:
otp-md5 499 to4269
Response: (後述のskeyで計算したレスポンス文字列を入れる)

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

Windows Mobile側で使うOPTの生成機は、Download Skey 1.0 for Windows Mobile PocketPCを使う。ちょい古いが入れれば動く。いくつかのコツがあって、以下の通り。

  • FreeBSD側で表示される「498 gr4269 ext」のようなチャレンジ文字列のうち、skeyのChallengeには「498 gr4269」までを入れる
  • パスワードには、事前に共有したパスワードを入れる
  • 「MD4」と「MD5」の二つのボタンがあるが、使うのはMD5側のボタン

実際のログインのときには、skeyで計算したレスポンスをキーボードから入力してログインする


> ssh foobar@example.net
otp-md5 394 vm8193 ext
Password: (なにも入力しないでEnter)
otp-md5 394 vm8193 ext
Password [echo on]: NANIKA DOKOKA DETAREME FILBER SMILE FLASE
何か間違いがないなら、ログインできるはず。

*1:そもそもそういう状況になりうるその状態に対してまっさに対策するべきだと思うけど

*2:もっともそうあるべきではある

*3:一回しか使えないのだから