nunnun's weblog
Google Authenticatorで2段階認証を行う [Debian]
- 2011-03-01 (Tue)
- Technology
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回設定すれば他のマシンでも同じトークンを使用できるので便利です。
Twitterでユーザの距離を測るツールを作った
- 2011-02-20 (Sun)
- Technology
最近プログラミングしたい気分真っ盛りなので、Twitterでフォローしている・されているユーザの距離を測るツールを作りました。

User Distance
http://distance.hirotaka.org/
過去2ヶ月程度にやりとりしたTweetを解析して、ユーザとフォローしている・されているユーザの距離を測定します。距離なのだけど、数字が大きい方が関係性が高いです。(数学苦手でうまくモデル化できてません。Follow, Mentionとかの数を集計して、重みをつけたスコアを対数取っているだけの適当モデルです・・。どなたか数学得意な人お知恵を貸していただけると助かります)
裏でクローリングしているので、使い始めだと直近数時間のTweetしか解析できないので、精度が悪いかもしれません。クロールされるのを待ってください・・。
実は似たような事をするAPIが有料であるのだけど、クエリー制限とかあったので作ってしまえと作ってしまいました。
Twitter Strong Links - Infochimps API
http://api.infochimps.com/describe/soc/net/tw/strong_links
ちなみにInfochimpsの結果はそれなりに精度高め。だけどちょっとあれ?っていう結果もあるからまぁ同じくらいかなと個人的には勝手に納得してる。
あとデザインとか全くできない・・・。(やる気もない説)
[続・続] DoCoMo + FaceTime
- 2011-02-19 (Sat)
- Technology
Carrier Bundleの編集が大変だというコメントをいただきましたので、debパッケージおよびCydiaのレポジトリを作成いたしました。
debパッケージの挙動およびその結果生じる損害などは一切保証いたしません。あくまでも実験目的でお使いください。また下のパッケージはすべてiOS 4.2.1にのみ対応しております。その他のバージョンでは動作いたしません。
- jp.nunnun.carrier.docomo_0.1-1_darwin-arm.deb
APN: mopera.net - jp.nunnun.carrier.docomo.128k_0.1-1_darwin-arm.deb
128kアクセスポイント, APN: mpr.ex-pkt.net - jp.nunnun.carrier.bmobile.ios_0.1-1_darwin-arm.deb
日本通信プラチナサービス向け
レポジトリは http://nunnun.jp/repos/ です。
mopera.netおよび128k APNに関しては動作は一応確認しましたが、日本通信のSIMは持っていない為確認ができません。
またAPNをいじる場合、carrier.plistをいずれにしても編集する必要があります。
[続] DoCoMo + FaceTime
- 2011-02-18 (Fri)
- Technology
PwnageTool 4.2がリリースされたので、DoCoMo+FaceTimeの具体的な手順を書いてみる。
Windowsでもできると思いますが、この手順はMac OS Xで行うことを想定しています。
前回同様Jailbreakをするとサポートを受けられなくなる可能性があり、私はいかなる場合でも責任は負いかねます。[追記11.3.9]また国際SMSが送信されドコモから高額な請求がなされる危険性があり、そういった場合でも一切責任は負いかねます。
Jailbreak
方法はググってください。
必要なソフトをインストール
iOS 4以降(確か)はCarrier Bundleにはsignatureがついており、signatureが正しくない場合はCommCenterが正しく動作しません。それらを回避する為のパッチが出ており、4.2.1に対応したものが下記URLからダウンロードできます。
CommCenter Patch by wortel (4ALL4) Update (4.0 up to 4.2.1)
CommCenterのPatchはCydiaのrepositoryでもインストールできます。
cydia.iphonemod.com.brに含まれております。
またDoCoMo SIMの為に設定を変えるのでDoCoMo向けのCarrier Bundleをインストールすることにします。NTTdocomo Carrier bundleってやつです。
さらにこのNTTdocomo Carrier bundleは4.2.1で動かない為、ファイルを移動させる必要があったり後で内容を書き換えたりする必要があるので、OpenSSHもインストールします。くれぐれもrootパスワードをMobile Terminalなどで変更してから実施してください。一瞬でウィルスにやられます。
設定
インストールが終わったら、実際に使えるようにします。
まずNTTdocomo Carrier bundleを正しい位置に移動します。SSHでiPhoneに接続し、docomo_jp.bundleおよび44010をiPhoneディレクトリに移動させます。
Pegasus:~ root# cd /System/Library/Carrier\ Bundles/ Pegasus:/System/Library/Carrier Bundles root# ls -al total 8 drwxr-xr-x 4 root wheel 170 Feb 18 00:33 . drwxr-xr-x 37 root wheel 1258 Feb 17 00:13 .. lrwxr-xr-x 1 mobile staff 16 Feb 18 00:33 44010 -> docomo_jp.bundle drwxr-xr-x 4 mobile staff 340 Feb 18 00:33 docomo_jp.bundle drwxr-xr-x 176 root wheel 15470 Feb 17 01:23 iPhone Pegasus:/System/Library/Carrier Bundles root# mv 44010 iPhone/ Pegasus:/System/Library/Carrier Bundles root# mv docomo_jp.bundle iPhone/
ここで再起動してください。おそらくNTTdocomo Carrier Bundleが正しく動作してdocomoの画像ロゴになるはずです。(もしかしたらうごかないかも。動かなくても平気なはずです)
そうしたら、/System/Library/Carrier Bundles/iPhone/docomo_jp.bundle/carrier.plistをMac OS Xにコピーします。TransmitとかのSFTP対応クライアントを利用すると便利です。
コピーが完了したら、それをProperty List Editor(ダブルクリックして起動しない場合はXcodeをインストールしてください)で開いて名前をつけて保存でXML Property Listとして保存し、テキストエディタで編集します。
保存したcarrier.plistの329行目付近
<key>signature</key> <data>AAAAAAAAAAAAAAAAAAAAAAAAAAA=</data>
の<data>~</data>を以下のように書き換えます。
<data>thisisafakesignaturethisisafakesignature</data>
そして356行目付近の
</dict> </plist>
前に
<key>PhoneNumberRegistrationGatewayAddress</key> <string>+447860015000</string> <key>RegistrationOptInRequired</key> <true/>
を付け足して保存します。その後それをiPhoneの/System/Library/Carrier Bundles/iPhone/docomo_jp.bundle/carrier.plistに戻した後再起動をします。
これでDoCoMo回線でFaceTimeが利用可能となるはずです。
不明点などありましたらコメントください。
暇だったのでTwitterボットをつくってみた
- 2011-02-17 (Thu)
- Private

まじ糞なエントリーですみません。暇だった+後輩に要請されたはずなのでTwitterのボットを作ってみました。
いいこぼっと : http://iiko.hirotaka.org/
Twitterで定期的にいいこいいこしてくれるボットです。今は定期的にいいこいいこするしか機能ないですが気が向いたら機能を実装する予定。糞すぎるボットなのに10人ぐらいに使ってもらえてます。
ちゃんちゃん。
