inetd (TCP Wrapper)は以下のような動作を行います。
1. クライアントからport110に接続要求
2. /etc/hosts.allowと/etc/hosts.denyの内容を照合し、問題がなければ次へ
3. /etc/inetd.conf に従い、条件に合えばサービスを起動する ※修正
4. 問題があれば起動しません。
クライアントからinetd経由で起動するサービスに接続要求があった場合、TCP Wrapperが要求に応じるべきかどうかを判断してから起動させると言うことになります。TCP経由で呼び出されるサーバープログラムの「セキュリティの要」とも言える仕組みです。
ちなみに Squid や Apache など、常に常駐しているデーモンはそれぞれのconfファイルなどでアクセス制御を行いセキュリティを確保します。また、起動スクリプト書き換えなどで、inetd経由で起動させることも出来ますが、使い方を誤ればサーバーに深刻な影響を与える結果になります。
※修正
ほけーと読み返していたら、肝心なものが抜けていることに・・すみません、、古い記事ですが修正しました。 ちなみにxinetdの場合、 /etc/xinetd.d/ディレクトリ以下でそれぞれの設定ファイルを作成します。
inetdにおけるTCP Wrapperに関する設定は以下のファイルで行います。通常、全てを禁止し、許可するサービスのみ/etc/hosts.allowに記述します。
禁止するサービス
ALL : ALL
ここでは全てを禁止します。デフォルトではこのようになっている筈です。必ずこのように全てを禁止してから、必要なサービスだけを以下のファイルで定義します。
Kernel-1.8~2.0 の頃の古いLinuxディストリビューションでは、デフォルトで全てを禁止するようになっていない時代がありましたが、現在はそんなことありません。
許可するサービス
ALL : 127.0.0.1
in.ftpd : ALL
ipop3d : 192.168.0.
imapd : 192.168.0.
127.0.0.1(自分自身)に対しては全てのサービスを許可
in.ftpdサービスは全てに許可
ipop3dサービスは192.168.0.1~192.168.0.254に許可
imapdサービスは192.168.0.1~192.168.0.254に許可
/etc/inetd.conf に従い、サービスを起動します。inetd.confよりもhostファイルで指定された内容が優先されます。
また、このような方法で 条件に応じて起動プログラムを変更、起動オプションを変更し、使い分けるといった応用設定も可能です。 この辺については、xinetも含め纏めたいと思います。
2000年 2月 作成