連載 / IJN Ⅸの玉手箱ー① 張フォーマットを利用可能にするかどうかは、ソースパッケー ジのコンパイル時に決まります。 BSD/OS に付属する tcp- wrappers と FreeBSD のバイナリ・パッケージは、刻長フ ォーマットを利用するようにコンパイルされます。 spawn" は長フォーマットに特有のキーワードなので、拡張 フォーマットを利用しないようにコンパイルした工竟では、 のキーワードを指定してはいけません ( 指定するとエラーにな こでは基本的なフォーマットを中心に説明するの ります ) 。 で、拡リ長フォーマットの詳細については、 tcp-wrappers に 伺属のオンライン・マニュアル hosts-options(5) などを参照 してください。 キーワードによるキ諚 これらのフィールドのうち、デーモンとホストのリスト についてはキ幇朱なキーワードが用意されています。これら のキーワードをうまく使うと、効率よくアクセス匍脚デー タベースを記することができます。詳しくは前出のオン ライン・マニュアルをご覧いただくとして、知っておく と便利なのは、、 ALL" と、、 EXCEPT" という 2 つのキー ワードです。 ALL は、、すべて " を表すキーワードです。たとえは、 以下のように指定すると、、、すべてのサービス " と、、すべ てのホスト " が対象となります。 ALL : ALL 一方、 EXCEPT は、、例外 " を表すキーワードで、リス トから特定のサーピスあるいはホスト ( のリスト ) を除く ために使います。たとえは、ホストのグループとしてドメ イン名を指定する際、特定のホストを除きたければ以下の ように指定します ( 誌面の都合上、で折り返していま . f00. co. jp EXCEPT baystars . f00. co. lions . f00 . co ・ jp この例では、 foo. co. jp に属するホストのうち、 bay- stars. f00. co. jp と lions. f00. co. jp 以、タ ) ホストが対象と なります。 言聢時のも意点 tcpd がアクセス制御データベースを参照する際には、 、、アクセスのあったサービス " と、、リモートホスト " の組を キーとして hosts. allow および hosts. deny ファイルを検 索します。検索の手順は以下のようになります。 98 1. hosts. allow ファイルをク頁から検索し、マッチする工 ントリがあれはリモートホストからのアクセスが許可さ れ、対応するサーバー・プログラムを起動する。 2. hosts. deny ファイルをク曰頁から検索し、マッチするェ ントリがあれはアクセスは拒否される。 3. いすれのファイルを検索してもマッチしない場合はアク セスか許可されているとみなし、対応するサーバー・プ ログラムを起動する。 したがって、アクセス制御データベースを設定する際 は、以下の点に注意してください。 ・ hosts. deny で明示的に拒否しないかぎり、リモートホ ストからのアクセスか第忍められる。 ・ hosts. allow と hosts. deny の両方にマッチするエント リがある場合は hosts. allow が優先されるため、アク セスか認められる。 より安全な設定にするには、 hosts. deny ですべてのア クセスを拒否し、許可するものだけを hosts. allow に言当 するのがいいでしよう。この方針に従うと、 hosts. allow と hosts. deny はたとえは以下のようになります。 ・ hosts. allow rlogind,rshd,telnetd: 192 . 168 . 1 . ftpd: nullpc ,somepc ・ hosts. deny ALL : ALL ローカルホストが 192.168.1.0 というネットワークに 接続されており、 nullpc と somepc4 も同一ネットワーク に属しているものとします。このように設定しておくと、 同しネットワークに属するホストからの rlogin や rsh 、 telnet と、 nullpc および somepc からの ftp アクセスだ けか許可され、それ以外はすべてアクセスを拒否します。 ログファイルの言諚 アクセスの許可 / 拒否にかかわらす、 tcpd を利用した 場合は syslog デーモンにアクセス言当求がメッセージとし て送られ、 syslog の設定に応してログファイルに保存さ れます。 BSD/OS に付属する tcpd では /var/log/daemon. 1 。 g にログが残りますが、 FreeBSD のバイナリ・パッケー 4 ホスト情報の設定にもよりますが、ドメイン名を設定している場合は FQDN て才彳定したはうがいいでしよう。 UNIX MAGAZINE 1999.2
連載 / UN Ⅸの玉手箱 - ① 図 5 テフォルト・ティレクトリ以外のサーバー・プログラムを指定する場合 finger stream tcp 変史後 finger stream tcp nowait nobody /usr/local/libexec/tcpd fingerd —s nowait nobody /usr/local/libexec/tcpd /usr/local/libexec/in. fingerd 制御データベースて軻も指定しなけ川ま従来の inetd と同 し重川をするので、サンプルファイルを /etc/inetd. conf にコピーするのがてっとり早いでしよう。 また、第 7 フィールドのサーバー・プログラム名を絶 対パスて指定すると、デフォルト・ディレクトリ以外にあ るプログラムを実行できます。たとえは、 GNU finger の ように、 OS に伺属する fingerd とは異なるバージョンの finger サーバーを導入する場合を考えてみましよう。 FreeBSD で提供されている GNU finger のバイナ リ・ノヾッケージ (gnu-finger-l. 37. tgz) をインストール すると、従来の fingerd に相当するサーバー・プログ ラムは /usr/local/libexec/in.fingerd となります。これ を /usr/libexec/fingerd にコピーしてしまう方法もあり ますが、できるだけファイルの構成を変えたくなけれは、 /etc/inetd. conf の finger サービスに対応する行の第 7 フィールドを、図 5 のように変更します。 /etc/inetd. conf を変更したら、それを inetd に反映 させなけ川まなりません。 inetd は、 SIGHUP シグナル を受け取ると /etc/inetd. conf の内容を読み込みなおすの で、マシンを起動したくなければ以下のように実行しま アクセス制御データベースの設定 bash# ■ bash# kill -HUP 130 130 ? ? IWs 0 : 00.00 (inetd) bash# ps ax ー grep inetd す。 96 を拒否するサービスとホストの組をそれぞれ言当します。 ーピスとホストの組、 hosts. deny ファイルにアクセス れます。 hosts. allow ファイルにアクセスを許可するサ アクセス制御データベースには 2 つのファイルが用いら サーピスとホストの組を指定します。 タベースを設定し、アクセスを許可 ( あるいは拒否 ) する か決まったら、次は tcpd が参照するアクセス制御デー /etc/inetd. conf を変史して tcpd を適用するサーピス これらのファイルは、 BSD/OS に付属する tcpd であれ は /etc 、 FreeBSD てオ是供されるバイナリ・パッケージで であれß/usr/local/etc に作成します。両方とも存在し なかったり空の場合はアクセス制彳卸がおこなわれす、従来 の inetd と同じ重川乍になります。 アクセス制御の対象はホスト単位だけでなく、ネット ワークやネットグループなどのグループ単位て指定するこ とができます。これらはテキスト形式のファイルで、以 下に示すフォーマットに従って 1 行ずつ工ントリを書き ます。 d 佖 emo れ」な信 client-list [ : shell-command] 各フィールドの意味は以下のとおりです。 ・ d 佖 emo れ」な アクセス制御の対象となるデーモンを指定します。 でいうデーモンとは、サーバー・プログラムのプログラ ム名を指します。 /etc/inetd. conf の第 7 フィールドに 絶対パスで指定した場合も、 こにはプログラム名のみ を言当しなけれはなりません。絶対パスて指定すると、 tcpd がアクセス制御データベースを検索してもマッチ しないので注意してください。複数のデーモンを指定す るには、以下のように空白またはカンマで区切ります。 rlogind,telnetd ・ c 〃 e れた〃 アクセス制御の対象となるホストを指定します。ホスト 単位でもグループ単位でも指定でき、ホスト単位の場合 は該当するホストのホスト名か IP アドレスを言当しま す。 れ ullpc , somepc , 192.168.1.12 グループ単位での指定には 3 つの去があり、ネットワ ークかドメイン、またはネットグループを記主します。 ネットワークを指定する場合はドット表記でネットワー ク番号を言当します。このとき、ホスト番号の部分は省 UNIX MAGAZINE 1999.2
U N Ⅸの玉手箱 null tcp—wrappers と NIS サーバーの設定 前回は、ホスト名と IP アドレスを対応づけるための 仕組みとして、ローカルな /etc/hosts ファイルと NIS 、 DNS の概要、クライアントとしての設定について説明し ました。さらに、リモートホストからのアクセスを制彳卸す るための方法として、 inetd カ壻理するサーピスに対する アクセス制御の設定などを紹介しました。 オリジナルの /etc/inetd. conf ファイルをカスタマイ ズすることにより、あるサービス ( ポート ) に対応するサ ーバー・プログラムを起動しないように設正できます。し かし、この方法では、あるサービスを提供する / しないと いう単純な制御しかおこなえません。 これに対し、あるサービスへのアクセスをホストごと に制御する機能を、従来の inetd を拡張するかたちで実 現する方法がいくつか提案されており、 BSD/OS には tcp-wrappers というパッケージが組み込まれていま す。 FreeBSD では OS にバンドルされてはいないものの、 バイナリ・パッケージを利用すれは簡単にインストールで きます。そこで、はしめに前回の続きとして tcp-wrap- pers の概要と設定について説明します。 後半では、 NIS サーバーの設定方法を紹介します。 れまでにも述べたように、ネットワークに接続されたマシ ンが数台を超えると、アカウントやホスト情報の管理はか なり煩雑になってきます。 NIS を導入すれは、 NIS サー バーがこれらの↑帯にを集中管理するので、更新の手間を軽 減できるだけでなく、設疋ミスの可能性を減らし、情報の 整合をより確実に保つことができます。 残念ながら、 BSD/OS には NIS サーバーに必要なフ ログラムなどが付属していないため、今回は FreeBSD を 対象に NIS サーバーの設定去を説明します。 92 tcp wrappers inetd と、 tcp-wrappers は、大雑把に表現すると、 inetd か管理するサー ・プログラムとの仲介役として 機能し、サーバー・フログラムの起動を制御する " プログ ラムです。 inetd は各サーバー・プログラムを直接起世す、最 初に tcpd を起動します。 tcpd はリモートホストのホス ト名 ( または IP アドレス ) をもとに独自のアクセス制御 データベースを参照し、許可されているホストなら対応す るサーバー・フログラムを起動し、そうでなけれはアクセ スを拒否します。ちょうど tcpd が inetd を包み込むよ うなかたちて機能するため、、、 wrapper" と名付けられて います。 たとえは、リモートホストであるホスト A およびホス ト B が、ローカルホストに対して ftp コマンドを実行した としましよう。オリジナルの inetd は、 /etc/inetd. conf で ftp に対応する行をコメントアウトしていないかぎり、 どちらのホストからのアクセスも許可しサー ノヾーー・、フロ グラムである ftpd を起動します ( 図 1 ) 。この場合、ホス ト A とホスト B にかぎらす、すべてのリモートホストか らの ftp リクエストを受け付けます。もちろん、 ftpd の 言立によって特定ユーサーからのアクセスを拒否すること はできますが、すくなくとも ftpd は起動されます。 一方、 tcp-wrappers を導入し、ホスト A からの ftp リクエストのみを許可するようにアクセス制御データベー スを設定しておくと、ホスト B からの ftp リクエストは拒 否さ ftpd は起動されません ( 図 2 ) 。さらに、 syslog デーモンやメールなどを利用してアクセスの言当求を残すこ UNIX MAGAZINE 1999.2
連載 / UN Ⅸの玉手箱ー① 図 6 リモートホストからのアクセスに対して外部コマンドを実行する言聢 spawn (/usr/local/bin/safe-finger @%h ー /usr/bin/mail telnetd: somepc -s %d-%h root ) & 略し、最後はドットで終っていなけ川まなりません。以 下の例は、 IP アドレスが 192.168.1. * というパターン にマッチするすべてのホストを意味します。 192 . 168. 1 . サプネットを利用している環竟で、ネットマスクまて厳 密に指定したけれは、ドット表記によるネットワーク番 号とネットマスクをスラッシュで区切ります。たとえ ば、 192.168.1.0 というクラス C のネットワークがサ プネットにうリされており、ネットマスクの長さが 28 ビットであったとしましよう。 192.168.1.16 というサ プネットを指定する場合は以下のようにしますにの例 では、 192.168.1.17 ~ 192.168.1.31 のホストが対象と なります ) 。 192.168.1.16 / 255.255.255.240 ただし、ネットワーク番号だけを指定するときとは異 なり、ネットマスクを組み合わせて指定する場合はホ スト部分を省略せすに 0 を指定します ( たとえは、 、 172.16.1.0 / 255.255.255.0 " など ) 。 次に、ドメインて指定する場合は対象となるドメイン名 を記します。ドメイン名の地頁にはかならすドットを ・ shell-command ホスト " が対象となります。 この例では、 project というネットグループに属する @proj ect ループの名前のう頁に、、@" を付けます。 最後に、ネットグループを指定する場合は、ネットグ すべてのホスト " が対象となります。 このように指定すると、、、 foo. co. jp ドメインに属する . f00 ・ co ・ JP 付けなければなりません。 UNIX MAGAZINE 1999.2 あったとします。 たとえば、 hosts. deny ファイルに以下のような言当が します。 アクセスに対して外部コマンドを実行したい場合に指定 このフィールドはオプションで、リモートホストからの telnetd: somepc に適当な値に置き換えられます。、、 % d " はアクセスの 、、 % d " や、、 % h " などの変数は、外部コマンドの実行時 ウンドで実行することを未します ) 。 定します ( 最後の、、 & " は、外部コマンドをバックグラ で、それに続けて実行したいコマンドを括弧で括って指 spawn " は外部コマンドを実行するためのキーワード ます。 宛にメールしたければ、この行を図 6 のように変更し がログインしているのかを finger で調べて結果を root たアクセスか拒否されます。これに対し、 somepc に誰 この場合、 somepc というホストからの telnet を使っ あったサービスに対応するサー ・プログラムの名 前を意味し、図 6 の例であれば、、 telnetd" という文字 列で置き換えられます。、、 % h " はリモートホストのホ スト名で置き換えられます ( ホスト名が分からない場合 は IP アドレスになります ) 。これ以外の変数の不亟頁と 詳しい意味については、 tcp-wrappers に付属のオンラ イン・マニュアル hosts-access(5) などを参照してく ださい。 なお、図 6 の例で使われている safe-finger は tcp- wrappers にイ寸属するコマンドで、 finger サーノヾ 対してより安全にアクセスできるような工夫か施されて います 3 。 tcpd から finger を実行する場合は、オリジ ナルの finger の代わりに safe-finger を使うことか推 奨されています。ただし、リモートホストに対して fin ー ger を実行する場合には設定が必要です。なぜなら、リ モートホストでも tcpd カイ吏われていて、 finger サーヒ、 スに対するアクセスがあったら相手に finger を実行す る設定になっており、こちら側の finger も同様の設定 にしていたら、互いに finger を実行しあって無限ルー プに陥ってしまうからです。 アクセス制卩データベースのフォーマットはバージョンが 新しくなるにつれて手カ功日えられており、基本的なフォーマッ トとは独立した刻長フォーマットとして定義されています。拡 3 BSD/OS では /usr/libexec/tcpd-bin/safe-finger てす。 97
連載 / 遠隔オフィスとの接続 - ⑨ 図 10 anonymous FTP てアクセスした状態 フ言ル [ ) 編集表示、辺シ ' ャンア 0022 オ酬” ) 今ルア ( 当 再読み込み ホーム 図 11 匿名ではない FTP でアクセス ftp & 0n20n 日朝。 meon e 朝圧 0 「のに対するユナ、 名を入力してください someone ユーナ名とハ ' スワードの入力 国← 5 こ叩を ロ X 印刷 セキュリティ 亠一ゴ Network Worki ng Group Request for Comments. 240 〕 0bsoletes 238 , 2200. 2 価 0 1920 18 ユ 1 . 17 , 1720. 1610. 168. 1540. 158. 1 410 1360. 12 , 1250. 128. 1140 , 1130. 1 1 の 183 STD 1 Category. Standards Track INTERNET 日引乢 PROTIDI_ STAtOARß lnternet Archi tecture æard J. Postel ↓ Reynolds Editors September 1998 てくるので ( 図 11 ) 、ユーサー名、、 someone" に対応する パスワードを入力します。 FTP のパスワードは、以下の形式で URL に含めてし まうこともできます。 ftp : / / 社 se 卿田 me 挈碼“ .10 司@dom ルれ ame / 五 / e 叩ん しかし、パスワードがクリアテキストのまま Web プラ ウサに表示されたり、ドロップダウン・リストに保存され るのはかなり婦寺ちか懇いので、通常は上記の形式を使わ ないはうがよいでしよう。 “ ) 。項目を含む URL を使うのは、 anonymous FTP で電子メールアドレスを指定するときだけにとどめ ておくほうか無難です。 Status of this M 部に ュメン 引き継がれており、 Communicator でも lnternet Ex- plorer でも FTP が使えます。 ですから、本社側で FTP サーバーを起動しておけは、 適隔オフィス側では Web プラウサの機能を使って FTP でファイルを取得できます。 おなしみの、 ftp://dom ルれ ame / 五 / e 叩観ん という形式の URL を指定すると、 anonymous FTP に よるファイルのダウンロードがおこなわれます。たとえ は、図 10 はインターネット上で公開されている anony- mous FTP サイトのファイルに、 Web プラウサでアク セスした状態です。 ただ、 anonymous ( 匿名 ) ということは、自社の遠隔 オフィスのユーサーだけでなく、外部のユーサーでもファ イルを取得できてしまうので、外部に公開したくないファ イルに対しては適用できません。 FTP 匿名がいけないなら、匿名ではない FTP を使えばいい と思うのは自然でしよう。 Web プラウサから匿名ではな い FTP にアクセスするには、 ftp://username@dom ルれ佖 me / 五 / e 叩ん という形式の URL を指定します。たとえは、 some— one" というユーサー名で、 www.ietf.org ' ヘアクセスす るには、 URL は次のように指定します。 ftp://someone@www.ietf.org/ 匿名ではない FTP の場合は、続けてパスワードを訊い ☆ 今回は、遠隔オフィスと接続する方法の 1 っとして、 Web の利用をとりあげました。ま Web プラウザを 使ったファイル転送にいくつかの手段があることもみてき ました。 次回は、 Web のアクセス制限の機能と、 Web サー に Apache を使った場合の設定について紹介します。 ( あらい・みちこ ASTEC) 51 UNIX MAGAZINE 1999.2
連載 / IJN Ⅸの玉手箱ー① 図 7 tcpd のアクセス言彖 Dec 17 19 : 55 : 22 mypc rshd [ 14918 ] : connect from herpc Dec 17 19 : 48 : 12 mypc te1netd[14832] : connect from somepc Dec 17 18 : 09 : 07 mypc ftpd [ 14421 ] : refused connect from herpc Dec 17 15 : 22 : 52 mypc ftpd [ 10418 ] : connect from nullpc ジで提供される tcpd の場合、 syslog デーモンの設疋フ ァイル (/etc/syslog. conf) を修正しないとログは残りま せん。 syslog については機会を改めて詳しく紹介する予定な ので、今回は tcpd のアクセス言当求をファイルに残す手順 だけを簡単に紹介します。 1. ログファイルを決める ます、アクセス記録を保存するログファイルを決めま す。ここでは、、 /var/log/tcpd. log" にします。 2. 空のログファイルを作成する touch コマンドを使って、空のログファイルを作成し ます。 bash# touch /var/log/tcpd. 10g bash# ■ 3. /etc/syslog. conf を修正 syslog の疋ファイル /etc/syslog. conf をエデイタで 編集し、ファイルの地頁に以下の 1 行を加えます。 /var/log/tcpd. 10g auth . info 4. syslog デーモンに変更を反映させる syslog デーモン (syslogd) に SIGHUP シグナルを送 ると、設定ファイルを読み込みなおします。 syslogd の プロセス ID は /var/run/syslog. pid に言当求されてい るので、以下のように実行します。 bash# kill -HUP 'cat /var/run/syslog. pid' bash# ■ 以上の作業をおこなえば、 tcpd を利用しているサー ピスのアクセス記録が /var/log/tcpd. log に残ります。 FreeBSD と BSD/OS とではメッセージの形式か彳妙 に異なり、 FreeBSD のログファイルの内容は図 7 のよう になります。あとは定期的にログファイルを詩ヾ、おかし なアクセスがないかどうかをチェックします。 このほかにも、 tcp-wrappers のパッケージには、ア クセス制御データベースのチェック・プログラムである tcpdchk や、与・えられたサービスとホストの組に対して UNIX MAGAZINE 1999.2 アクセスの可否を調べる tcpdmatch といったフグラム が用意されています。これらのプログラムは、 FreeBSD では /usr/local/sbin に、 BSD/OS では /usr/libexec/ tcpd-bin の下にあります。詳しい使い方については、オ ンライン・マニュアル tcpdchk(8) や tcpdmatch(8) な どを参照してください。 なお、 tcp-wrappers と似たような機能を実現するソフ トウェアとして、 xinetd と呼はれるパッケージがありま す。 xinetd は tcp-wrappers と違い、 inetd そのものを 置き換える去がとられています 5 。 BSD/OS には tcp-wrappers が付属しているため、今 回は tcp-wrappers のみを紹介しましたか : 両者の機能面 での上交については本誌の「転ばぬ先のセキュリティ TCP wrapper と xinetd 」 [ 1 ] に詳しく書かれています。 興未のある方は参照してください。 NIS サーバーの設疋 これまでにも、 NIS て提供されるユーサー情報やホスト 情報などを扱うガ去は紹介しました。しかし、とりあげた のは NIS の情報を利用する側、つまり NIS クライアント としてマシンを重川乍させるための設定だけでした。 この節では、 NIS の清報を提供する側、つまり NIS サ ーを構築するための設定を紹介します。マシンが 2 ~ 3 台しかなく、ユーサーが自分 1 人だけという自宅のネ ットワークのような竟だとあまり有効ではないかもしれ ませんが、マシンがそれなりに増えてくると、 NIS サー バーで情報を集中管理することのありがたみが分かるでし NIS サーバーには 2 種類あり、情報のオリジナルデ ータをイ尉寺する、、マスター (master) サー " と、マ スターサーバーからコピーされたデータをもつ、、スレープ (slave) サーバー " に分かれます。 5 FreeBSD には、 xinetd のノヾイナリ・ノ、ツケージ (xinetd-2.2.1. tgz) が用意されています。 99
連載 / IJN Ⅸの玉手箱ー① 図 3 tcp-wrappers のインストール (FreeBSD) bash# pkg—add —v /tmp/tcp—wrappers—7.6. tgz Requested space: 224392 bytes, free space : 136899584 bytes in /var/tmp/instmp. R26578 extract : extract : extract : extract : extract : extract : extract : extract : extract : extract : extract : extract : extract : extract : extract : extract : extract : extract : extract : extract : Package name is tcp—wrappers—7.6 CWD to /usr/local /usr/local/include/tcpd. h /usr/local/libexec/tcpd /usr/local/sbin/tcpdchk /usr/local/sbin/tcpdmatch /usr/local/bin/safe—finger /usr/local/bin/try-from /usr/local/lib/libwrap. a execute ' ranlib /usr/local/lib/libwrap. /usr/local/lib/libwrap. so . 7.6 execute '/sbin/ldconfig —m /usr/local/lib' /usr/10ca1/man/man3/hosts—access . 3. gz /usr/10ca1/man/man5/hosts—access . 5. gz /usr/IocaI/man/man5/hosts—options.5. gz /usr/10ca1/man/man8/tcpd.8. gz /usr/10ca1/man/man8/tcpdchk.8. gz /usr/10ca1/man/man8/tcpdmatch.8. gz /usr/local/etc/inetd. conf . wrapped. sample CWD t 0 Running mtree for tcp—wrappers—7.6. mtree —U —f + MTREE—DIRS —d —e —p /usr/local Attempting to record package int0 /var/db/pkg/tcp-wrappers-7.6. Package tcp-wrappers—7.6 registered in /var/db/pkg/tcp—wrappers—7.6 bash# 日 BSD/OS の場合、いくつかのサービスに対して tcpd を起動する言定があらかしめ /etc/inetd. conf にⅱ当され ています。しかし、 OS のインストール時にはアクセス 制御データベースか存在しないため、そのままでは従来の inetd と同じ重川をします。したがって、 BSD/OS でも アクセス制御データベースを作成する必要があります。 以降では、それぞれの設定を順に説明します。 /etc/inetd. conf の設定 inetd の成疋ファイル /etc/inetd. conf には、どのサー ビスに対して tcpd を起動するのかを指定します。具イ勺 には、 /etc/inetd. conf の第 6 フィールドと第 7 フィー ルドを書き換えることにより、 tcpd 経由てサーバー・プ ログラムを起動するように設定します。 オリジナルの inetd を利用する場合、第 6 フィール 94 う意味でした。 ドは、、サーノ、 フィールドは、、 tcpd のパス名 ( 絶対パス ) " 、第 7 フィー これに対し、 tcpd を利用する場合、第 6 フィールドは、、サーバー・プログラム夫行時の引数 " とい ・プログラムのパス名 ( 糸寸パス ) " 、第 7 ルドは、、 ( アクセスカ午可されていれは ) tcpd か起動づ - る サーバー・プログラムの名前と引数 " という意味に変化し ます。また、 tcpd ではコンパイル時に、、サーバー・プロ グラムが置かれているディレクトリ " が定義されています にこでは、、、デフォルト・ディレクトリ " と呼ぶことにし ます ) 。第 7 フィールドのサーバー・プログラムをプログ ラム名のみで指定すると、サーバー・プログラムはデフォ ルト・ディレクトリにあるものとして扱われます。 この性質を利用すると、あるサービスに対して tcpd を 適用するための設定に 2 不頁のガ去カ硬えます。具ー勺に は、それぞオ LJ ユ下のようになります。 サーパー・プログラムを tcpd で置き換える デフォルト・ディレクトリが、オリジナルのサーバー プログラムが置かれているディレクトリにこでは、、、オ リジナル・ディレクトリ " と呼ぶことにします ) とは異な る場合、このガ去を使うと /etc/inetd. conf をまったく変 更する必要がありません。 デフォルト・ディレクトリが /usr/local/libexec で、 UNIX MAGAZINE 1999.2
ファイアウォールの作り方 白崎博生 す。しかし、設定ファイルの言当を間違えると、外部から - 透過機能の実装 ( その 3 ) もファイアウォールの存在を意識せすに侵入される可能性 があります。 仕様上の制限と使用上の注意 疋ファイルの言当ミス " は透過機能に限った間題では 前回までで、ファイアウォールに透過機能を実装しまし ありませんが、する際は十二分に注意してください。 た。今回は、透機能を使うときの注 . 意事項を説明します。 ping と traceroute はイ吏えない ないはずの IP アドレスが充れる ときどき、ファイアウォールの内側のユーサーからこん 通常、外部と内部のネットワークを接続するルータ上で なことを言われます。 IP forwarding の機能を停止すると、内部ネットワーク 「 ( ファイアウォール外部の ) ホストにアクセスでけへん に流れる IP'S ケットの送受信アドレスには、内部ネット で。 ping の応答はちゃんと返ってくるから生きてるとは ワークの IP アドレスしか書かれていないはすです。とき 思うんやけど。もしかして、ファイアウォールがおかしい どき、誰かが IP アドレスを付け間違えたりして外部の IP んとちゃう ? 」 アドレスか書かれたバケットか流れることはあっても、そ 前々回に説明したとおり、ファイアウォールの内部か のアドレスで通信がおこなわれることはありません。 ら外部に対して p ⅲ g を実行すると、ファイアウォール・ しかし、ファイアウォール上で透過機能をイ月すると、 ホストがそれに応えてしまい、意図どおりの結果か得られ 送受信アドレスに外部ネットワークの IP アドレスか書か ません。 れたバケットがファイアウォールの内側のネットワーク p ⅲ g の出力を注意深く見ると、 IP アドレスが違って に流れます。しかも、通信もできます。そこで、ファイア いることに気づくはすですが、多くのユーザーはそんなと ウォール内部で tcpdump を実行すると、、外部からパ ころは見ません。さらに、デフォルトでは IP アドレスを ケットカヾ充れてきている " かのような痕跡を発見してびっ 表示しない ping コマンドもあるので、普通のユーザーは くりすることがあります。 ますますだまされてしまいます。たとえば、 BSD/OS や 逼機能のイ督はみを十分に理解して、内部のユーサーか FreeBSD に付属する ping では図 1 ー a のように IP アド ら「フィルタリングに穴がある」という報告を受けたとき レスか表示されますが、 solaris の ping は、、生きてるで " も、きちんと説明できるように準備しておいてください。 のメッセージしか表示しません ( 図 1 ー b 。オプションを指 ユーサー認証を忘れると大変 定すると BSD と同様な表示になります ) 。 茴機能は、外向きのアクセスにも内向きのアクセスに これを見たユーサーは、 も使用できます。 ファイアウォールの存在を意識せずに、ファイアウォ ールの内部から外部へアクセスできるのはたしかに便利で ping は通る ↓ 22 UNIX MAGAZINE 1999.2
連載 / IJN Ⅸの玉手箱ー① 図 1 inetd のみを用いた場合 ホスト A FreeBSD の場合、 OS 本体にはイ寸属しておらす、バイ ナリ・パッケージとして提供されています。そこで、まず はバイナリ・パッケージを FreeBSD マシンにインストー ルするところから始めましよう。 バイナリ・パッケージのインストール tcp-wrappers のノヾイナリ・ノヾッケージは FreeBSD の CD-ROM に鸞求されています。ファイル名は tcp- wrappers-7.6. tgz です。 CD-ROM の構成によって多 少違うかもしれませんが、 CD-ROM を /cdrom にマウ ントした場合は /cdrom/packages/All に置かれている 、はすです 1 。 〇 バイナリ・パッケージは FreeBSD 関連の FTP サイ トからも入手できます。国内であれは、 ・ ftp://ftp[1-6].jp.freebsd.org/pub/FreeBSD/ packages-stable/AII/ などにあるので、 FreeBSD の CD-ROM が手許にない 場合はこちらから入手するといいでしよう。 こでは、ノヾイナリ・ノ、ツケージを / tmp に置いたこと にします。インストールは、バイナリ・パッケージのイン ストーラである pkg-add を実行するだけで自重加勺におこ なわれます。図 3 のように、 、、一 v " オプションを付けると ともできます。 インストールの様子か詳しく表示さプログラム・ファ tcp-wrappers の最新バージョンは 7.6 です。国内で イルのほか、ライプラリやオンライン・マニュアルなどが は、以下に示す FTP サイトなどからソースパッケージ どこに置かれるのかが分かります。 (tcp-wrappers-7.6. tar. (z) が入手できます。 以 E ぞインストールは完了です。しかし、このままの状 ・ ftp://ftp.jpcert.or ・ jp/pub/security/tools/ 態ではインストール前と何も変わりません。 tcpd の機能 tcp-wrappers/ を利用するには、すくなくとも以下の設定が必要です。 ・ ftp://ftp.win.or ・ jp/pub/network/security/ ・ (inetd カ甘是供する ) どのサーピスに対して tcpd を適 tcp-wrappers/ 用するか。 ・あるサービスに対して、 tcpd をどのように動作させる BSD/OS に付属の tcp-wrappers は、ノヾージョン 7.3 をもとに BSD/OS 独自の拡張が施されたものです。具 ー勺には、、、 nolog" および、、 exec" というオプションか 前者は inetd の設定ファイルである /etc/inetd. conf 加されています。詳しくは、 BSD / OS のオンライン・マ を編集し、特定のサービスに対して tcpd を起動するよう ニュアル hosts-options(5) などをご覧ください。機育顎勺 に変更します。後者は tcpd が参照するアクセス制御デー には肄 i バージョンとあまり変わりませんが、必要であれ タベースを作成し、アクセスを許可 ( あるいは拒否 ) する は・ソースパッケージを入手してインストールするといいで ホストを設定します。 しよう。去斤バージョンは BSD/OS にも対応している 1 これと異なる場合は、 "packages" というサプディレクトリを探してみ ので、すんなりコンパイルできます。 てください。 fingerd i netd ホスト B telnetd 図 2 inetd と tcp-wrappers を組み合わせた場合 ホスト A tcpd ftpd i n etd ホスト B telnetd アクセス制御 テータベース アクセスログ 93 UNIX MAGAZINE 1999.2
連載 / IJN Ⅸの玉手箱ー① して NIS に登録された自分のパスワードを変更できる ようになります。 rpc ・ yppasswdd を経由してパスワードを変更すると、 変更は自動的に master. passwd マップにも反映され ます。 ・ rpc. ypxfrd ・プログラムです。 マスターサーバーで起動するサー マスターサーバーからスレープサーバーに対するマップ のコピーをより高速におこなえます 10 今回はマスターサーバーのみで漣用するのですから、起 動するのは ypserv と rpc ・ yppasswdd だけでいいでし /etc/rc. conf のパラメータ言聢 FreeBSD の場合、マシンのプート時にこれらのデー モンが自重加勺に起動されるようにするには、 /etc/rc. conf ファイルの以下のパラメータを設定します (Solaris では、 これらの設定は不要です ) 。 ・ nis—server—enal)le ypserv を起動するかどうかを指定します。デフォル トの値は、、 NO " になっているため、起動する場合は 、、 YES" に変更します。 ・ nis—server—flags ypserv を起動ける際、オプションが必要であれは指定 します ( デフォルト値は空 ) 。 ・ nis-yppasswdd-enable rpc ・ yppasswdd を起動するかどうかを指定します。 nis-server-enable と同じく、起動ける場合は、、 YES" ・ nis-yppasswdd-flags に変更します。 104 Solaris では ypxfrd です。 10 このデーモンを起動しなくても、マップのコピー自体はおこなえます。 で次のように実行します。 これらのデーモンを手動て起動ける場合は、コマンド行 や rpc. yppasswdd(8) など ) をご覧ください。 いては、それぞれのオンライン・マニュアル (ypserv(8) 各デーモンの起重加叔こ指定できるオプションの講田につ 定します。 rpc ・ yppasswdd 起重加寺のオプション ( があれは ) を孑日 bash# /usr/sbin/ypserv bash# /usr/sbin/rpc ・ yppasswdd bash# ■ NIS サーバーの動作をてっとり早く確認したければ、 ypserv の起動後に ypbind も起動し、 ypcat や YP- match などを使って各マップが正しく引けることをチェ ックします 11 /var/yp/securenets によるアクセス制御 FreeBSD に付属する NIS サーバーのプログラム群に 関しては、 /var/yp/securenets というファイルを用意 しておくと、スレープサーバーや NIS クライアントから のアクセスを制限することができます。具ー勺には、アク セスを許可するネットワーク・アドレスとネットマスクの 組を 1 行すっ指定します。 たとえは、 NIS サーバーの属するネットワークが、、 192. 168.1.0 " であるとすると、ローカルなネットワークからの アクセスのみを許す場合、 /var/yp/securenets の内容は 以下のようになります。 127.0.0. 1 192. 168 . 1 . 0 255.255.255.255 255.255.255.0 最初の、、 127.0.0.1 " で始まる行は、かならす指定しな け川まなりません。さもないと、 NIS サーバーマシンのフ ロセスがルーフ。 / ヾック・インターフェイスを使って ypserv などにアクセスできなくなってしまいます。 ネットグループの設定 NIS サーバーの設定とは直接関係ありませんが、最後に ネットグルーフの設疋について簡単に紹介します。 ネットグループ (netgroup) はホストやユーザーをグ ループ化するための概念で、 /etc/netgroup ファイル で定義します。 ファイルのフォーマットは以下のとおりで、 1 つのネッ トグループに対するエントリを 1 行すっ旨定します。 ネットグループ名メンパーメンパー 1 行に書ききれない場合は、行末に \ ( バックスラ ッシュ ) を付けると次の行に続けることができますが、 FreeBSD では 1 工ントリにつき最大 1 , 024 文字という 11 NIS サーバーになっているマシンで NIS 青報を利用したけ川ま、同 時に N IS クライアントとしてもセットアップしなけれはなりません。 UNIX MAGAZINE 1999.2