リモート・テスクトップ接続の活用 安く安全に自宅のⅣ加面Ⅳ 5 マシンにアクセスする ・吉田昌英 図 1 リモートキ当売の前提 ADSL や FTTH 、 CATV などによるインターネット 常日妾続カ及して、自宅の Windows PC に外部からア クセスする方法を紹介している雑磊己事や Web ページを よくみかけるようになった。この記事では、最小限の機材・ 出費で安全に自宅の PC にリモート・デスクトッフ続を おこなったり、自宅の PC のファイルに SMB などでアク セスする方法を考えてみよう。 UNIX MAGAZINE 2004.8 サーバーを動かしていないので未確認だが ) 。 クセスにも適用できるはすである ( 私は、自宅で Samba が、これは、ほばそのまま自宅の Samba サーバーへのア は自宅の Windows PC のファイルへのアクセス方法だ ・ファイルアクセスのところで述べているのは、基本的に 作は変わらない。 文で説明しているアクセス元 Windows PC の設疋や操 セスしている人も多いだろう。そのような状況でも、本 ていて、 Windows PC から SSH でその UNIX にアク かには自宅で UNIX (*BSD や Linux など ) を動かし 歩いている人は少なからずいると思う。そして、そのな 読者のなかにも、 Windows が入ったノート PC を持ち 由から本誌の読者にとっても十分に価値があると考えた。 ぜ Windows? 」と言われるかもしれないが、次のような理 d 。 ws マシンを前提としている。「 UNIX の雑誌なのに、な 本文中の説明では、アクセス先もアクセス元も Win- イルアクセスの方法も紹介する。 もいえるもので、必要な設備や費用を抑えるとともに、ファ 接続する方法が紹介されていた。この記事はその発展形と マシンに外部から SSH を使ってリモート・デスクトップ に、インターネットに常時接続している自宅の Windows 本誌 2003 年 8 ~ 9 月号の「ワークステーションのおと」 自宅 ( 動的割当て ) : グローバル旧アドレス ( アクセス先 ) Home PC インターネット NAPT や SOCKS ( 外出先 / 職場など ) 自宅外 Wi ndows ( アクセス元 ) Remote PC 経由でもよい Windows XP Professional ・ SSH ソフトウェアは、 Cygwin の OpenSSH のみを使 っている。生粋の Windows ユーザーにはあまり使い やすくないだろうが、 UNIX ユーザーからみれば、コマ ンドをシェル・スクリプトで利用できるなど、 Wind 。 ws ネイテイプの SSH ソフトよりも便利であろう。 廴提条件 以下では、図 1 に示したような環境を肩豺是として説明す る。要するに、自宅には Windows XP ProfessionaI と 普通のルータだけがあればよく、 SSH サーバーのための Linux マシンや VPN ルータは不要である。また、アクセ ス元ではごく普通のインターネット・アクセス環境があれ ばよい。もうすこし詳しく説明すると、次のようになる。 自宅に Windows XP Professional ( 以下、 XP Pro) 157
Ⅳ加面Ⅳ s マシンへのアクセス マシンがある がグローバル IP アドレスをもつ ) でもいいし、 NAPT ・ RemotePC のインターネット接続は、直接 ()C 自身 もしれない。 いが、そうでないと Cygwin の導入や設疋で古労するか もに Windows 2000 以上で NTFS を使っていればよ Home (C) 、アクセス元 PC ( 以下、 Remote (C) と なんとかなると思う。ただし、アクセス先 PC ( 以下、 のだが、 Windows 2000 や Windows 98/Me でも 私自身は XP Pro しカ駛っていないので検証できない Windows マシンとする ・自宅外から自宅にアクセスする PC ( アクセス元 ) も ターネットに常時接続するのは避けるべきであろう。 てはとくに述べない。そもそも、 Windows を直接イン ルータ経由でなければより簡単なので、その場合につい lation) 機能を通じてインターネットにアクセスする。 れ、ルータの NAPT (Network Address port Trans- 自宅の PC にはプライベート IP アドレスが割り当てら 経由してインターネットにアクセスする のはプロードバンド・ルータで、自宅の PC はルータを ・自宅でインターネット・サービスに直接つながっている 能である。 るが、その場合は外部から自宅への接続は原理的に不可 IP アドレスを割り当てるインターネット・サービスがあ ての場合について説明する。常日妾続でもプライベート 固定割当てであればより簡単なので、一般的な動的割当 スカ働的に割り当てられている ・自宅のインターネット接続では、グローバル IP アドレ あれば、 XP Pro でなくてもよい。 よる telnet 的アクセスおよびファイルアクセスのみで 稀だろう。リモート・デスクトップ接続はせず、 SSH に もいいが、自宅に Windows server を置いている人は ( ログオン先 ) になれない。 Windows server 2003 で そうでないと、リモート・デスクトッフ接続のサーノヾー や SOCKS 経由でもよい ( リモート・デスクトップ接続 ます、リモート・デスクトッフ妾続についてみてい一 その後にファイルアクセスについて考える。 158 っ。 準備作業の概要 準備作業は、おおむね以下の手順でおこなう。これらは、 すべて無料で利用もしくは入手できる。 1. 自宅の Home PC がリモート・デスクトップ接続を受 け付けるように設定する。 2. RemotePC に必要なリモート・デスクトッフ寸妾続のク ライアント・プログラムは、 Windows xp (Home も 含む ) であれば最初からインストールされている。それ 以外の場合は、 XP pro の CD-ROM からインストー ルできる。 3. Cygwin の OpenSSH を Home PC 、 Remote PC の 両方にインストールして定する。 4. ダイナミック DNS サービスを利用し、自宅のグローバ ル IP アドレスカト部から分かるようにする。 5. 自宅のプロードバンド・ルータの設疋で、ルータの TCP 22 番ポートへの接続が Home PC の 22 番ポートに転 送されるようにする。 6. Remote PC からインターネットへの通信が SOCKS 経由の場合は、 Remote PC でそのための準備をして おく。 リモート・デスクトッフ。接続の操作の概要 リモート・デスクトッフ接続については、おおむね以下 の手順で操作をおこなう。 1. Remote PC 上で OpenSSH の ssh コマンドを実行 し、リモート・デスクトップ接続のための SSH トンネ ルを作る。その際、自宅の IP アドレスに対するダイナ ミック DNS のドメイン名を使う。これで、リモート・ デスクトッフ接続のための通信路ができる。 2. SSH トンネルの入口のポートを、たとえば 13389 と しよう。この場合、、、 127.0.0.2 : 13389 " に対してリモー ト・デスクトッフ接続をおこなう。接続先として、 127. 0.0.1 ではなく 127.0.0.2 を指定するところがポイント である。 3. Home PC の Windows のログオン画面が表小される。 準備作業の詳細 それでは、リモート・デスクトッフ接続の準備の各ステッ プを順に説明していこう。 UNIX MAGAZ 工 NE 2004.8
図 2 各グループへのユーザー〕ロ・肖畭 グルーフ。メンバーの勛 0 / 削除 連載 /UNIX Communication Notes 194 非メンバー メンノ、一 ←自鯑 ーザーがコンテンツを増やしていくことに重点を置いた 各モジュールカ甘是供する情報やコメントの追加など、ユ ・モジュール・アクセス権限の有無 任せるような場合には、管理権限を与える必要がある。 し、あるモジュールの管理を特定のユーザーグループに 通常はシステム管理者だけに権限を与えればよい。ただ れぞれのモジュールの機能をよく調べてから設疋する。 理者カ報える機能は各モジュールごとに異なるので、そ おこなう権限を与えるかどうかを決める。モジュール管 ・プロックアクセス権限の有無 機能へのアクセスの有無を設定する。 UNIX MAGAZ 工 NE 2004.8 ーザーを新たなグループに所属させたほうが混乱が少な フォルトの設定のままで運用し、本当に権限が必要なユ 登録ユーザー数が増えてきたときなどは、原則としてデ である。 変更せざるをえない場合は、十分に注意して作業すべき できるかぎり変更しないようにする。なんらかの事情で ・デフォルトの、、登録ユーザ " グループの権限については、 限を明示的に指定する。 は、新たにグループを作成し、そこでユーザーのもつ権 ・特定のユーザーに対してなんらかの権限を与える場合 なうことである。 におけるユーザーグループと同じ考え方にもとづいておこ グループ管理に関するコツは、以下に示すように、 UNIX に表示される図 2 のパネルを利用する。 メンバーの登録・削除をおこなう場合は、図 1 と同じ画面 新たなグループを作成したり、既存のグループについて できない表示プロックが対象となる。 可するかどうかを決める。一般に、ユーザーカ値接変更 各モジュールが提供する、、プロック " へのアクセスを許 おもしろいモジュール XOOPS では、基本モジュールだけでもかなりの機能を もっポータルサイトが構築できる。しかし、 XOOPS 用に 提供されているさまざまなモジュールを利用すれば、もっ とおもしろいことができる。 XOOPS の日本語公式サイト 3 にアクセスし、左側のメ ニューから、、モジュール / ハック " を選ぶと、標準のダウン ロード・モジュールを使ったページが表示される。 は、いろいろな人が開発した多種多様なモジュールの解説 と、それぞれのダウンロード・ページへのリンクがある。 執筆時点では、登録されているモジュールは 91 個である (XOOPS 1. x 用と 2. x 用の合計 ) 。これらのモジュール を 1 つ 1 つみていくだけでもたいへんおもしろい。 利用できるモジュールは、インストールする XOOPS のバージョンによってすこし異なる。今回はバージョン 2.0.6 をベースに解説しているので、以下では 2. x 用のモ ・さきほど述べたプロックアクセス権限とは、簡単にいえ ば、各モジュールによって作成されるプロックを表示す るか否かということである。デフォルトでは、ごく少数 の例外を除き、ゲストにはプロックアクセス権限は与え られていないので、そのサイトのコンテンツにほとんど アクセスできなした態になる。つまり、プロックアクセ ス権限の変更とは、ゲストにアクセスを許可するプロッ クを決める作業といってもよい。 ・グループはむやみに作らない。グループの新設は、本当 に必要とされるときだけに限定する。 注意 1 当然のことながら、 WWW サイトは基本的に寺定多数か らアクセスされる。したがって、 XOOPS でユーザー登録の手 順を簡略化しているような場合は、登録ユーザーに与える権限につ いてよくよく考えるべきである。 XOOPS を利用するときには、 、ユーザーとは何か " を明確に意識する必要がある。デフォルトの 構造は、そのあたりにかなり配慮したものになっている。くどい ようだが、インストール後に権限を変更するときは、本当にその変 更が必要かどうかを十二分ロ寸すべきであろう。 3 http://jp.xoops ・ org/ piCal は XOOPS 用のカレンダー・モジュールで、執 piCal ジュールをいくつカ齠介する。 61
Ⅳ加面Ⅳ s マシンへのアクセス 図 22 Remote PC の 445 番ポート $ netstat -an ー grep 445 0 . 0 . 0 . 0 : 445 TCP 0 . 0 . 0 . 0 : 445 UDP 0 . 0 . 0 . 0 : 0 め、 Remote PC の LAN インターフェイスでは NBT を有効にしておかなければならない。つまり、図 21 ー c の 、、 NetBIOS 言定 " の部分で、 NBT カ陏効になるように設 定する必要がある。 ◆ Microsoft ネットワーク用ファイルとプリンタ共有 を削除する理由 「ファイルアクセス」の節の最初のほうで、 SSH トンネル があるにもかかわらず、、 net view 127.0.0.1 " が Remote PC のファイルサーバー機能を参照してしまう状況を説明 した。この状況を分析し、そこから派生することがらを考 えてみよう。 その時点ではファイル / プリンタ共有サービスは削除さ れていなかったし、 NetBIOS over TCP/IP も有効に なっていた。そして、 127.0.0.1 : 139 は SSH トンネルの 入口になっていた。 Remote PC でのサーバー機能の動作は次のようになっ ていた。 LAN 上の IP アドレスでは NBT の要求を受け 付ける ) 大態になっていて ( 172.16.1.10 : 139 での接続受イ寸 け ) 、 Direct Hosting of SMB の要求はどのネットワー ク・インターフェイスからも受け付けるようになっていた ( 0.0.0.0 : 445 での接続爿寸け ) 。 一方、クライアントの動作としては NBT と Direct Hosting of SMB カ陏効なので、両方に要求を出し、さき に応答を返したほうカ駛われる状態だった。 その結果、以下のようになった。 1. 、 net view 127.0.0.1 " の実行により、 127.0.0.1 : 139 と 127.0.0.1 : 445 の両方に要求が送られる。 2.127.0.0.1 : 139 への要求は SSH トンネル経由で Home PC へ送られ、 127.0.0.1 : 445 への要求は Remote PC 自身で受け付けられる。 3. この時点ではサーバー機能がまだ有効だったので、 127. 0.0.1 : 445 への要求に対しで芯答が返ってくる。 SSH ト ンネルである 127.0.0.1 : 139 よりも 127.0.0.1 : 445 の ほうがさきに応答を返すのが自然である。 4. けっきよく、、、 net view 127.0.0.1 " は Remote PC 自 170 LISTENING 身のファイル共有機能へのアクセスとなった。 ファイル / プリンタ共有サービスを削除すれば、受け取 った要求への応答は返さないはずである (netstat コマン ドでみるかぎり、依然として 0.0.0.0 : 445 への接続を受 け付けている状態ではあるが ) 。そこで、このサービスを 削除したところ、、、 net view 127.0.0.1 " と¥¥ 127.0.0. l*myname のドライプ・マッピングは Home PC への アクセスとなったのである。 ファイル共有のクライアントとしての機能を残したま ま、 0.0.0.0 : 445 での接続受イ寸けをなくすことはできない。 ファイル / プリンタ共有サービスカ哨リ除されていない場合、 すべてのネットワーク・インターフェイスでこのサービス を無効にしても 127.0.0.1 だけでは 445 番ポートへの要求 を受け付けてしまうのではないだろうか。 したがって、 127.0.0.1 : 139 を入口とする SSH トンネ ルを使うには、ファイル / プリンタ共有サービスを削除する しかなさそうである。 以上、自宅外の Windows PC から自宅の Windows PC に安く、安全にアクセスする方法を紹介した。皆さん の参考になればさいわいである。 PC でビデオ録画をしている場合などは、自宅に外部か らリモート・デスクトッフ餒続ができるとたいへん便利で ある。私はストリーミング放送を W ⅲ dows のソフトウェ アでタイマー録音しているが、その録音ソフトの操作をし ばしば自宅外からおこなっているし、録音したファイルを 自宅外で取り出すこともある。こういったこともあって、 いまでは自宅外から自宅へのアクセスは私の生活に不可欠 なものになっている。 ☆ はしだ・まさひで ) UNIX MAGAZINE 2004.8
リモート・デスクトップ接続 図 17 Home PC の TCP/139 番ポートのた兄を調べる $ netstat -an ー grep 139 TCP 192 . 168.0. 10 : 139 図 18 今度は意図どおり $ net view 127.0.0.1 Shared resources at 127.0.0. 1 Tecra 8100 Share name Type Used as Disk myname 0 . 0 . 0 . 0 : 0 Comment UN 工 X MAGAZ 工 NE 2004.8 ・アクセス元ネットワーク環境 : インターネットとの通信 XP ProfessionaI SPI 記億 768MB のラップトップ PC で、 OS は Windows ・ Remote PC ( アクセス元 ) : pentium M 1.4GHz 、主 XP ProfessionaI SPI 記億 512MB のラップトップ PC で、 OS は Windows ・ Home PC ( アクセス先 ) : pentium III 500MHz 、主 ・自宅のルータ : NTT ME BA8000 Pro り 700Kbps 程度 ADSL で、速度測定サイトによると下り 2.2Mbps 、上 ・自宅のインターネット接続 : NTT 東日本のフレツツ・ ます、工麭竟は次のようになっている。 単に紹介しておこう。 参考のために、私がどのような環境で使っているかを簡 ◆私の竟と使用感 NFS サーバー機能が干渉することも考えられる。 ・ SFU (Services for UNIX) を導入していると、その おくほうカ実である。 機能にアクセスしてしまうかもしれない。 IIS は止めて ・Ⅱ S か勠いていると、¥¥ 127.0.0.1 で IIS の WebDAV 0.0.1 " を使うほうカ実である。 割当てをおこなう場合は、、、 localh 。 st " ではなく、、 127. ・ netview コマンド、あるいはネットワーク・ドライプの 以下、私が思いっく範囲で注意点を挙げておこう。 が、いろいろな要因でうまくいかないことがありそうた。 The command completed successfully. LISTENING 場合は図 19 ー b のようになる。 態では図 19 ー a のように、 SSH トンネルが機能していない ファイル共有のための SSH トンネルか慟作している状 いているのかをみてみる。 まず、 SSH トンネルによるファイル共有がどのように動 ◆ 139 番ポートの使われ方 アクセスの方法について考察してみよう。 以下、ここまでに述べた SSH トンネルによるファイル ファイルアクセスについて考える いに時間がかかったことになる。 6 分だった。つまり、 scp での転送にくらべて 22 % よけ コマンドで Home PC から転送した場合の所要時間は 間は 16 分 ) 。一方、同じファイルを OpenSSH の scp 送するのに 7 分 20 秒かかった ( 転送開始時点の予想時 Remote PC へ 28.2MB のファイルをドラッグして転 ・ファイル中幻去に要した時間 :Horne PC のフォルダから ないが、ある程度の相関関係はありそうである。 ルダで約 10 秒。項目数と所要時間が比例するわけでは ・フォルダを開くのに要する時間 : 項目数 50 個程度のフォ 使用感はというと、次のような感じである。 は SOCKS 経由。接糸虫 . 度は不明 予想されることではあるが、一 g オプション ( ネットワー 起動しているので、当り前といえば当り前だが ) 。 ポート ) だけにある ()g オプションを付けずに ssh を 入口は、 127.0.0.1 : 139 ( ループバック・アドレス上の 2. さきほど示したコマンド行で作られる SSH トンネルの ている。これは、ちょっと卿未深い。 インターフェイスの TCP/139 番ポートで接続を待っ 1. ファイル / プリンタ共有のサービスを削除しても、 LAN これにより、次のこと力分かる。 ンターフェイスからの接続要求に応じられるようなかたち ー g オプションにより、 ssh はすべてのネットワーク・イ SSH トンネルを作ろうとすると、図 20 のように失敗する。 ク上の自分以外の機器からの接続も受け付ける ) を付けて 167
連載 /UNIX Communication Notes 図 1 各グループごとの言綻 ルーフューザグループク物 名 システム モジュー モジュー ルアクセ プロック アクセス nevvs 「アバター・マネジャー「バナー里 r¯プロック里「コメント r¯ューザ検「グルーフ , 里「イメージ・マネジャー「ユーザ こメール送信「モジュール里「一、支定「顔アイコン設定「テンプレート「ユーザランキンク設定「ユーザ市里 「ニュース「リンク集「セクション「ヘッドライン「パートナーサイト 「ニュース「リンク集「セクションヘッドライン「パートナーサイト ューナメニュー 00 : 1 ) ログイン 00 : 2 ) 索 00 : イ待ちコンテンツ卩 0 : メインメニュー 00 : 5 ) サイト情報 00 : 6 ) F オンライン歌況い 0 : お F 投 fi ( ランキング 00 : 町新しい登録ユーサい 0 : 9 ) 最近のコメント 00 : 期イベント通定 0 : 11 ) F テーマ選択 00 : r¯トップニュースプロ・ , ク 00 : 2 「最新ニュースプロッ ? 00 : 「新着リンク 00 : 初「高評価リンク卩 0 : 24 ) 「パートナーサイト 00 : 中央 反サイト緒介 00 : 1 町 r¯本日のトップニュースプロック 00 : 期 r¯ニューストしックプロック 00 : ヘッドラインプロック 00 : おー ループ 1 を利用すると便利である。また、日経 BP では試験 的に、、注目ニュース " のページの RSS を提供している 2 60 2 http://nikkeibp.jp/jp/tools/rss.html 1 http://bulknews.net/ るが、構造の変更 ( 新たなフォーラムの設定など ) は許 フォルトでは、サイトの内容にアクセスすることはでき ザーがログインすると登録ユーザーとして扱われる。デ 一般の登録ューザー。ューザー名を割り当て、そのユー 登録ユーザー する際に定する。 イト管理者の権限を与えるかどうかは、ユーザーを登録 システム全体へのアクセスと各種設定の変更が可能。サ ・サイト管理者 プは、以下の 3 種類である。 るようになっている。デフォルトで用意されているグルー とができ、そのグループごとにユーザーの権限を設定でき XOOPS では、ユーザーはいろいろなグループに属すこ 紹介しよう。 ついて説明するのを忘れていた。あらためて、この機能を 前回、モジュールやプロックへのアクセス権限の設疋に グループ管理 見られるのは大きなメリットである。 ルは重宝している。とくに ニュース配信サイトの一覧が 私が実丐剱勺に作っているサイトでも、 headline モジュー されていない。つまり、サイト管理者カ甘是供するコンテ ンツを閲覧するだけのユーザーである。 サイトにアクセスしてきた一殳ユーザー。設定にもよる が、最低限のコンテンツにしかアクセスできない。 上記のように、サイトの内容を追加できるのはサイト管 理者だけであり、ゲストはほとんどの情報を見ることさえ できない。 この状態を変更するには、登録ユーザーまたはゲストの グループにより多くの権限を与えるか、新たなグループを 作成し、そこに独自の権限を与えるしかない。 グループの設定変更や作成、削除をおこなうには、シス テム管理モジュールのグループ管理のメニューを選択する。 このメニューを選択すると、既存のグループの一覧と新規 グループ登録のためのパネルか表示される。 図 1 は、既存のグループを編集、もしくは新たなグルー プを作成する場合に表示されるパネルである。このパネル では、以下の情報か轂定できる。 ・グループ名 ・システム管理者権限の有無 そのグループに属するユーザーが、システム管理モジュ ールの機能を使えるかどうかを指定する。 ・モジュール管理者権限の有無 システム管理モジュール以外のモジュールの設定変更を UN 工 X MAGAZ 工 NE 2004.8
へ ア ロ な 環 境 の 基 礎 知識 〇ろ UN/X と期〃 do ファイルシステム ( 2 ) ファイルシステムの 2 回目となる今回は、 Windows の NTFS について解説する。 Windows の標準ファイルシス テムは、 Windows 9x/Me では単純な構造の FAT だっ たが、マルチューザー OS である Windows NT 系ではセ キュリティに配慮し、信頼性を向上させた NTFS となっ ている。 NTFS について理解することは、 Windows ユー ザーはもとより、 UNIX ユーザーにとっても Windows と の相互運用などを考える際に重要であろう。 NTFS は多くの機能をもっため、 2 回に分けて解説す る ( 前回予告したジャーナル・ファイルシステムとしての ext3 については、次々回に NTFS のジャーナル機能とあ わせてとりあげる予定である ) 。 NTFS の特徴 Windows NT/2000/XP や Windows Server 2003 の標準ファイルシステムは NTFS だが、 MS-DOS や過 去の Windows 9x/Me との互換性のイ尉寺、ほかのシステ ムやデバイスとのデータ交換のために FAT もサポートさ れている。 NTFS では、 FAT のもっさまざまな制限カ陬り払われ ている。これは、アクセス制御が必要なマルチューザー デスクトップ OS だけでなく、高速なファイル I/O や信 頼性カ球められるサーノヾーにも対応するためである。 NTFS のおもな特徴は次のとおりである。 ・トランザクション処理をもとにしたデータ信頼性 NTFS では、 FAT と異なり、すべての I/O 処理をデー タベース処理におけるものと同様のトランザクションの 概念を用いておこなう。すべての I / O 処理は、それを完 UN 工 X MAGAZINE 2004.8 及川卓也 了するか、処理以前の状態に戻るかのいずれかの状態し かとりえない。これによって、ファイルはつねに整合性 のとれたた態となることが保証される。トランザクショ ン処理にもとづく I/O 処理については、ジャーナル機能 について述べるときに詳しく説明する。 セキュリティ NTFS のセキュリティ機能は Windows のオプジェク ト・モデルを利用しているため、 Windows カーネルか らは NTFS 上のファイルも Windows オプジェクトの 1 っとして認識される。ファイル・オプジェクトはこの 連載の 1 回目に解説したセキュリティ言古杢子 (Security Descriptor) をもち、プロセスがファイルにアクセスす る際には、これとプロセス自身のアクセストークンを比 較してアクセスの可否が決定される。 ・柔軟なファイル名命名規則 FAT では 8 十 3 形式、すなわち 8 文字のファイル名と 3 文字の拡張子によりファイル名が構成されていた。ま た、ファイル名の文字セットとして W ⅲ d 。 ws のコード ページが用いられていたため、コードベージが異なるシ ステム間でのファイル奐などの際に問題が生じること もあった。 NTFS のファイル名は文字セットとして Unicode を 用い、 255 文字まで使えるように拡張されている。ただ し、既存のアプリケーションやシステムとの互換性のた め、 8 十 3 形式のファイル名も同時に生成される。 8 十 3 形式のファイル名は、コマンド・プロンプトで DIR コ マンドに / X を付けると表示される。 ・マルチ・データストリーム NTFS ではファイルの実際のデータを、、データストリー 95
図 15 キ先を 127.0.0.2 : 13389 に言綻 、なリモートデスりトップ のトンネルの入口には、 127.0.0.2 を含むすべてのループ 作った場合、トンネルの入口は 0.0.0.0 : 13389 となる。 方、一 g オプション付きで ssh を起動して SSH トンネルを と指定しても SSH トンネルの入口にはつながらない。 め、リモート・デスクトップの接続先を 127.0.0.2 : 13389 ると、トンネルの入口が 127.0.0.1 : 13389 となる。そのた ー g オプションなしで ssh を起動して SSH トンネルを作 ループバック IP アドレスについては問題はない。 イアントカ甘妾続できないのは 127.0.0.1 だけで、その他の じである。さいわい、リモート・デスクトッフ。接続のクラ から 127.255.255.254 までのどのアドレスでも効果は同 127.0.0.1 を使うが、 127.0.0.1 だけではなく、 127.0.0.1 から、その PC 自身にネットワーク・アクセスする場合は 127.0.0.1 を受け付けてくれないのである。通常、ある PC モート・デスクトッフ続のクライアントは、接続先として おける 127.0.0.1 に対する制限を回避するためである。リ ているのは、リモート・デスクトッフ甘妾続のクライアントに 接続先として 127.0.0.2 ( 127.0.0.1 ではない ) を指定し のログオン画面が表示される。 この画面で [ 接続 ] ボタンをクリックすると、 HomePC 接続先を、、 127.0.0.2 : 13389 " と指定する ( 図 15 ) 。 モート・デスクトッフ続のクライアントを起動し、その さて、仕上げのリモート・デスクトッフ接続である。リ ◆ SSH トンネルによるリモート・デスクトップキ いなくても 3389 番ポートがふさがっているからである。 ー - ニ旦竺」一三旦 - , 」わション。 廴ファイルアクセス バック・アドレスにより到達できる。 宅の PC 上のファイルに外部から安全にアクセスするに 次に、ファイルへのアクセスについて考えてみよう。自 UNIX MAGAZINE 2004.8 ファイルのやりとりは問題なくおこなえるが、 GUI が 1. OpenSSH に含まれる scp や sftp を使う は、大きく分けて次のような方法が考えられる。 リモート・デスクトップ接続 ないのが寂しい。 OpenSSH とは別の Windows ネ イテイプな SSH クライアントを利用すれば、 GUI で SSH プロトコルによるファイルのやりとりが可能にな る。しかし、それには OpenSSH とは異なる系統の SSH クライアントを使うことになり、鍵ファイルの管 理や known-hosts の管理などが面倒になる。 2. Windows ネイテイプのファイル共有機能を SSH トン ネル経由で使う これができれば、ごく甬に自宅の PC 上のファイルを 外部から読み書きできるはすである。 3. Ⅱ S などの web サーバーで WebDAV (HTTP をもと にしたファイル共有プロトコル ) を動かし、それを SSH トンネル経由で使う WebDAV に対応した web サーバーをすでに動かして いるのなら一考に値する。 以下では、上記の 2 の実現方法を考えてみよう。 なお、 FTP を SSH トンネルで使うことはできない。な ぜなら、 FTP はパッシプモードであっても、ファイルを送 るときに FTP サーバーから FTP クライアントに対して TCP 接続を張り、かっポート番号が一 - ー・定しないからであ こういった状況には対応できない。 る。 SSH トンネルは、 ポイント Windows のファイル共有の機能を SSH トンネルを通 して使う際のポイントは、以下の 3 つである。 ・ RemotePC で、 Microsoft ネットワーク用ファイルと プリンタ共有 " サービス ( 以下、ファイル / プリンタ共有 サービスと略 ) を削除する。 ・ SSH トンネルの出口は 127.0.0.1 : 139 ではなく、 192. 168.0.10 : 139 のように Home PC の IP アドレスを含 んだものとする。また、 ssh コマンドに一 g オプションを 付けてはいけない。 ・ Remote PC では、、 NetBIOS over TCP " カ鮪、効にな っていなければならない。 なお、 Windows の資源共有では、使われるサーバー側 ポート番号カ墹定されており、ユーザーが指定することは できない。そのため、以下に述べるように若干苦労するこ とになる。 165
図 2 fromhost 関数 fromhost (&req) ; deny-severity = LIBWRAP—DENY—FACILITY ー LIBWRAP-DENY-SEVERITY ; allow—severity = LIBWRAP—ALLOW-FAC 工 LITY ILIBWRAP-ALLOW-SEVERITY ; denied = !hosts—access(&req) ; ションカ数回指定されてもつねに真となります。 一方、オプションカ甘旨定されるたびにオプションの状態 を表す変数の真偽を反転する方法もあります。この場合に は、 wrap—bi ! wrap—bi ; などの式により値を変更することになります。この方法を 使うと、 C シェルの alias などを用いてオプションが指定 されているときに、あとからオプションを取り消せるよう になります。 どちらの方法がよいかは一概にはいえません。場合によ っては、これら以外の方法が適していることもあります。 たとえば、 inetd. c と同様の処理をしておき、オプションが 指定された回数にもとづいて処理を変えるといったことも 可能です。作成するプログラムの特性を考慮し、どの方法 を用いるかを決めてください。 libwrap 関数の機能は、 main 関数の下のほうのループ で使われています。 fork システムコールにより子プロセス を生成し、その子プロセスで実際にサービスを起動しよう とする段階でアクセス制限の検査をおこなっています。 if (pid if (ISWRAP(sep) ) { まずは ISWRAP マクロを使って、要求されたサービ スを libwrap ライプラリで検査するかどうかを調べます。 前節で述べたように、 ISWRAP マクロは引数としてサー ビスの詳細を指定することで、対象のサービスを libwrap ライプラリで検査すべきかどうかを真偽値として返すもの でした。このマクロが真を返し、サービスを検査する必要 がある場合には、 ps コマンドなどの表示で検査用のプロセ スであることが分かるように、 wrapping という文字列を 含むプロセス名に変更します。 inetd—setproctitle("wrapping" , ctrl) ; そして、ライプラリ関数を呼び出すために request-info 構造体を用意します。 86 sep—>se_server_name ? servlce sep—>se_service; sep—>se_server_name request—init(&req, RQ—DAEMON, service, RQ_FILE, ctrl, NULL) ; ます request-init 関数を使って、デーモンプロセスの 名前と、要求が送られてきたファイル・ディスクリプタを 設定します。次に、 fromhost 関数 ( 図 2 ) によりファイ ル・ディスクリプタから得られる情報を取得します。この 関数は、ライプラリのオンライン・マニュアルには含まれ ていませんが、 TCP Wrappers カ甘是供しているものです。 ファイル・ディスクリプタを設疋した request-info 構造 体のアドレスを引数として渡すことで、判明する情報を埋 めてくれます。 さらに、ライプラリカリ用する deny-severity と al- low-severity にマクロとして決めておいた値を設定し、 syslog の出力を設定します。最後に、用意した情報を使っ て hosts-access 関数を呼び出し、アクセスを許可すべきか どうかを判断します。 hosts-access 関数はアクセスを許 こではその値を否定し 可する場合に真の値を返すため、 たものを denied 変数にオ内しています。これにより、 の変数の値カ填の場合にはアクセスを許可すべきではない という未になります。 ☆ 今回は、 inetd プログラムのソースコードを紹介し、と くに libwrap ライプラリ関数関連の部分を重点的にみてき ました。 ほとんどの機能がライプラリ関数のなかで実現されてい るため、ⅲ etd プログラムのソースコードでおこなう処理 は案外少ないことに驚いたのではないでしようか。この程 度であれば、自作のプログラムで libwrap ライプラリを利 用するのもさほと難しくないと思います。ぜひ、チャレン ジしてみてください。 ( たじみ・ひさかず ) UNIX MAGAZ 工 NE 2004.8
Ⅳ加面Ⅳ s マシンへのアクセス 図 9 自宅の LAN 上で SSH キができるかを石砡忍 $ ssh 192.168.0.10 Enter passphrase for key '/home/foobar/. ssh/id_rsa' : * * * * * * * * * * Last login: Fri Jun 11 20 : 34 : 01 2004 from 192.168.0.11 Fanfare ! ! ! You are successfully logged in tO this server ! ! ! rized-keys" に変更する。ファイルのモードが、図 8 の ように誰でも読める状態であることを確認しておく。 5. コマンド行で以下のように実行し、 SSH サーバー (sshd) を起動する。 $ cygrunsrv -S sshd cygrunsrv は、 Cygwin のコマンドを Windows のサー ビス (UNIX でいえばデーモン ) として登録 / 起動 / 停 止するための Cygwin 特有のコマンドである。 こまでの作業が終ったら、自宅の LAN 上で図 9 のよ うに Remote PC から Home PC に SSH 接続ができる はずである ( 秘密鍵のノヾスフレーズを入力するとき、実際 には * は表示されない ) 。 うまくいかない場合は、以下のようにすれば何が起こっ ているかが出力されるので、手、かりカられるだろう。 ssh -v Home PC の IP アドレス ◆外部から自宅へのアクセス 多くの場合、一般家庭などを対象にしたインターネット 常日羽妾続では IP アドレスカ働的に割り当てられ一定しな い。しかし、つながっているあいだは一定で、 IP アドレス カ畯わることがあるのはインターネット接続が中断された ときだけなので、外部からの接続も十分に可能である。 インターネット接続が切れないようにする 最近のプロードバンド・ルータの多くは、外部からのア クセスにも対応している。外部からのアクセスを可能にす るには、自宅からインターネットへのアクセスがないから といって、 PPP 。 E などによるインターネット接続を切断 してはいけない。そこで、ルータでそのための設疋ができ るようになっている。図 10 はその一例である。 この例では、、接続 " を、、常時 " にしてあるため、一定時間 ( この場合は 60 秒 ) ごとに PPP Echo request を PPP- oE のホストに送り、 PPPoE のセッションが切れないよ 162 うにしている。 図 10 キかされないように言綻 ppp 。 E 接続アカウントリスト PPP 。 E 接わ状態確月創乍を行います。 アカウント名 D アルスセッション接続アイドル タイム 45 21013d2321 PPP ー Eci ℃ー Re 年ぉ毆送出、物 PPP-Ecm—Recwest リトライ回 ( げ虍 0 d に 02 ・・ 112210 01-01 〔 0 [ 023 ] 断 図 11 外部からの SSH } のための言綻 静的マスカレード マルチ NAT 能やローカルサーバ嫌能 ( 珖殳定を行います。 幻並」 第ホスカ追加 - 」 修宿可 修正 第リ除 修正 1g1 田 .0.10 外部から Home PC に到達できるようにする 自宅で外部から直接通信できるのはプロードバンド・ル ータであって、設疋しないかぎり Home PC に到達でき ない。 Home PC に外部から SSH 接続できるようにする には、ルータの TCP/22 番ポートへの接続が Home PC の TCP/22 番ポートに中継されるようにルータの設定を おこなう。図 11 はその一例である。 ダイナミック DNS サーヒスを使う 残る問題は、動的に割り当てられる自宅の IP アドレ スをいかにして外部から知るかである。それには、いくつ かの会社カ甘是供しているダイナミック DNS サービス ( 以 下、 DDNS) を利用すればよい。無料で提供されている DDNS サービスもあり、検索エンジンなどで、、ダイナミッ ク DNS サービス " をキーに検索すれば、すぐにみつかる はずだ。 サービスごとに細かな違いはあるだろうが、基本的には 利用者が決めたドメイン名から利用者の IP アドレスが 得られるようにするものである。たとえば、 *. dynamic- domain. jp というドメインを利用者に提供する DDNS が UNIX MAGAZ 工 NE 2004.8