SMBはポート137-139及び445のUDP,TCPを利用して通信しています。
445は比較的新しいSMBのポートで、今までの137-139ポートの役割を全部ひきうける便利なポートらしいのですが、
でフォルトだとうまく転送出来ないので今回は445は使わないことにします。(レジストリの設定により
445を使う事ができるらしいです(未確認))
ここで、名前の解決はしないと割り切ると137-139のうち139/tcpだけを通せばいいので、それを暗号化して
転送するのがよさげです。そこで、多くの暗号化ソフトが利用出来るTCPのポートフォワードを利用します。
まとめ
- TCPのポート139を使います。
- クライアント側で発生した139/tcpへのリクエストを暗号化して送り、目的のサーバ側で複合化&139に繋ぎます。
- 上記暗号化の際、認証を行います
手法
今回は、暗号化のレイヤーにZeBeDeeを利用する場合と、OpenSSHを利用する場合の2つの方法を説明します。
ただし、OpenSSH(3.4p1)の段階では、ポートフォワードに制限があるので、その制限をくぐりぬけるため
stoneを利用します。
サーバ側の準備
今回は暗号化にZeBeDeeもしくはOpenSSHを用いて暗号化します
ZeBeDeeの場合
ZeBeDeeのインストールの仕方は解説サイトがあるので割愛します。
SMBはセキュリティ上やばいことが多いのでZeBeDeeの段階で認証をかけます。
ファイル名をserver.zbdとして。以下のようになります。
(ただし、下記は転送先に関する制限を加えていません。)
server true
detached true
udpmode false
include 'server.key'
checkidfile 'clients.id'
compression bzip2:9 # Allow maximum zlib compression
ちなみに、server.key及びclients.idは安全のためフルパスで書いた方が無難でしょう
server.keyの作成
zebedee -p >server.key
cliets.idについては、各ユーザからzebedeeの公開鍵を送ってもらい、1づつその内容をclients.idに
書きます。
接続するには、クライアント側に下記のようなファイルを作成します。
server false
detached false
serverhost サーバのIPアドレス
tunnel 139:127.0.0.1:139
listenip Loopback AdapterのIPアドレス
multiuse true
compression 0
include "c:\\〜〜〜\private.key"
上記のファイルをダブルクリックすれば接続完了になります。
private.keyは上記に示した通り作成し、登録した公開鍵に対応する秘密鍵を設定します。
その上でアドレスバーに「\\ループバックアダプタのIPアドレス」と打って下さい。