Last Modiffied: 11 Mar 2002 |
xinetd の設定方法 |
1.はじめに |
■はじめに
今回は、スーパーサーバーと呼ばれる xinetd の設定方法について説明していきます。スーパーサーバーとは、ポート監視用のデーモンプログラムで、あるポートに対してアクセスがあると、設定ファイル (/etc/xinetd.d/ 等) を元にポートに対応したサービス (ftp 等) を起動します。この際、ポートとサービスの関係は、/etc/services によって導かれます。 そして、Linuxでは、以前は、inetd と TCP wrapper(tcpd) の組合せによるアクセス制限が一般的に行なわれてきました。しかし、RedHat Linux 7Jより、inetd の上位互換性を持つ xinetd が標準となり、最近では、多くのディストリビューターが採用するようになりました。 xinetd は、単体で inetd + TCP wrapper(tcpd) の機能を持っているだけでなく、よりきめ細かで自由度の高い設定を行なうことができます。inetd + TCP wrapper(tcpd) と xinetd をおおまかに比較すると、以下の表のようになります。
そこで、今回は、上記のように様々な設定を行なうことが出来る、xinetd の設定方法について説明していきたいと思います。なお、2.1.8.8p3、2.1.8.9pre6、xinetd-2.3.1には、セキュリティホールがあるので、必ず、xinetd-2.3.3 (2002.3.11 現在) にバージョンアップして使用して下さい。セキュリティホールの詳細については、 http://www.xinetd.org を参照して下さい。
|
2.xinetd の設定ファイル |
■xinetd の設定方法
xinetd サービスは、以下の2種類の方法で、設定することが可能です。
■xinetd 設定ファイルの書式 xinetd.conf または、xinetd.d ディレクトリ以下に作成する設定ファイルは、全て、以下のフォーマットで記述します。 service <service_name> { attribute operator value attribute operator value ・・・・・・ } ■xinetd.conf xinetd.conf ファイルでの指定は、全てのサービスのデフォルトの設定になり、各サービスでの設定は、このファイルでの設定にオプションを追加、または、削除する形で行ないます。 以下は、RedHat Linux 7.2の xinetd.conf ファイルになります。 defaults { instances = 60 log_type = SYSLOG authpriv log_on_success = HOST PID log_on_failure = HOST cps = 25 30 } includedir /etc/xinetd.d
■インクルードファイルの設定 例として、RedHat Linux 7.2 のFTPの設定ファイル(デフォルト)を記述します。なお、アトリビュートについては、必須のものがあるので、必須のものについては必ず記述しなければなりません。 service ftp { socket_type = stream wait = no user = root server = /usr/sbin/in.ftpd server_args = -l -a log_on_success += DURATION USERID log_on_failure += USERID nice = 10 disable = yes } また、アトリビュートを指定する時に使用する、operator(「=」、「+=」、「-=」)は、以下の意味を表しています。 なお、記述が必須となっているアトリビュートは以下の通りです。 <<参考>> 内部サービスとは、echo、time、daytime、chargen、discard といったサービスを指します。なお、type属性は、INTERNALとなります。 ■xinetd の起動 xinetd の設定を変更した場合、変更を反映させるためには、xinetd サービスと、変更の影響を受けるサービスを再起動する必要があります。 例えば、FTP の設定を変更した場合には、xinetd サービスを再起動することで変更が反映され、変更後の環境を使用することができるようになります。 # /etc/init.d/xinetd restart Stopping xinetd: [ OK ] Starting xinetd: [ OK ] |
3.ログに関するアトリビュート |
■はじめに
ここからは、指定可能なアトリビュートについて、「ログ」「アクセス制御」「サービス」「その他」に分類して、説明します。この章では、「ログ」に関するアトリビュートの説明をします。
|
4.アクセス制御に関するアトリビュート |
|
5.サービスに関するアトリビュート |
6.その他のアトリビュート |
|
7.bind と redirect アトリビュートについて |
■はじめに
xinetd の設定ファイルでは、特定のIPアドレスにサービスをバインドすることや、受信したリクエストを別のIPアドレスや、ホスト、ポートにリダイレクトすることができます。 そこで、最後に、bindアトリビュート、redirectアトリビュート、両者を組み合わせた場合と、それぞれの簡単な設定例を紹介したいと思います。 ■bind アトリビュート ネットワークカードを2枚挿入したサーバ上で、FTPなどのサービスを提供する場合、bindアトリビュートを使用して、異なるIPアドレスを1つのサービスに結びつけることができます。ここでは、idアトリビュートを使用して、各ネットワークカードごとに異なったサービスを提供する場合の設定例を紹介します。 service ftp { id = ftp-public socket_type = stream wait = no user = root server = /usr/sbin/in.ftpd server_args = -l -a log_on_success += DURATION USERID log_on_failure += USERID instances = 4 only_from = 0.0.0.0/0 bind = 10.0.0.1 access_times = 9:00-17:30 } service ftp { id = ftp-local socket_type = stream wait = no user = root server = /usr/sbin/in.ftpd server_args = -l -a log_on_success += DURATION USERID log_on_failure += USERID only_from = 192.168.0.1/24 bind = 192.168.0.1 } ■redirect アトリビュート redirectアトリビュートを指定すると、xinetd を透過プロキシのようにして、サービスに対する要求を同じサーバー上の別のポート、同じサーバー上の別のIPアドレス、または、他のホストの特定のポートに送ることが可能となります。ここでは、FTPサービスをリダイレクトする場合の具体例を以下に示します。 service ftp { socket_type = stream wait = no user = root server = /usr/sbin/in.ftpd server_args = -l -a log_on_success += DURATION USERID log_on_failure += USERID only_from = 192.168.0.0/24 redirect = 192.168.0.100 21 } ■bind、redirect アトリビュート bindアトリビュートと、redirectアトリビュートは、両者を組み合わせて指定することで、その長所を十分に発揮できるようになります。 ここでは、FTPサービスを、特定のIPアドレス (10.0.0.1) で提供(バインド)し、ローカル環境にあるFTPサーバ (192.168.0.1) にサービスを転送(リダイレクト)する場合の、設定例を紹介します。 service ftp { socket_type = stream wait = no user = root server = /usr/sbin/in.ftpd server_args = -l -a log_on_success += DURATION USERID log_on_failure += USERID bind = 10.0.0.1 redirect = 192.168.0.1 } |
8.改版履歴 |
■改版履歴
|