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]:
・・・・・・
・・・・・・
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側)


● 秘密鍵と公開鍵を作る
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構築手順 (Linux版&OSGrid)
OpenSimサーバ構築記録10/OSX版MySQLで動かす
OpenSimサーバ構築記録9(MacOSXコンパイル編)
OpenSimサーバ構築記録8 (手作りファイアウォール編)
OpenSimサーバ構築記録その6(ブレンダーで土地作り編)
OpenSimサーバ構築記録その5(外部Simサーバ接続編)
OpenSimサーバ構築記録10/OSX版MySQLで動かす
OpenSimサーバ構築記録9(MacOSXコンパイル編)
OpenSimサーバ構築記録8 (手作りファイアウォール編)
OpenSimサーバ構築記録その6(ブレンダーで土地作り編)
OpenSimサーバ構築記録その5(外部Simサーバ接続編)
Posted by ぱすてる at 11:52│Comments(4)
│OpenSim
この記事へのコメント
こんばんわ
難しい事に取り組んでいますね。ホントに関心してしまいます。
クリエーター以外にもそうゆう才能があること凄いですね。
PCシステム苦手な俺は、特に関心しちゃいます
難しい事に取り組んでいますね。ホントに関心してしまいます。
クリエーター以外にもそうゆう才能があること凄いですね。
PCシステム苦手な俺は、特に関心しちゃいます
Posted by 漱石
at 2008年08月04日 22:37

(^^) そーせきさん、どもども
>難しい事に取り組んでいますね。
自宅から会社のサーバに乗り込んで、ホームページのアップ・修正とか、よくやってますから
暗号化の設定とか、自然と身についてしまうんです。
小さい会社ですから、何でも自分でやるんです。。^^;
でも、こういう基盤系やモノの仕組みを覚えるのは、けっこう好きです。
建築の学校にいた時も、デザイン系の授業より、構造力学とか受講してましたから。(^^ゞ
>難しい事に取り組んでいますね。
自宅から会社のサーバに乗り込んで、ホームページのアップ・修正とか、よくやってますから
暗号化の設定とか、自然と身についてしまうんです。
小さい会社ですから、何でも自分でやるんです。。^^;
でも、こういう基盤系やモノの仕組みを覚えるのは、けっこう好きです。
建築の学校にいた時も、デザイン系の授業より、構造力学とか受講してましたから。(^^ゞ
Posted by ぱすてる
at 2008年08月05日 00:10

いつも参考にさせていただいています^^
暗号化には、 OpenVPN も使い勝手いいですよ
http://openvpn.net/
暗号化には、 OpenVPN も使い勝手いいですよ
http://openvpn.net/
Posted by 通りすがり at 2008年09月09日 22:34
(^^) こんばんは~
>暗号化には、 OpenVPN も使い勝手いいですよ
ああ、ついに突っ込まれてしまった。。
普通はやっぱりOpenVPNですよね~。
でも、ただいま勉強中なんです。
この次は、「通りすがり」ではなく、名前でコメントしてくださいね~ ^^b
>暗号化には、 OpenVPN も使い勝手いいですよ
ああ、ついに突っ込まれてしまった。。
普通はやっぱりOpenVPNですよね~。
でも、ただいま勉強中なんです。
この次は、「通りすがり」ではなく、名前でコメントしてくださいね~ ^^b
Posted by ぱすてる
at 2008年09月10日 19:18
