Mobile-OTP を使ってワンタイムパスワード

OTP(ワンタイムパスワード)は一回しか使えないために,万一漏れたとしてもそのパスワードを使うことができずセキュリティ的に良いですよね.ということで,Mobile OTP (http://motp.sourceforge.net/) をFreeBSD にインストールして OTP で ssh パスワード認証してみた.

MobileOTPの強みは,OTP生成を iPhone や Andoroid 上のアプリケーションで実施できる点.(もちろん,事前にシークレットキー/PIN コードの設定や,時刻同期してないとダメ)

以下に FreeBSD 上の PAM を使って sshd の認証に,この Mobile-OTP を使うまでのログを残す.


iPhone に MobileOTP のアプリをインストールする

iPhoneユーザなので

  • mOTP

をインストールしてみた.他にも

などがある.


pam-script のインストールとpamの設定

PAM-script(sorceforge) からソースコードをダウンロードする
http://sourceforge.net/projects/pam-script/

伸長して README を読むと /etc/pam.d/sshd

auth   sufficient  /usr/local/lib/pam_script.so onerr=fail dir=/usr/local/otp

と書けば良いことがわかる.
また,実行されるスクリプト名は pam_script_auth する必要があることもわかる(これは次項で使う)


Mobile OTP のインストールと設定

Mobile OTP の公式ページからソースコードをダウンロードする
http://motp.sourceforge.net/PAM-script.zip

伸長して README を読むと以下の手順であることがわかる

  1. /usr/local/otp に一式を置く
  2. otp-secret を書く

pam-scrip より,実行スクリプトは名前を pam_script_auth にしないといけないので,そうする.

otp-secret には iPhone 等にインストールしてある MobileOTP アプリで生成したシークレットキーを記入し,PINコードは適切に4桁の数字を入れる(MobileOTPアプリでOTPを生成するときにPINコードが必要なので,コレばかりは覚えておく必要がある)


動作確認

iPhoneのMobileOTPアプリにPINコードを入れてOTPを生成させると,6桁のOTPが表示されるのでそれをいれる.ログイン成功!!!

この時のsshdのログは以下のとおり."Accepted keyboard-interactive/pam" になってる!

Sep 23 16:30:35 pansy sshd[32618]: Accepted keyboard-interactive/pam for yasuhiko from 10.3.3.130 port 1800 ssh2