ユーザー - みる会図書館


検索対象: BSD magazine No.7 プログラミングをはじめよう! ; ファイアウォールを考える
76件見つかりました。

1. BSD magazine No.7 プログラミングをはじめよう! ; ファイアウォールを考える

黻 2 アイアウォ りレを考える ・クライアントは、最終決定した方式 での認証情報を含むリクエストを送 信 ユーザー認証機能を用いるには、サ ーノヾーの設定ファイル (socks5. conf) の auth 行でユーザー認証方式を指定し、 さらに permit 行でそれぞれのルール毎 の認証方式を決定する。リスト 3 に示 す例では次のような処理が行われる。 ・ GSS-API に対応する SOCKS5 クライ アントは GSS ー A 円での認証を行う ・ GSS-API に対応しない SOCKS5 クラ , u , k イアントは、ユーザー名 / パスワード ・ SOCKS4 クライアントは認証を行わ ない ユーサー名 / バスワード サーバー側では、デフォルトで / etc / s 。 cks5. passwd に記述したユーザー情報 を元に認証を行う。 socks5. passwd に は、ユーザー名とパスワードを空白で 区切って記述する。 permit u —b,user—c 192. 168.2. USer user—a user—b user—c secret—a secret—b secret—c もし、特定のユーザーのみに限定し ト部にユーザー名をコンマで区切って たい場合は、 permit 行のユーザーリス での認証を行う マリスト 3 ユーザー認証 auth Ⅱ permit n,u,k ライアント 192. 168.2. 指定する。 SOCKS NS サーバー SOCKS での接続 (TCP) クライアント SOCKS 間の UDP ボート番号の交渉 (TCP) DNS のリクエスト (UDP) 図 2 UDP の中継 ( DNS リクエストの例 ) SOCKS の終了 (TCP) DNS のレスポンス (UDP) DNS 要求処理 (UDP) クライアント側では、ユーザー名と パスワードを環境変数に指定しておく。 % setenv SOCKS5—USER user—a % setenv SOCKS5—PASSWD secret—a GSS-API GS s -API 方式の認証を行うには、 SOCKS サーバー クライアント共に GSS - API に対応させる必要がある。ア プリケーションの例として、 SOCKS5 附属の rtelnet/rftp を利用するには以下 のような手順を踏む。 Kerberos 環境 ・ SOCKS サーバー、クライアント共に Kerberos の環境を整える ・ SOCKS サービス用のプリンシバルを K e r b e r 0 s データベースへ登録 ( SOCKS が使用するサービスプリン シバル名は lib / gss. c で変更できる。 デフォルトは rcmd) SOCKS サーバー側 ・ SOCKS を configuure --with-krb5 でコ ンパイル後、インストール ( コンパ イル過程の途中でつますくかもしれ ないが、手作業で修正するのも、そ れほど難しくないはずだ ) ・ SOCKS サーバー設定ファイルに記 述 permit k ー 192 . 168.2. クライアント側 ・サーバー側と同様に SOCKS のクライ アント環境をコンパイル、インスト ・ kinit コマンドで信任状を取得 beros 環境へのログイン ) 2001 No. 7 BSD magazine (Ker 137

2. BSD magazine No.7 プログラミングをはじめよう! ; ファイアウォールを考える

日本 GN 〇 ME ユーザ会通信 まずは GNOME を取り巻くニュースについてです。 GNOME 1 .4 フロジェクト短信 日本 GNOME ユーザ会 中井幸博 / 翫 nakai@gnome.gr.jp GNOME 1.4 コーディネータチームによって GNOME 1.4 リリーススケジュール案が提出されました。スケジュール 案によると、 Beta3, RCI がリリースされたあと、 3 月終わ り頃を予定して GNOME 1.4 がリリースされることになり ます。 GNOME 1.2 がリリースされてだいぶ時間が経ち、これ までなかったアプリケーションや、次期 GNOME 向けとさ れてきたアプリケーションがかなりできてきたというとこ ろでしよう。ファイルマネージャ Naut ⅱ us も統合されます。 GNOMEI. 4 の日本語翻訳状況ですが、中心となる部分 では現在 75 % くらいです。 GNOME 1.4 はリリース後も頻 繁に 1.4.1 、 1.4.2 ・・・・・とリリースされていくのでどこかのタ イミングで翻訳が取り込まれることになります。 実際に 1.4 にどのアプリケーションが入るかについての情 http ://gnome—releng.eazel.com/ 報は 本語が結構使えるという情報もあります。 として紹介されています。 OpenOffice は、 Windows では日 できるという理由で、 OpenOffice 製品も GNOME オフィス GTK + /GNOME と異なりますが、 bonobo 経由で使うことが フィス製品と呼ばれるものはだいたい出そろっています。 によると、日本語が通るものは少ないものの、世の中でオ http://www.gnome ・ org/gnome-office/ GNOME オフィスの行方 関心のある方はこのページの一番最後をご覧ください。 GNOME 1.4 にターゲットを絞って翻訳を行っていきます。 て日本語訳の作成を行ってきましたが、 3 月初頭から 日本 GNOME ユーザ会では次期 GNOME リリースに向け ール Ev 。 lu ⅱ。 n が入るかどうかは微妙なようです。 を参照してください。これを見る限りでは、統合メールツ EazeI と Red Hat が提携 GNOME の次期ファイルマネージャの Nau ⅲ us で知られ る EazeI は独自のアップデートサービス (EazeI サービス ) を提供するという方針を転換し、 Red Hat と提携して Red Hat のアップデートサービスの中に組み込む予定であるこ とを発表しました。 この提携では一見 * BSD とは関係なさそうですが、国際 化を完了してグローバルなサービスを展開する予定がある ようです。日本国内でもサービスを提供するつもりらしく、 FreeBSD への対応・日本語のサポートについても調査して いました。 HeIixC0de が Ximian へ名称変更 GNOME のためのオープンソース企業 HeIixCode が Ximian へ名称を変更しました。この企業は国際化・ *BSD 対応ともに ( 今のところ ) 意識が低いのですが、何かと注 目されるので挙げてみました。 オープンソースまつり 2 月 10 日 ~ 2 月 11 日に東京秋葉原で開催される、オープ ンソースまつりに日本 GNOME ユーザ会として出展しま す。今回の出展ではデモ機も用意していて、盛況の予定 です ( 執筆時点では、開催前 ) 。 ドキュメント翻訳者・開発者募集中 日本 GNOME ユーザ会では、ボランティアで GNOME の 翻訳を手伝っていただける方を募集しています。日本語訳 はこのユーザ会でしかできないわけではありませんが、ユ ーザ会にお知らせいただけると本家のリリースの中に取り 入れることが可能です。それ以外にも日本語パッチ等の開 発作業も行っていますので、開発者やテスターを希望され る方もぜひメーリングリスト等を通してユーザ会の活動に ご参加ください。 日本 GNOME ユーザ会 http://www.gnome ・ g て・ jp/ 2001 No. 7 BSD magazine 233

3. BSD magazine No.7 プログラミングをはじめよう! ; ファイアウォールを考える

プロセスのライフサイクル プロセスが生まれてから死ぬ ( 終了 する ) までのライフサイクルは次のよ うなものだ。プロセスを生み出すのは ( 唯一の例外である pid = 1 の init ( 8 ) を除 いては ) 他のプロセスである。生み出 す側を「親」、生み出された新しいプ ロセスを「子」のプロセスと呼ぶ。プ ロセスを生み出すシステムコールは fo ⅸ ( 2 ) である。このシステムコールは 呼び出したプロセスの正確な複製を作 り、新しいプロセスは f 。 rk ( 2 ) システム コールが戻った部分から実行を開始す る。親と子が互いに区別する唯一の手 段は、 fork ( 2 ) は親へは子プロセスの pid を返し、子へは 0 を返すことだけだ。 f 。ⅸ ( 2 ) はプロセスの複製を作るので、 アドレス空間の内容は f 。 rk ( 2 ) 直後は親 子でまったく同一である。これでは他 のプログラムをプロセスとして実行す ることができないので、実行ファイル から現在のプロセスを初期化して、ま ったく異なるプログラムを実行するシ ステムコールが用意されている。これ が execve ( 2 ) システムコールである。シ ェルの動作を例にとって説明してみよ う。シェルにコマンドラインを入力す ると、シェルはまず f 。 rk ( 2 ) して子プロ セスを作る。親プロセスがすることは、 子がフォアグラウンドプロセスである 場合はただ単に wait ( 2 ) して子の終了を 待っことだけである。一方子は親から 継承したデータにより現在実行しよう としているコマンドラインを持ってい るので、 execve ( 2 ) により自分自身をコ マンドラインで指定されているコマン ドで初期化し、実行を開始する。この ときプロセスは生成されないので pid は 変化しない。 プロセスが終了するのは一 exit ( 2 ) 注 4 シ ステムコールを呼んだときだ注 5 。この システムコールは決して値を返すこと はなく、呼び出したプロセスを終了さ せる。子が終了ステータスを与えて -exit(2) を呼び出すと、親の wait(2) シス テムコールが戻って子の pid と終了ステ ータスが返される。もし親が wait ( 2 ) で 子の終了を待っていない場合はどうな るか。終了ステータスを親が必要とす る可能性があるので、子はプロセステ ープル注 6 に残ったままになる。親に wait ( 2 ) された時点で子が使用中のプロ セステープルエントリが解放され、子 はシステムから完全に消滅する。 このように UNIX プロセスの親子関 係は通常の生物の親子と違い、子が先 に死んでしまうことが多いのが特徴で ある。しかし、親が子を f 。 rk ( 2 ) した後 で wait ( 2 ) せすに終了してしまうことも あり得る。この場合は、親が死んだ時 点で生き残っている子の親プロセス ID (parent pid 、 ppid) をすべて 1 にしてし まう。 pid==l というのは BSD が起動す るとき一番最初に生成されるプロセス、 init(8) である。 init ( 8 ) は起動時にさまざ まな処理をするが、一度 BSD がマルチ ューザーモードで起動してしまうと特 に仕事はなく、ただひたすら wait ( 2 ) で 子が死ぬのを待つだけなのである。し たがって親に先立たれた子プロセスは init(8) によって wait ( 2 ) されることにな る。 システムコール 先のリニアなアドレス空間 ( 図 1 ) をもう一度見てみよう。高位アドレス がカーネル空間と定義されている。し かしこの空間に対してユーザープロセ スからの自由なアクセスを許したので はいろいろな問題が生じる。たとえば、 ユーザープログラムのバグによってカ ーネルそのものや変数が破壊され、シ ステム動作が継続できなくなることな どが考えられる。古い Macintosh ユーザ ーや Windows 3.1 ユーザーにはおなじみ の現象だろう。 このため、ユーザープロセスがカー ネルにアクセスを行うための特別な方 法としてシステムコールが用意されて いる。これ以外にユーザープロセスが カーネルに何かを伝える方法は存在し ない。システムコールが無ければユー ザープロセスは正常終了することすら できないのである注 7 。 システムコールの実装はプロセッサ やアーキテクチャ依存だが、一般には 例外処理を発生する命令 ( ソフトウェ ア例外 ) が使用される。この種の命令 は、プロセッサをユーザー ( 非特権 ) モードからカーネル ( 特権 ) モードへ 移行させ、カーネル内の特定のエント リポイントへ実行を移す。この特定の ェントリポイントへ制御を移すという ところがミソで、これにより安全にユ ーザーモードからカーネルモードへ移 行し、ユーザープロセスからカーネル 内部を保護しつつもユーザープロセス の要求を処理することが可能となって いる。 システムコールによってはユーザー プログラムから直接呼び出さずに、よ り高水準な機能を提供するライプラリ 関数を通じて呼び出すことが多いもの 注 4 通常ユーザープログラムで使用するのは - exit ( 2 ) システムコールではなく exit ( 3 ) ライプラリ関数である。 注 5 後述するが、シグナルを受けて終了する場合もある。 注 6 プロセステープルはシステム上のプロセスを管理するためにカーネルが持つ、構造体の配列である。 注 7 exit ( 2 ) システムコールを使う。これがなければページフォールト等で異常終了するしか方法がない。 020 BSD magazine 2001 NO. 7

4. BSD magazine No.7 プログラミングをはじめよう! ; ファイアウォールを考える

マリスト 20 * BSD ではこれで問題ないのだが、 他の UN Ⅸへの移植を考えると問題が ある。 POSIX の仕様に従えば、スーパ ーユーザーの場合はリスト 19 やリスト 20 の方法で setgid 権限や setuid 権限を完 全に捨てることができるが、スーパー ユーザー以外ではそうではない。その 場合、 setgid 権限や setuid 権限を後で取 り戻される危険が残るのである。その ような UN Ⅸでは、その危険を避ける ために、スーパーユーザーに setuid する ことが必要になる。その一方で、 * B SD では、スーパーユーザーへの setuid で不必要に危険を増やすことは ない。インストールスクリプトを工夫 して、 UN Ⅸの種類によってインストー ル時に切り替えるようにするとよい。 どうしても、 setuid や setgid が必要な 作業を最初にまとめることができない 場合は、 setuid や setgid が必要な作業だ けを別プロセスにすることが候補とな ることもある。ただし、それは一般に 難しい作業である。特別な事情がなけ れば、リスト 19 やリスト 20 の方法に持 ち込む方法を考えるのが楽だろう。い ずれにせよ、「 setuid や setgid は最小限 に」が原則である。 int main(int argv, char *argv ロ ) int fd; fd = open(PATH—OF_SOMETHING, O-RDWR) ; setuid(getuid() ) ; V リスト 21 #include く stdlib . h> void myname (char *Str , size—t len) char s = getenv("USER'i) : if (s ! = NULL) { snprintf (str, len, strC0] = ー \ 0 ー } else { マリスト 22 #include く pwd. れ > #include く unistd. れ> く sys/types. h> #include VOid myname (char *Str , size—t len) struct passwd *Pw; pw = getpwuid(getuid() ) ; if ()w ! = NULL) { snprintf (str , len, name) ; pw- >pw- } else { str [ 0 ] 環境変数を信じるな 環境変数は、プロセスを exec する側 で任意に設定できる。したがって、環 境変数は基本的に信用できないもので ある。環境変数を検証に使ってはなら なし、。 たとえば、ユーザー名を調べるため に環境変数 USER を使う方法 ( リスト 21 ) は、ユーザー名によってある操作 を許すかどうかの判定に使うには適さ ない。 getuid ( ) とパスワードファイルの アクセスによる方法 ( リスト 22 ) を使 うべきである。 082 BSD magazine 2001 NO. 7

5. BSD magazine No.7 プログラミングをはじめよう! ; ファイアウォールを考える

。 BSD プログラミングの基礎概念 原寛 /Kan Takahara プロセスのコンテキストを復帰させる どのようなシステム上であってもプ プロセス ことで実現している注 2 。このようにカ ログラムの動作環境を理解しなければ ーネルがプロセス切替をユーザープロ プログラムを書くことはできない。プ セスから隠しているため、各プロセス ますはユーザーランドプログラミン ログラムの動作環境はオペレーティン は他のプロセスの動作には影響をうけ グの中心的概念とも言える「プロセス」 グシステムやライプラリによって規定 についてみていこう。「プログラム」と ず、独立した動作が可能となっている。 される。したがって BSD 上でプログラ なお、各プロセスはプロセス ID (pid) は、実行中であろうが実行していなか ム注 1 を書くためには、 BSD が提供する ろうがプログラムである。紙や磁気テ と呼ばれる整数値で識別される。 プログラム動作環境を理解することが ープなどの上に記録されているプログ 必要となる。では、 BSD のプログラム プロセッサレジスタ 動作環境の基礎概念を構成する要素を ラムも、メモリ上のコンパイル済オプ プロセッサレジスタとは、プロセッ ジェクトプログラムもプログラムであ みていこつ。 サ自身が持つ高速・小容量なメモリの なお本稿では、 UN Ⅸ系 OS の標準言 る。メモリに読み込まれていても、デ ことである。少量のデータを高速にア イスク上にファイルとして保存されて 語である c 言語を使用してプログラミ クセスするために使用される一般レジ いてもプログラムの「何らかの方法で ングすることを想定している。 スタのほか、実行中の命令アドレスを 実行可能」という性質は変わらない。 表記 保持するプログラムカウンタ、算術演 つまり、何らかの方法でコンピュータ 算結果が満たす条件などを保持するス によって実行可能な命令の列であり、 テータスワードなども含まれる。 静的な概念である。 本稿では BSD のオンラインマニュア BSD では c 言語等の高水準言語でプ ル (man pages) にエントリがあるシス これに対して「プロセス」とは実行 ログラムすることが多いので、プログ 中のプログラムであり、「コンテキスト」 テムコール名、コマンド名等について ラマが意識する必要はあまりない。 と呼ばれる動的な属性を持つ。コンテ は "entry(sect)" という UNIX 標準表記を キストとは言ってしまえばプロセッサ 採用した 。ここで "entry" は man pages の プロセスのアドレス空間 "fork" など ) 、 レジスタの内容とプロセスのアドレス 工ントリ ( たとえば " ls " BSD では、 OS が個々のユーザープロ "sect" は man pages のセクションを小す。 空間イメージの対である。 セスに独立したリニアでフラットな仮 BSD はプリエンプテイブマルチタス たとえば " ls ( 1 ) " 、 " f 。ⅸ ( 2 ) " など。これら 想アドレス空間を提供している。 ク OS であり、ユーザープロセスの都合 の man pages を参照するには man コマン で「リニアでフラット」と言っている とは基本的に無関係に複数のプロセス ドで "man 1 ls" や "man 2 fork" のように のは 1 次元のアドレス空間という意味 を切り替えてタイムシェアによってマ 参照したいものの前にセクションを指 で、セグメントなどに分かれていない ルチタスクを実現している。このプロ 定する。 ことを意味している注 3 。つまり、テキ セス切替は、まず実行中のコンテキス スト ( コード ) 領域へのポインタとデ トを退避し、次に退避してあった別の 注 1 本稿ではユーザーランドプログラム、つまりカーネルとリンクされカーネル内部で動作するデバイスドライバやファイルシステムなどではなく、ユーザー プロセスとして動作するプログラムについてのみ取り扱う。また、プロセッサが直接実行可能なバイナリプログラムに限定する。 注 2 とロで言うのは簡単だが、実際は大変複雑な処理を行っている。 018 BSD magazine 2001 NO. 7

6. BSD magazine No.7 プログラミングをはじめよう! ; ファイアウォールを考える

2 アイアウォりレを考える う。ただし、内部サーバーである SMTP サーバー ( B ) からの任意の宛先 のメール配送要求は受け付けるように する。 外向けの MX レコード ( 外部向けに公開する ) DNS の MX レ コードを使って、内部ネットワーク宛 のメールは、必ず、いったん、 SMTP サーバー ( A ) に送られるようにする。 ユーサーアカウント SMTP サーバー ( A ) の役割の 1 つは 「メールを転送する」である。 SMTP サ ーバー (A) には、内部ネットワークの ユーザーのアカウントを作ってはなら ない。 SMTP サーバ—(A) はあくまで、 内部宛のメールを内部サーバーに、外 部宛のメールを外部サーバーに、転送 する役割を持てばよい。内部の SMTP サーバー ( B ) にユーザーのアカウントを 作成し、必要に応じて、 POP や IMAP などのサービスを提供するとよい。 内部のメールサーバーの設定 すべてのメールを SMTP サーバ—(A) に送信するように設定する。また、メ ールアドレスなどの書き換えを行う。 たとえ ( よ、 user@host.my.domain = > user@my.domain といった書き換えを行 う。こうすることで、メールアドレス の混乱を防ぐことができる。外部から メールを送信する場合は、 user@my. domain で送信し、 my. domain 宛のメー ルを SMTP サーバー ( A ) で受け取るよ うにする。また、内部のホスト名など の情報の漏曳も防ぐことができるだろ う。内部情報の漏曳を防ぐためには、 SMTP サーバー (A) で、 Message-Id: な どのヘッダを付け直すなどの作業も必 要になるだろう。 補足 意のポート番号を使用する。 ート番号を、送信側は 1024 番以上の任 POP(POP3) では、受信側は 110 番ポ コルである。 ルスプールの処理を行うためのプロト POP とは、 SMTP で配送されたメー 概要 POP (post Office Protocol) か伐に皿つ。 供したいといったときには、 fetchmail めてひとつのサービスとして内部に提 クにあるメールサービス ( POP ) をまと たメールサービスと、外部ネットワー の場合に、内部ネットワークに用意し ービスを行うことは推奨できない。そ 合の接続形態では、外向けにメールサ レスが動的に割り当てられるような場 外部ネットワークとの境界の 1P アド SMTP サーバ 実際の運用 pop サーバーには、外部のネットワー ー (B ) に用意する。この pop サーバーは内部ネットワークの ワークの pop サーバーへの接続を許可 じことが多い。このため、外部ネット ワードは、端末認証のパスワードと同 通常の場合は平文で流れる。このパス POP のユーザー認証のパスワードは POP のパスワード [ 注意すべきこと ] 設定しない。 て拒否」となっているので、実際には、 ルータ B の外→内は「デフォルトですべ ルタリングは以下のように設定する。 クから接続できないようにする。フィ する運用方針をとる場合は、盗聴され ると危険であることをユーザーに意識 してもらっておくほうがのぞましいだ ろう。通常の手順の接続以外に APOP と呼ばれる手順で POP サーバー に接続する方法がある。 APOP では、 チャレンジアンドレスポンスによる認 証のため、平文のパスワードが流れる ことはないため通常の手順に比べると 安全である。また、認証後のメール操 作 ( メールの取り出し ) は、平文のまま 流れることを補足しておく。 POP サーバーの配置 POP サーバーを DMZ ネットワークに 配置してはならない。 DMZ ネットワー クにメールスプールを用意するために ューザーアカウントを用意することに なり、このユーザーアカウントを踏台 にして、内部ネットワークを攻撃され る可能性があるからである。 HTTP (Hyper Text Transfer protocol) HTTP とは、 WWW サーバー上のウ エプページをクライアントである web プラウザ転送するためのプロトコルで ある。 HTTP では、送信側は 1024 番以上の 任意のポート番号を使用し受信側は、 多くの場合、 80 番ポート番号を使用す る。 HTTP サーバーは、同じホストで複 数起動できるようになっており、また、 一般ユーザー権限で実行できるように なっているため、受信側のポート番号 は、 1024 番以上のポート番号になる可 能性がある。一般に広く用いられてい るのは、 81 、 8000 、 8080 番等である。 H 丁 P プロキシサーバーは、クライア ントからの HTTP 接続要求を受け、 HTTP サーバーへの接続の代理接続を 注 1 squid という HI 丁 p プロキシ兼キャッシュサーパーのデフォルト設定が、 3128 番であるため。 2001 NO. 7 BSD magazine 119

7. BSD magazine No.7 プログラミングをはじめよう! ; ファイアウォールを考える

U S\ N E S S B S D 〇 O F O P E N S O U R C E R E P O R T 工ー・アイ・ソフト WXG fo 「 Linux/FreeBSD Ver 1 .0 宿を日本語処理技術の研究・開発のために提供 MS - DOS や Windows 上で人気の高い日本語入力ソフトウェアである WXG の Linu F 「 eeBSD 版が、 工ー・アイ・ソフト / セイコーエプソンが共同で行っている Web 「 e 言葉」上で公開された。 これは、「 e 言葉」に集うユーザーとともに新たな日本語処理技術の研究・開発を行うための試みのひとつであるという。 このユニークな試みについて、長野県松本市のエー・アイ・ソフト本社を訪ね、お話を伺った。 のを作ろうということになったわけで 言葉」は、日本語処理を研究するため 編集部 : WXG for Linux/FreeBSD を開 す。 FreeBSD に関していえば、正直な のコミュニティとして機能する / させる 発された経緯について、伺いたいので ところ最初は対応予定には入っていな ことを目的にしているので、あくまで すが。 も議論のための材料として提供してい かったんですけれども、社内で 松本 : もともとは Linux が話題になっ るというスタンスなんです。版とい FreeBSD を使っている人間がいまして、 たときに、もしかしたらパッケージビ う名前がいいかどうかは別にして、普 ジネスがあるかもしれないということ ソースを見せたら移植してくれたと 通の製品化とは違うものだという点を で、市場調査という意味合いがありま 編集部 : 現在 web で公開されているも ご理解いただきたいと思います。 した。あと、正直なところ IME のパッ のは版ですが、今後の予定はどのよ 編集部 : つまり、「 e 言葉」上で WXG ケージビジネスというのはもう苦しく うになっているのでしようか。 のユーザーとともに新しい日本語処理 なっている、という認識もありました。 技術について、研究・開発を行いたい ただ、日本語処理の基礎技術はこれか 松岡 : 弊社では、基本的に〃などを公 開した場合は製品を前提にしているん ということですね。そのために必要で らいろいろなプラットフォームで必要 あれば、 WXG の辞書の構造ですとか、 になるだろうということで、 Linux など ですが、これは例外中の例外でして、 ユーザーインターフェイスを作成する に移植するということがはじまったわ 製品化することすら決まっていません。 けです。それが今から 1 年半前ですね。 WXG for Linux/FreeBSD は、弊社の ために必要な情報を公開していただけ web サイトの「 e 言葉」というところで、 るのでしようか。 いわゆるユーザーインターフェイスを 鈴木 : 一応検討はしていますが、具体 こは研究開発 作るような工数はなかったので、ひと 公開されていますが、 的にどうするかはまだ計画中です。 をするためだけのサイトなんです。「 e つの選択肢として " かんな " 互換のも 写真 2 工ー・アイ・ソフト株式会社 開発部課長松本茂之 166 BSD magazine 2001 No. 7

8. BSD magazine No.7 プログラミングをはじめよう! ; ファイアウォールを考える

2 アイアウォりレを考える HTTP'S ケット (setup & establish (d) を許可 ・サーバー ( A ) (port 80 ) から外部ネ ットワーク ( port > = 1024 ) への HTTP バケット応答 (established) を 許可 内→外のコネクション ・サーバー (A) ( p 。 rt > = 1024 ) から外 部ネットワーク ( port 80 ) への HTTP ノヾケット (setup & establish (d) を許可 ・外部ネットワーク ( p 。 rt80 ) からサ ーバー (A) ( port > = 1024 ) への HTTP バケット応答 (established) を許可 [ 注意すべきこと ] HTTP サーバーへの攻撃 HTTP サーバーへの攻撃として考え られるのが、ファイルのアップロード や不正な CGI の実行による攻撃である。 こういった攻撃に対しては、バケット フィルタリングだけでは、防御に限界 がある。このため、 HTTP サーバーのセ キュリティに関する設定で防御するこ とが必要になる。また、 CGI に関して は、内部で作成した CGI が不正な処理 を行わないか、などの注意が必要だ HTTP サーバーの運用レベルでのポリシ ー作成も必要になるだろう。 リレープロキシ攻撃 外部ネットワークからの HTTP サー バーあるいは HTTP プロキシサーバーへ 向けて、プロキシ接続をするという攻 を行う際に、あたかも、この内部ネッ 撃がある。この攻撃は、悪意ある接続 トワークからの接続であるかのように 見せかける攻撃である。 DMZ にプロキ シサーバーを用意する場合は、外部か らプロキシサーバーを利用できないよ うに、バケットフィルタリング、ある いは、プロキシサーバーのアクセスコ ントロールで設定するとよい。 HTTP クライアントへの攻撃 HTML に埋めこまれた JavaScript や VBScript などによるプラウザのセキュ リティホールをついた攻撃が考えられ る。これらの攻撃に関しては、 DMZ の プロキシサーバーでスクリプトを除去 するか、あるいは、内部ネットワーク のユーザーにスクリプトの実行をしな いようなプラウザの設定を教育するか のどちらかである。 TELNET TELNET とは、端末ログインのため のプロトコルである。 TELNET では、受信側は 25 番ポート 番号を、送信側は 1024 番以上の任意の ポート番号を使用する。 TELNET を用いたの端末ログインで は、端末認証や端末操作などのすべて のプロトコル上を流れるデータは平文 のまま流れる。このため、 TELNET で ログインしたユーザーを踏台にして、 内部ネットワークへ攻撃される可能性 が高い注 2 。 こうした理由から開発された、端末 認証や端末操作などのプロトコルデー タの暗号化をした端末ログインのプロ トコルが SSH である。端末ログインに マリスト 1 1 telnetd telnetd telnetd TELNET サービスを行うマシンの /etc/hosts. 訓0W admin@192.168.1.0 / 255.255.255.0 : a110W 127.0.0. 1 : a110W ALL : deny は、 SSH を使うことを推奨する。この ため、重要なマシンは、 inetd. conf から telnet の行をコメントアウトしておい て、使用できないようにしておくのが よい。 実際の運用 ルータ A の外→内は「デフォルトです べて拒否」となっているので、バケット フィルタリングルールを特に設定する 必要はない。また、 DMZ ネットワーク に配置するマシンの inetd. conf から telnet の行を念のためコメントアウトしてお く。ルータ B の外→内は「デフォルトで すべて拒否」となっているので、バケッ トフィルタリングルールを特に設定す る必要はない。 また、ある管理権限を持っユーザー だけは、 DMZ のネットワークのマシン に内部ネットワークから TELNET 接続 したいという場合には、 TCP Wrapper を用いるとよい。 TCP wrapper の設定 は、リスト 11 の通りである。 また、同時に、 TELNET クライアン トの側には、 identd などのサービスを起 動しておく必要がある。 以上のようなユーザーも含めた端末 認証を行いたい場合に、特別な理由が ないかぎり、 TELNET プロトコルを使 用しないで、 SSH プロトコルを用いて 公開鍵方式を用いたユーザー認証によ る端末ログインをするほうがよいだろ つ。 FTP (File Transfer protocol) FTP とは、ファイル転送のためのプ ロコトルである。 FTP プロトコルでは、 通常の場合、 2 つの接続が必要となる。 これらの 2 つの接続は以下の通りであ 注 2 もちろん、 TELNET で管理者権限に su した場合などは、もっての他である。 る。 2001 NO. 7 BSD magazine 121

9. BSD magazine No.7 プログラミングをはじめよう! ; ファイアウォールを考える

2 アイアウォりレを考える ・サーバー環境 % make server # make server . 1nsta11 ・クライアント環境 % make clients # make clients . install ・ライプラリ環境 ( クライアント側は インストールしておいたほうがよい ) ( スタティックリンクライブラリ ) % make 1ib # make 1ib . install ( 共有ライプラリ ) % make shlib # make shlib . install SOCKS サーバーの設定 設定ファイル SOCKS サーバーの設定は /etc/socks5. conf で行う。リスト 1 は、内部ネット ワークからインターネットへの接続を 行うための設定例である。図 1 のよう なネットワークでは、この設定をベー スとして、各サイトの環境に合わせて ルールを適用してゆくことになる。 インターフェイス 複数のネットワークとの接続を持っ 場合は interface 行で、ネットワークが どのインターフェイスの先にあるかを 設定する。 interface に続いて、ホスト / ネットワークアドレス、ポート番号、 インターフェイスアドレスの順で指定 する。リスト 1 では、 192.168.2.0 / 24 、 192.168.3.0 / 24 は内部ネットワークと し、その他のネットワークは、インタ ーネット側に存在することを指定して いる。 アクセスコントロール アクセスコントロールは permit/deny 行で行う。デフォルトでは、すべての 中継は禁止されており、許可したいル ールを permit 行で指定する。明示的に 禁止したいルールは deny 行で指定す る。 permit/deny に続いて、条件となる 7 つの項目を指定する。 ・コマンド ( 通信の種類 ) k: GSS-API u: ユーザー名とパスワードによる n : 認証なし ・認証方法 t: traceroute p: P1ng u : UDP b: bind C : connect ・始点アドレス [ 1 , 1024 ] : 1 ~ 1024 サービス名またはポート番号 ・始点ポート 始点アドレスと同じ 点アドレス client. example.jp: ホストそのもの レス 192.168. : 192.168. で始まる IP アド 192.168.12. Ⅳ 255.255.255.0 : ネット べて . example ・ jp: example.jp ドメインす ( 1024-6000 ) : 1025 ~ 5999 始点ポートと同じ ・終点ポート マリスト 1 socks5. conf ・ユーザーリスト ユーザー名 - " はすべてにマッチすることを意味 する。また設定は上から順に読まれ、 最初にマッチしたものが有効となる点 に注意する。 SOCKS サーバーの起動 Iibsocks5. conf で行うか、または環境変 SOCKS クライアントの設定は / etc / SOCKS クライ、とトの設定 set SOCKS5_BINDINTFC 192.168.2.1 ( 設定ファイル ) socks5 —b 192 .168.2. 1 ( コマンドライン ) もしくは設定ファイル内で設定する。 には、コマンドラインで指定するか、 トワークインターフェイスを限定する また、 SOCKS のために割り当てるネッ のユーザーで起動するなど調整を行う。 セキュリティを高めるには、 root 以外 TCP の 1080 番で待機状態となる。より サーバーが起動すると、標準では らは単純に実行するだけである。 インストールされ、コマンドラインか きる。標準では /usr/local/bin/socks5 に ト ) と inetd 経由で動作させることがで 受け持つ。デーモンモード ( デフォル SOCKS サーバーは socks5 コマンドが auth interface interface interface permit permit 192.168.2. 192.168.3. 192 .168.2. 192.168.3. 192.168.2. 1 192. 168.2. 1 a. b . c . d 2001 No. 7 BSD magazine 135

10. BSD magazine No.7 プログラミングをはじめよう! ; ファイアウォールを考える

フロジェクト短信 KDE 短信 KDE 20.1 リリース るというのは嬉しいですね。具体的な手順や設定について 雑になっていますが、フォントのふちが滑らかに表示され Qt にもパッチを当てなければならないなど、多少手順が複 るようになりました。 XFree864.0.2 をインストールして、 なんとなんと、 KDE でアンチェイリアスフォントが使え KDE でアンチェイリアス ! ? ん。 を読む頃には KDE2.1 がリリースされているかもしれませ Beta2 がリリースされていますので、読者の方がこの記事 なお、この原稿を書いている時点ですでに KDE 2.1 チのページをチェックしてみてください。 よっていくつかパッチが必要ですので、時々 JKUG のパッ いても改良が進んではいますが、日本語で使う場合は例に りの互換性問題がいくつか解決されています。国際化につ くつか修正されたほか、 KMail や KNode のネットワーク回 す。バグフィックスについては、クラッシュするバグがい すが、 KDE 2.0.1 にはちゃんと含まれるようになっていま ッセージは残念ながら KDE2.0 には間に合わなかったので セージの翻訳の追加と、バグフィックスです。日本語のメ た。このリリースでの主な変更点は、ドキュメントやメッ の 2000 年 12 月 5 日にはもう KDE2.0.1 がリリースされまし KDE2.0 がリリースされたばかりですが、その約 1 か月後 http : //www.xfree86.org/Nkeithp/render/ http://dot.kde.org/976188122/ は、次の web ページを参照してください。 アンチェイリアスはすでに可能になっています。ただし、 わっているわけではないようですが、テキスト描画の際の 透明に見せる機能を追加するもので、まだ完全に実装が終 すでに表示されている色と混ぜ合わせて表示することで半 独自の拡張が含まれています。これは画面に描画する際に XFree86 4.0.2 には X Rendering Extension という XFree86 使えば大丈夫です。 ら取り出すように書いてありますが、今は XFree86 4.0.2 を 発している最中に作成されたものなので XFree86 を cvs か このページは Keith Packard 氏カ Render Extension を開 日本 KDE ューザ会幹事 咼木ラ享司 / - J Ⅲ加 g / j-takagi@kde.gr.jp にアップグレードしておくと良いでしよう。 バイナリの両方のレベルで互換性がありますので、最新版 解消されたりしています。 Qt2.2.1 以降のものはソースと れたり、日本語印刷 (postscript 出力 ) に関する不具合が 取り込まれて、日本語フォントの自動選択機能が改良さ となっています。 Qt 2.2.4 には JKUG の井上さんのパッチが すが、バグ修正などが行われて、現在の最新版は Qt 2.2.4 KDE 2.0.1 がリリースされたときには Qt2.2.2 だったので Qt 2.2.4 リリース 加してみてはいかがでしようか Accessibility ML も始まりましたので、興味のある方は参 て一歩前進ですね。 KDE project の本家のほうでは KDE からも利用できるようになれば、 AccessibiIity に関し たりもできるようにするとのことです。これが実現して ドバックしたり、プログラマが音声でユーザーをガイドし トの読み上げ機能によってユーザーの入力を音声でフィー るようにしようとしていることが発表されました。テキス 声認識工ンジンを使って Qt のアプリケーションを操作でき さて、このたび IBM と TrollTech が組んで、 ViaVoice の音 のはご存知の方も多いでしよう。 Wind 。 ws でもユーザー補助という形でサポートされている 声入力をサポートしたり、といったことで実現します。 を大きく表示したり、あるいは手カ坏自由な人のために音 を表します。具体的には、目が不自由な人のために文字 わち、体の不自由な人でもコンピュータを操作できること、 すが、ユーザーインターフェイスの分野では誰でも、すな Accessibility を単純に訳すと「アクセスできること」で AccessibiIity とは になります。 アプリケーションでもフォントのアンチェイリアスが可能 を行うのは Qt の仕事なので、 Qt を修正するだけで KDE の ばなりません。 KDE の場合は、 x の API を呼び出して描画 ライプラリの API を使って描画を行うように修正しなけれ クライアント側のアプリケーションも新たに導入された Xft 232 BSD magazine 2001 NO. 7