Home

nunnun's weblog

Google Authenticatorで2段階認証を行う [Debian]

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をインストールします。

ここまで終えたら、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でユーザの距離を測るツールを作った

最近プログラミングしたい気分真っ盛りなので、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

Carrier Bundleの編集が大変だというコメントをいただきましたので、debパッケージおよびCydiaのレポジトリを作成いたしました。

debパッケージの挙動およびその結果生じる損害などは一切保証いたしません。あくまでも実験目的でお使いください。また下のパッケージはすべてiOS 4.2.1にのみ対応しております。その他のバージョンでは動作いたしません。

レポジトリは http://nunnun.jp/repos/ です。

mopera.netおよび128k APNに関しては動作は一応確認しましたが、日本通信のSIMは持っていない為確認ができません。
またAPNをいじる場合、carrier.plistをいずれにしても編集する必要があります。 

[続] DoCoMo + FaceTime

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ボットをつくってみた

まじ糞なエントリーですみません。暇だった+後輩に要請されたはずなのでTwitterのボットを作ってみました。

いいこぼっと : http://iiko.hirotaka.org/

Twitterで定期的にいいこいいこしてくれるボットです。今は定期的にいいこいいこするしか機能ないですが気が向いたら機能を実装する予定。糞すぎるボットなのに10人ぐらいに使ってもらえてます。

ちゃんちゃん。

«Prev || 1 | 2 | 3 | 4 |...| 24 | 25 | 26 || Next»

Home

Search
Feeds
Google Latitude
Tag Cloud
IPv6 Meter

Page Top