2003年 11月 29日(土)

SSLトンネル掘りました

※なんのこっちゃわからん人は知らんふりして下さい(^^;
あちこちブラブラとブラウジングしていたら、興味あるページを見つけました。

Simple Repeater `stone'
http://www.gcd.org/sengoku/stone/Welcome.ja.html

読んだ瞬間、「お、昔作ろうとして途中で放り出したままになってる俺の理想がここにあるぅぅぅぅ!」と叫んでしまった
10年前、大学生の頃、当時配属されていた研究室の助教授が「腕試しがてらに作ってみろや」と出した課題が
低機能パケット中継デーモンでした。作ってから色々と遊べることが分かって、
卒業後もメンテをしていたが、それよりも高機能なのがstone。
このstoneでポートフォワードや、暗号化、複合化が出来るようになる。
時間が無く、暗号化対応改造を投げ出していたけども、このようなプロダクトがあるのなら使わせていただきます。
個人的になにがやりたいか・・http/httpsのプロクシ経由でしか外とつながっていない世界から、自宅鯖の監視をしたい。
このstoneでssh(ポート22)をhttps(ポート443)に変換し、HTTPSプロクシを通してhttpセッションを張り、
自宅鯖のポート443に接続し、自宅鯖のstoneで、sshに変換しsshdに接続することを目標とした。

stoneのコンパイルの方法は簡単。

%make freebsd-ssl
これだけ。 (あらかじめOpenSSLのインストールが必要です)

SSHで暗号化されているので、内容は漏れる可能性はほとんどありませんが、proxyでSSHプロトコルが流れていると、管理者に気づかれてしまうかもしれない。
そのため、SSLにて暗号化し、他のHTTPSセッションと見分けをつかないようにします。
stone でとりあえずsslを使えるようにする(本来は認証をするとか、いろいろなフェーズを無視して、とりあえず暗号だけ)


1. 乱数ファイルを作成
# /usr/local/openssl/bin/openssl md5 * > rand.dat
2. プライベート鍵の作成
# /usr/local/openssl/bin/openssl genrsa -rand rand.dat > key.pem
3. 自分で署名したダミーの証明書の生成
# /usr/local/openssl/bin/openssl req -new -x509 -key key.pem -out dummy.pem
4. その鍵を保存
# cat dummy.pem key.pem > /etc/ssl/certs/stone.pem

出来上がったstoneを起動する。
server(自宅鯖側)にて

#stone localhost:22 443/ssl

プロクシ内で使うクライアントはPCであるので、PC用のstone(SSL)をダウンし、DOSプロンプトで

stone localhost:10443/ssl 5003 -- proxy:8080/http 10443 "CONNECT (ip):443 HTTP/1.0"
とする。("(ip)"は自宅鯖のアドレス)

で、TTSSHなどのSSHクライアントを使いました。あら不思議。自宅鯖のコンソールが!(くれぐれも使いすぎにご用心。)
SSHを通しちゃったので、ここから応用はいくらでも利きますな・・・。
ポートフォワードで、あんなことやこんなことも・・(意味不明)


SSLについては・・

マスタリングTCP/IP SSL/TLS編
Eric Rescorla, 斎藤 孝道, 古森 貞, 鬼頭 利之

OpenSSLによるSSLサーバの構築―暗号技術とSSL
永田 弘康


Posted by thomas at 2003年11月29日 17:15 | トラックバック / アフィリエイトはエーハチネット

« オールジャパンテニス | Main | わくわくテニス »

トラックバック

このエントリーのトラックバックURL:
http://test.uwan.net/mt-tb.cgi/60