Google AuthenticatorとはよくVPNつなぐときとかに使うRSAトークンをiPhoneやAndroid, BlackBerryで実装してしまおうというプロジェクト。
[Untitled by UUMickey, on Flickr under licensed Creative Commons Attribution, Noncommercial, Share Alike]
↑こんなやつ。
もともとは、Googleの2段階認証の為に実装されたものなのだけど、Unixでユーザ認証に使うPamモジュールも公開されているのでコンパイルすれば使える。そこで、Debian Squeezeにインストールしました。
ちなみに元々のGoogleで2段階認証を使ってみたのですが、2段階認証に対応しているサービス・クライアントが少なくApplication Passwordを乱発することになり結果的に非常に使い勝手が悪くなってしまったので、結局パスワード認証に戻しました。
だいたいの手順は、
PamModuleInstructions – google-authenticator
http://code.google.com/p/google-authenticator/wiki/PamModuleInstructions
こちらに書いてありますが、自分でもセットアップした方法忘れそうなのでメモ。
Google Authenticatorを取得する
ソースから取得するしかないみたいなので、
http://code.google.com/p/google-authenticator/source/checkout
ここからソースを取得します。
$ hg clone https://google-authenticator.googlecode.com/hg/ google-authenticator
ソースを取得したら、makeします。libpamなどのパッケージが必要な場合があるのでそうしたらaptでインストールします。
$ cd google-authenticator/libpam/ ~/src/google-authenticator/libpam$ make
正しく make されていたら make install します。
PAMの設定をする
Debian SqueezeはPAMは pam-auth-update というコマンドを使ってPAMをアップデートするので、pam-configs 用のファイルを準備します。
“O Nuno”: Use Google Authenticator to login to a Linux PC
http://nunoassimassim.blogspot.com/2011/01/use-google-authenticator-to-login-to.html
ここから、google-enough と google-all を取得して /usr/share/pam-configs/ に置きます。
おいたら pam-auth-update を実行して google-all か google-enough にチェックを入れます。(enoughはpam的にはsufficientなので、あんまり意味ないので個人的にはallにしています。)
注意: google-all を選択して、ここでログアウトするとログインできなくなります。(SSHでPubkey認証とかなら平気ですがパスワード認証とかだと死にます)
SSHのチャレンジレスポンス認証をオンにする
これをオンにしないとSSHでは使えません。 /etc/ssh/sshd_config に
ChallengeResponseAuthentication yes
を記述します
Google Authenticatorをセットアップする
ドングルとなるデバイスにGoogle Authenticatorをインストールします。
- iOS
http://itunes.apple.com/jp/app/google-authenticator/id388497605?mt=8 - BlackBerry
http://m.google.com/authenticator - Android
マーケットで探してください:)
ここまで終えたら、Google Authenticatorを使用したいアカウントで
$ google-authenticator
と実行します。実行すると、
https://www.google.com/chart?chs=200x200&chld=M|0&cht=qr&chl=otpauth://totp/administrator@aquila%3Fsecret%3DKHTY47WLAJDGMUXT Your new secret key is: KHTY47WLAJDGMUXT Your verification code is 472653 Your emergency scratch codes are: 18356824 29003846 55379944 61293021 32637075 Do you want me to update your "~/.google_authenticator" file (y/n)
こんな感じで出てきますので、URLをブラウザに貼り付けるなりsecret keyを端末に入れるなりします。
入力が完了したら、こんな画面になります。
ログインを試してみる
鍵なしのクライアントからログインを試みる(もしくはsudoとかでもいいです)と、
hiro@aquila:~$ sudo su -l root Verification code: [sudo] password for hiro:
こんな感じで2段階認証を求められます。
ちゃんちゃん。NFSでホームディレクトリを共有してたりすると1回設定すれば他のマシンでも同じトークンを使用できるので便利です。
This work is licensed under a Creative Commons Attribution-ShareAlike 4.0 International License.