SSHを使った不細工なトンネリングシステム 2008年3月21日(金) 2008年3月19日(水) 2008年2月28日(木) 2010年5月7日(金) 2011年5月6日(金) 0. 個人メモ ○2011年5月6日(金) BCを、8.150→11.207に変更時、 TTSSHの TERATERM.INI KeyFile.ini id_rsa のコピーするだけで、後は何もしなくて起動成功 ちなみに、 個人クライアント→23.140 から 23.165に変更(2012年3月21日(水)) (個人クライアントのアドレス変更は、全体に影響を与えない) TCPTunnnel兼OpenSSHサーバ→23.137 BC→11.207 である。 1. 目的と狙い (1)大学内でしか使えない大学内クライアントと大学内サーバからなる システムにおいて、当該大学内のクライアントの操作の一部を、大 学外の個人クライアントで行えるようにする。 (2)具体的には、電子メールとファイルとWebを、大学外の個人クライア ントでも使えるようにする。 2.システムの条件 本システムには以下の制約が課せられている。 (1)Fire wallは、SSHを除いて一切通信できない。 但し、大学外から、手元のパソコンでリモートパソコンを操作する ソフトを使って、大学内クライアントの操作を行うこと(だけ)はで きる。 (2)大学内に新規のSSHサーバ等を立てることはできない。 (3)大学内にSSHサーバはない。また、大学外のSSHクライアント等から 大学内へのサーバへの直接アクセスは完全に封鎖されている。 3. システム構成 Fire wall : [大学外] : [大学内] 自宅とか : ゼミのネットワークとか +------+ +---------------+ : +-------+ +-------+ | 個人 | | TCP Open | : |大学内 | |大学内 | |クライ|<-->|Tunnel 兼 SSH |<-:->|クライ |<-->|サーバ | |アント| |サーバ サーバ| : |アント | | | +------+ +---------------+ : +-------+ +-------+ : (1)下記のシステム構成要素は、全てWindowsボックスとする(その辺に 転がっているPCを再利用する為)。 (2)上記、「TCPTunnelサーバ 兼 OpenSSHサーバ」は、OpenSSHサーバを 「個人クライアント」にインストールできる場合には不要である。 また、この場合は、TCPTunnelサーバを「個人クライアント」にイン ストール必要もない。 (3)今回、「TCPTunnelサーバ 兼 OpenSSHサーバ」を準備した理由は、 "OpenSSH for Windows"を「個人クライアント」にインストールする とCPU利用率が100%まで跳ね上がり、ローカル環境での作業効率が著 しく悪くなったからである。 3. 各ネットワーク構成要素の構築または設定等 3.1 「TCPTunnelサーバ 兼 OpenSSHサーバ」の構築 (Step.1) TCPTunnel for Win32の、tcptunnel4nts.exe(NT/2000サービス版)を取 得(http://www.kobore.net/soft/tcptunnel/index-jp.html) (Step.2) http://www.kobore.net/soft/tcptunnel/tcptunnel2-jp.txtの説明を読 んで、サービスをインストールする。 tcptunnel.cfgの内容の一例を以下に示す。 以下この設定をベースに説明を行う。 tcp 25 127.0.0.1 1111 tcp 110 127.0.0.1 2222 tcp 20 127.0.0.1 3333 tcp 21 127.0.0.1 4444 tcp 80 127.0.0.1 5555 作成したtcptunnel.cfgを、c:\WINNT\system32に放り込んで、Windows のサービスから、TCPTunnelを起動する。 (Step.3) OpenSSH for windowsをダウンロードする (http://micro-vnc.jp/pc/documents/sshwindows/の「環境設定」の前 まで実施) そこから先は、 http://mind-craft.cocolog-nifty.com/diary/2007/12/opensshrdp_2483.htmlの 「OpenSSHの導入方法」をそのまま使用させて頂く。 (必要な事項のみ、以下に引用させて頂きます) ------------- 引用ここから ------------- 0. > cd c:\Program Files\OpenSSH\bin 1.mkgroupコマンドで許可グループファイルをつくる。 (Windowsのローカルのみを許可) > mkgroup -l >> ..\etc\group 2.ユーザーの権限ファイルを作る。 (Windowsのローカルのみを許可。つまりSSHではこのWindowsのログインユーザー名とパスワードを使うことを指定している。) > mkpasswd -l -u username >> ..\etc\passwd *ココでusernameはサーバーマシンへログオンするためのユーザー名 ここまでは、ネット上によく出てる。 2. Configを変更。最低限以下をやる。 OpenSSH\etc\sshd_configを以下のようにかえる。 Protocol 2 # StrictModesとは、CygWinをCYGWIN=ntsecで動かしているモード StrictModes no RSAAuthentication yes PubkeyAuthentication yes AuthorizedKeysFile /etc/authorized_keys 最低限はこれだけ。保管する。 3.サーバー側で公開鍵と秘密鍵をRSAで作る。 (クライアント側で作るとまったく違う作業となる) > cd ..\bin で、ssh-keygenプログラムがあることを確認 > ssh-keygen -t rsa と入力し、キーファイルをdocument and settingのどこか、などと聞かれる。 そこで、 /etc/id_rsa とこのとおり入力。 パスフレーズを二回(入力と確認)聞かれるので忘れないパスフレーズをいれる。 etc内に、ふたつのファイルができているハズ。id_rsaとid_rsa.pub > copy id_rsa.pub authorized_keys コマンドで登録リスト作成。(もし、公開鍵がいくつかある時はこのファイルにマージしていくこと) id_rsaはクライアントで使う秘密鍵なので大事にメディアの保存する。 4.これでサーバーは起動できる。 > net start opensshd 5. テスト > cd ..\bin で ssh username@localhost でテスト。 接続できれば、サーバは動いている。 リモートからアクセスできない場合は、 コントロールパネル→Windowファイアウォール→例外→ポートの追加 名前:sshed ポート番号22 TCPにチェック で多分動く。 ------------- 引用ここまで ------------- 3.2 「大学内クライアント」へのツールのインストールと起動 (Step.1)TeraTerm Proをダウンロード、インストール 例えば、 http://www.forest.impress.co.jp/lib/inet/servernt/netuty/utf8teraterm.html からダウンロード (Step.2) 前述した"id_isa"を「大学内クライアント」のPCに格納(どこ でも良い) (Step.3) TeraTerm Proを起動 [設定]→[SSHポート転送]から、以下の4 つを設定 リモートの1111からローカル側ホスト"SMTPサーバのIPアドレス"のポート25 リモートの2222からローカル側ホスト"POP3サーバのIPアドレス"のポート110 リモートの3333からローカル側ホスト"127.0.0.1"のポート20 リモートの4444からローカル側ホスト"127.0.0.1"のポート21 # リモートの5555からローカル側ホスト"127.0.0.1"のポート5555 リモートの5555からローカル側ホスト"WebプロキシのIPアドレスの"のポート80 なお、上記の「SMTPサーバのIPアドレス」「POP3サーバのIPアドレス」 とは、大学内のサーバのことである。 (Step.4)[設定]→[設定の保存] (Step.5)TeraTerm Proを起動して、SSHサーバのIPアドレスを入力→ユー ザ名、パスフレーズを入力した後、「RAS/DSA鍵を使う」をマークして、 "id_isa"を指定して、O.K.を押す。 これで、ローカルのSSHサーバとの接続は成功する(はず)。 (Step.6)FTPサーバをダウンロード、インストール 例えば、Tiny FTP demon 等 http://hp.vector.co.jp/authors/VA002682/tftpd_frame.htm をダウンロードして、起動しておく。 # (以下、不要→Webプロキシまでトンネリングすれば足りるから) # (Step.7)Webサーバをフォワーディングする為のTCPトンネル構築 # http://www.kobore.net/soft/tcptunnel/tcptunnel2-jp.txtの説明を読 # んで、サービスをインストールする。 # # tcptunnel.cfgの内容の例を以下に示す。 # #tcp 5555 www-proxy.ac.jp 8080 # #www-proxy.ac.jpのところには、ゼミのネットワークのWebプロキシのIP #アドレスを入れる。 3.3 「個人クライアント」の設定 (1)メールクライアントの設定 SMTPサーバ、POPサーバのIPアドレスを、SSHサーバのIPアドレスとする。 (2)FTPクライアントの設定 (ここでは、FFFTPの設定例のみを説明) [ホスト設定]を選択。名前は適当に(例えば、FTPoverSSHなど) - 「ホスト名(アドレス)」には、SSHサーバのIPアドレスを入力 - ユーザ名、パスワードは、上記のFTPサーバで設定したものを入力 - [拡張タブ]を選択→FireWallを使う、にチェック # (以下、不要→Webプロキシまでトンネリングすれば足りるから) # (3)Webブラウザの設定 # (ここでは、IEの設定例のみを説明) # [ツール]→[インターネットオプション]→[接続]→[LANの設定] # でプロキシサーバに、SSHサーバのIPアドレスを入力 # ポートはここでは80に設定 4. 注意 セキュリティの観点からIPアドレスの直書きを避けた為、随分読みに くいものとなったと思うが、そもそもの目的が「筆者のメモ」であるの で、あしからず。 以上