2008年08月03日

OpenSimサーバ構築記録その7(暗号化しなくちゃ編)


● きっかけ

私のボス: ところで、OpenSimって経路暗号化してるの?
    私: 普通のセカンドライフはSSLで暗号化してますけど、OpenSimは何もしてないです~。
    私: 設定はあるみたいですけど、やり方がよくわかりません><;
私のボス: じゃあ、とりあえず、SSHでトンネル掘って、OpenSimに繋がるか試してみたら?
    私: は~い。(´・ω・`)

というわけで、マイパソコンとOpenSimサーバをSSHのポートフォーワードで接続してみました。
今後OpenSimが普及する為には、やっぱり、暗号化とかセキュリティは必要ですよね~。




● SecondLifeはちゃんと、SSL(Secure HTTP)で暗号化してる(みたい)

パケットキャプチャソフトを起動して、ビューアでセカンドライフにログインしてみました。
マイパソコン(MyPC)と、ログインサーバ(login.agni.lindenlab.com)間のパケットのやり取りです。
キャプチャソフトのフィルタで、SSLのパケットだけ取り出してます。


09行目:MyPCです。こんにちは。SSLで話してます。
11行目:サーバです。こんにちは。TLSで話してます。
12行目:サーバです。TLSで会話しましょう。
14行目:MyPCです。鍵を交換しましょう。
15行目:サーバです。暗号化の方法をきめましょう。

、みたいなやり取りをしているのが、よくわかります。^^




● OpenSimは、暗号化していない?

実は、UserServer、MessagingServerを初めて起動するときに、SSLを使うかどうかたずねてくるのですが、、、

opensim1:/usr/local/opensim/0.5.8/bin# mono OpenSim.Grid.UserServer.exe
・・・・・・
・・・・・・
USER SERVER: Use SSL? true/false [False]:


opensim1:/usr/local/opensim/0.5.8/bin# mono OpenSim.Grid.MessagingServer.exe
・・・・・・
・・・・・・
MESSAGING SERVER: Use SSL? true/false [False]:


当然、これだけで暗号化できるわけありません。。 ><;
 ・ 暗号鍵はどうする?
 ・ サーバ証明書はどうする?
 ・ 認証局はどうする?

などなど、わからんことだらけです。。。
なので、OpenSimがSSLをサポートしていないなら、OpenSSHで経路を暗号化してみよう~、というワケです。




● OpenSSH (Secure SHell) の公開鍵方式で、経路の暗号化とポートフォーワードする

これは、普通のOpenSimへの接続図です。
グリッドモードなので、OpenSimサーバ側のポート番号は8002です。
暗号化されていないので、パケットの中身は丸見え状態です。 ><


OpenSSHを使うと、接続図はこうなります。
SSHで暗号化した経路を通って、OpenSimに接続します。
SLビューアの接続先は、OpenSimサーバではなく、MyPC(自分自身)、というところがミソです。
SSHがMyPCのポート18002に届いたパケットを、暗号化した経路を使って、OpenSimサーバに届けてくれます。
MyPCのWindows側は、PuTTYというSSHクライアントソフトを使ってます。

※ MyPC側のポート番号を18002にしているのは、キャプチャソフトで見分けやすくするためです。




● OpenSSHの設定 (OpenSimサーバ側)

ubuntuのapt-getコマンドで、OpenSSHをインストールします。

root@opensim1:~# apt-get install openssh-server


OpenSSHの設定ファイル(sshd_config)を修正します。 公開鍵認証のみを有効にします。

【/etc/ssh/sshd_config】
Protocol  2  #SSH2プロトコルを使用
PermitRootLogin  no  #Rootユーザのリモートログインを禁止
RSAAuthentication  no  #RSA認証(ssh1)を無効
PubkeyAuthentication  yes  #公開鍵認証を有効(ssh2)
PermitEmptyPasswords  no  #空パスワードを許可しない
PasswordAuthentication  no  #パスワード認証を無効





● SSHクライアント (MyPC Windows側)

Windows側は、定番のPuTTYを使います。 SSHが使えるターミナルソフトです。
鍵の作成には、PuTTYに付属している、Key Generator (puttygen.exe)を使います。




● 秘密鍵と公開鍵を作る

puttygen.exeを起動して、キャンバス上でマウスをグリグリ動かすと、乱数が発生して
自動的に鍵を作ってくれます。
パスフレーズを設定しておくと、接続時に聞いてくるので、より安全です。



「Save  public key」 id_dsa.pub という名前で公開鍵として保存します。 (OpenSim側に持って行く)
「Save private key」 id_dsa.PPK という名前で秘密鍵として保存します。 (MyPC側に保存)




● 公開鍵を変換して配置する (OpenSimサーバ側の作業)

puttygenコマンドで作成した公開鍵(id_dsa.pub)は、すこし形式が違うので、ssy-keygenコマンドで
OpenSSHが扱える形式に変換します。
配置する場所は、ホームディレクトリの「.ssh」ディレクトリ配下、鍵の名前は「authorized_keys2」、と決まってます。


opensim1:~$ ssh-keygen -i -f id_dsa.pub > /home/pastel/.ssh/authorized_keys2






● SSHクライアントPuttyの設定 (MyPC Windows側の作業)

【ポートフォーワードの設定】
ローカルポート18002への接続を、OpenSimポート8002へ転送します。



【秘密鍵の指定】
puttygen.exeコマンドで作った秘密鍵id_dsa.PPKを指定します。



【プロトコルの指定】
公開鍵方式だけを使うので、SSH2を指定します。



【接続開始】
接続先のホスト名と、接続先のポート番号(SSH:22)を指定して、接続開始。



【アカウント、パスフレーズの入力】
リモートターミナルが開くので、ログインアカウントと、公開鍵のパスフレーズを入力します。
ちゃんとリモートログインできたら、SSHでの接続は成功です。
このまま、OpenSimやLinuxの設定作業もできます。





● SLビューアのオプション変更

SLビューアの接続先とポート番号を、変更します。

【変更前】
SecondLife.exe -set SystemLanguage ja -loginuri http://opensim1:8002/


【変更後】
SecondLife.exe -set SystemLanguage ja -loginuri http://MyPC:18002/





● パケットの確認

ビューアでOpenSimにログインするときのパケットです。
全てのパケットが、SSHで暗号化(Encrypt)できました。






● おしまい

こんな風に高価なVPNルータなどなくても、個人で暗号化の実験が簡単にできてしまいます。
オープンソースはありがたいですね~。

いつかIBMとかが、仮想会議室や3Dショッピングモール、みたいなソリューションを出してくるでしょうから、
その頃はもっと簡単に暗号処理できるようになってると思います。



同じカテゴリー(OpenSim)の記事
 再掲:OpenSim構築手順 (Linux版&OSGrid) (2009-04-18 19:33)
 OpenSimサーバ構築記録10/OSX版MySQLで動かす (2008-12-07 18:25)
 OpenSimサーバ構築記録9(MacOSXコンパイル編) (2008-11-30 16:10)
 OpenSimサーバ構築記録8 (手作りファイアウォール編) (2008-09-07 11:14)
 OpenSimサーバ構築記録その6(ブレンダーで土地作り編) (2008-07-19 00:07)
 OpenSimサーバ構築記録その5(外部Simサーバ接続編) (2008-07-08 19:43)

Posted by ぱすてる at 11:52│Comments(4)OpenSim
この記事へのコメント
こんばんわ

難しい事に取り組んでいますね。ホントに関心してしまいます。

クリエーター以外にもそうゆう才能があること凄いですね。
PCシステム苦手な俺は、特に関心しちゃいます
Posted by 漱石漱石 at 2008年08月04日 22:37
(^^) そーせきさん、どもども

>難しい事に取り組んでいますね。

自宅から会社のサーバに乗り込んで、ホームページのアップ・修正とか、よくやってますから
暗号化の設定とか、自然と身についてしまうんです。
小さい会社ですから、何でも自分でやるんです。。^^;

でも、こういう基盤系やモノの仕組みを覚えるのは、けっこう好きです。
建築の学校にいた時も、デザイン系の授業より、構造力学とか受講してましたから。(^^ゞ
Posted by ぱすてるぱすてる at 2008年08月05日 00:10
いつも参考にさせていただいています^^
暗号化には、 OpenVPN も使い勝手いいですよ
http://openvpn.net/
Posted by 通りすがり at 2008年09月09日 22:34
(^^) こんばんは~

>暗号化には、 OpenVPN も使い勝手いいですよ
ああ、ついに突っ込まれてしまった。。
普通はやっぱりOpenVPNですよね~。
でも、ただいま勉強中なんです。

この次は、「通りすがり」ではなく、名前でコメントしてくださいね~ ^^b
Posted by ぱすてるぱすてる at 2008年09月10日 19:18
上の画像に書かれている文字を入力して下さい
 
<ご注意>
書き込まれた内容は公開され、ブログの持ち主だけが削除できます。