スーパーサーバー(xinetd)の設定 |
---|
スーパーサーバーとは、サーバーはクライアントからのサービスの要求を常に受付けれるように、ポートの監視する為プロセスがメモリーとCPUの中に常駐しておかないといけません。
なのでCPUとメモリーが常に消費されていると効率悪いので、ポートの監視を一括で行い必要に応じてデーモンを起動する役割をしてくれるのがスーパーサーバーです。(デーモンのためのデーモンって感じです。)
ここでは”xinetd”のソースからコンパイルしたプログラムを使用します。 Plamo Linux で使用されていたため、inetd の設定ファイルの覚書を追加しました。 |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
1.xinetdとは | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
上でも少し記述しましたが、xinetd とは、各デーモンを監視してCPUとメモリーの消費を抑え、セキュリティとアクセス制御のプログラムです。以下に主な機能を説明します。
● クライアントからのコネクションの要求を受けて、それに対応したデーモンを起動し、コネクションが無い時は停止させる為、CPUとメモリーに無駄が無くなる。 ただし、要求を受けたあとそのつど初期処理が必要なため、スタンドアロンプロセス( xinetd 経由で動作せず、CPUとメモリーに常駐しているプロセス)に比べると処理は遅くなります。 ● xinetd 経由でデーモンを起動していた場合、何らかの理由でそのプロセスが落ちてしまっても、 xinetd が再起動してくれます。 ● IPアドレスによる制御。各デーモンごとにIPアドレスによるアクセス制御ができます。 ● 運用上の問題として、xinetd は、管理者が知らないうちに不必要なサービスを起動している場合があります。 |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
2.xinetdのインストール | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
◆ インストール
まずは xinetd をインストールします。 使用するパッケージとプログラムです。 tcp_wrappers-7.6-18.i586.rpm ( xinetd をインストールする際必要です。) xinetd-2.3.13.tar.gz ※ 2004/10/03 時点での最新のVersionです。 ”xinetd”のソースは以下の xinetd のホームページからダウンロードしてきてください。 http://www.xinetd.org/ ダウンロードしてきたソースを”/usr/local/src”のディレクトリィにコピーして解凍します。
解凍したら”/usr/local/src/xinetd-2.3.13”というディレクトリィが作成されますので、カレントを移動してコンパイルします。 configure を使用しますが以下の様なオプションがあります。
このサイトでは”--with-libwrap”と”--with-loadavg”に対応させてコンパイルをします。 以下の様にコマンドを実行していきます。
これで”/usr/local/sbin/xinetd”というプログラムがインストールされていますので以下の様にして起動します。
終了する時は”kill”コマンドで終了します。(ps コマンドでPIDを確認して kill します。) |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
3.xinetdの設定 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
xinetd の設定ファイルは標準では”/etc/xinted.conf”というファイルと”/etc/xinted/”のディレクトリィ直下になります。
”/etc/xinted.conf”がメインの設定ファイルです。以下が”/etc/xinted.conf”の初期の内容です。
書式としては << サービス名 Or defaults >> { << 設定項目 >> = << 項目の値 >> ・・・・ } となっています。 (1) の部分で何のサービスに対して設定かを宣言し、 (2) の部分の { 〜 } の中で各のサービスに対してのオプションを設定します。 この xinetd.conf では defaults となっていますが、defaults { 〜 } の中で定義しているの部分は全てのサービスに対して基本設定となります。 (1) のサービス名は何でも良いのですが、基本は”/etc/services”に書かれているサービスを使用します。書かれていないサービスを使用する場合は、必須となる設定項目がでてきます。 (3) の様に includedir << パス >> とすると、指定したパスの直下が xinetd の設定ファイルとしてインクルードされます。 主なオプション(設定項目及び項目の値)の説明は下に掲載します。
例として、proftpd を xinetd 経由で起動するようにします。 includedir /etc/xinetd.d と設定していたとすると、”/etc/xinetd/ftp”というファイルを新規で作成して、以下の様な内容を記述します。
まず ftp は”/etc/services”の中に定義されているので、(1) の様に記述します。 xinetd 経由で起動させるので、(2) の様に disable = no します。 (3) で起動するサービスを記述します。今回は proftpd を使用しますので、このパスを設定します。引数は無いので server_arg は不要です。 次に proftpd の設定をします。”/etc/proftpd/proftpd.conf”の内容の1行を以下の様に変更してください。 ServerType standalone ↓ ServerType inetd 以上で設定は終わりです。 proftpd を停止して xinetd を再起動します。FFFTPなどでリモートホストからアクセスをして動作確認をしてください。 |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
4.xinetdの補足 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
◆ DoS攻撃対策
一般的には市販ルーターとかがやってくれますが、xinetd でもできます。上記でも記述しましたが設定項目でもある cps で対応すれば良いです。 ◆ 補足 2004/10/6 時点での xinetd の最新のパッケージである”xinetd-2.3.11-2.i586.rpm”は今回は使用しませんでした。 xinetd経由でプログラムを起動させようと設定しても動作しなかったからです。(設定ファイルをいろいろいじったら動作しましたが、何が悪かったのかは・・・) インストール時にある初期の設定ファイルにミスがあったのか、結局原因が分からなったのでソースからコンパイルしてます。 |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
5.inetdの設定 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
xinetd の前身である inetd の設定についてです。こちらも tcpwrapper と併用して使用するので”/etc/host.allow”と”/etc/host.deny”の設定が必要です。
Plamo Linux で標準で設定されていたので 設定ファイルは、”/etc/inetd.conf”です。 xinetd の様に、ディレクトリィを作成して各サービス毎に設定ファイルあるわけではなく、1つのファイルのみです。 以下が設定ファイルの例です。(抜粋)
以下の順番で横に記述していきます。 < service_name > < sock_type > < protocol > < flags > < user > < server_path > < args > (各項目の区切りとして、tab が入ってます。) 下記がその内容です。
Plamo Linux の場合は、何故か smtp とか telnet が動作しているので、必要が無ければコメント化して止めてしまいましょう。 Plamo Linux だったので、パッケージではなく、起動、終了のシェルは見つからなかったので、ps -aef で該当プロセスIDを見つけて kill しましょう。 inetd 起動したい場合は、Plamo Linux の場合は”/usr/sbin”の中にプログラムがあるので以下の様にして起動しましょう。 /usr/sbin/inetd & |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
6.inetdの補足 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
inetd で設定が正しいかどうかをチェックするコマンドがあるようです。
(私のインストールの仕方が悪いのか、Plamo Linux では、そのコマンドは確認できませんでした。)
以下がそのコマンドです。参考までに・・・
/usr/sbin/tcpdchk 上記は inetd の設定ファイルが正しいかチェックをします。 /usr/sbin/tcpdmatch < サービス名 > < ホスト名(IPアドレス) > 上記は正しく記述されてても接続できるかどうかをチェックします。 |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
先頭に戻る TOPページに戻る |