ITメモ
CentOS / セントオーエス




Xinetdの設定

Xinetdの設定




xinetd の起動


入力コマンド
/etc/init.d/xinetd restart




「Xinetd」の再起動が必要な時
  • xinetd の設定を変更した場合 - 変更内容を反映させるため


設定ファイル構成


xinetd サービスは、以下の2種類の方法で、設定することが可能。
/etc/xinetd.conf 全ての設定を記述。
/etc/xinetd.confには、デフォルトの設定を記述して、個々のサービスの設定ファイルをサブディレクトリ以下に用意し、インクルードする。
xinetd.d ディレクトリ以下に作成する設定ファイル個々のサービスの設定ファイル
/etc/hosts.allowTCP_Wappersアクセス制御用(許可)ファイル。
/etc/hosts.deny-TCP_Wappersアクセス制御用(拒否)ファイル。
/etc/serviceネットワークサーバの種類とポートの定義ファイル。


xinetd 設定ファイルの書式


「xinetd.conf」ファイル・「xinetd.d」ディレクトリ以下に作成する設定ファイルへ書き込むフォーマット。


service サービス名
{
attribute operator value
attribute operator value
・・・・・・
}


operatorの一覧

operator名解説
=通常使用
+=デフォルトの設定に追加する場合に使用。
-=デフォルトの設定から削除する場合に使用。


attributeの一覧

attribute名解説
-service 設定するサービスの名前を ftp に指定。 (/etc/services ファイルに定義されたサービス名を指定。)
必須socket_typeサービスが使用するソケットタイプを「stream」に指定。
必須waitマルチスレッド「no」を指定。
必須userサービスを実行するユーザ名を「root」に指定。(/etc/services に記述がない場合のみ必須)
必須server起動するサービスを絶対パスで「/usr/sbin/in.ftpd」に指定。(内部サービス以外必須)
-server_argsサービスに渡す引数に「-l」と「-a」を指定。
-log_on_success 接続に成功した場合に記録するログの種類を指定。
(xinetd.conf で指定したデフォルトのログ情報に加え、DURATION(周期)、USERID(リモートホストの認証ユーザ名)を指定。)
log_on_failure 接続に失敗した場合に記録するログの種類を指定。
(xinetd.conf で指定したデフォルトのログ情報に加え、USERID(リモートホストの認証ユーザ名)を指定。)
-niceジョブの優先順位を10に指定。
-disableサービスの停止を指定。
必須protocol(RPC サービスと /etc/services に記述がない場合のみ)
必須rpc_version(RPC サービスのみ)
必須rpc_number(/etc/rpc に記述のないRPC サービスのみ)
必須port(RPC 以外で、/etc/services に記述がない場合のみ)
ログに関するアトリビュート
-log_type ログの出力方法を定義。「SYSLOG」と「FILE」の2通りの指定をすることが可能。

SYSLOG ファシリティ [レベル] ファシリティ deamon、auth、authpriv、user、local0-7 のいずれかを指定可能。
レベル emerg、alert、crit、err、warning、notice、info、debug を指定可能。レベルを指定しない場合には、デフォルトで info が摘要される。
なお、SYSLOG の詳細については、http://www.linux.or.jp/JM/html/sysklogd/man5/syslog.conf.5.html を参照して下さい。
FILE ファイル名 [最大サイズ] [絶対最大サイズ] ファイル名で指定するファイルをあらかじめ作成しておく必要があります。
[最大サイズ]に達すると、xinetd は、リミットを越えたというメッセージを記録。
また、SYSLOGにも記録するように設定してある場合には、alert レベルでログに記録。
[絶対最大サイズ]に達すると、リミットに達したというメッセージを記録して、ロギングを停止。もし、/var/log/ 配下の他のサービスと共通のログファイルを指定していると、それらのロギングにも影響を与える可能性があります。また、[絶対最大サイズ]を指定しない場合には、デフォルトで[最大サイズ]の1%増しのサイズが適用されます。
また、サービスごとにFILEを作成することで、サービスごとのログファイルを作成することが可能。
-log_on_success サービスが起動した時と、終了した時にログに記録。以下のオプションをスペースで区切って指定。
PIDサービスのプロセスID。
HOSTリモートホストのIPアドレス。
USERIDリモートホストの認証ユーザ名。このオプションは、マルチスレッドTCPサービスでのみ有効。
EXIT サービスが終了したのか、終了シグナルを受けたのかを記録。
(PIDオプションと併用すると、プロセスIDも記録される。)
DURATIONセッション周期(秒)。
-log_on_failure サービスが起動しなかった場合、ログに記録。
サービスのプロセスIDと起動しない理由は、常に記録。その他は、以下のオプションをスペース区切りで指定。
HOSTリモートホストのIPアドレス。
USERIDリモートホストの認証ユーザ名。このオプションは、マルチスレッドTCPサービスでのみ有効。
ATTEMPT起動に失敗した場合の記録。
RECORDサービスが起動しなかった場合の諸情報を記録。
アクセス制御に関するアトリビュート
-disabled「yes」か「no」を指定。サービスを起動する場合には、「no」を選択。
-enabled引数に指定したサービスのみ使用を可能。
-only_from サービスにアクセス可能なホストを指定。以下のいずれかの方法で指定が可能。
192.168.1.0IPアドレス。最後の8ビットに0を指定して、サブネット全てを指定することも可能。また、0.0.0.0と指定すると、全てのIPアドレスからのアクセスが可能。
192.168.1.{1,10}最後の8ビット目のアドレスを{ } 内にカンマで区切って、一度に複数のIPアドレスを指定できる。
ネットワーク名/etc/networks に記述されているネットワーク名を指定。
ホスト名逆引きが可能なホスト名を指定。また、.domain.com と指定すると、ドメインで指定することも可能。
192.168.1.0/28IPアドレス/ネットマスクの組合せで指定。
-no_accessサービスへのアクセスを許可しないホストを指定。only_from の場合と同じ方法で指定することが可能。
-access_timesアクセス可能な時間帯を指定。8:30-18:00 と指定した場合、8時30分から18時までのアクセスが可能。
-cps 毎秒ごとに可能な接続数の上限を設定。最初の引数は、1秒あたりに処理可能なコネクション数を、後の引数は、サービス利用不能となってから、再利用可能になるまでの時間(秒)を指定。
例えば、cps = 10 60 の場合、1秒間の接続数が10を超えると、一度サービスが停止し、60秒後に再開。
-instances同時に動作可能なサービスの最大数を数値で指定。UNLIMITED を指定すると制限なし。
-max_load CPU使用率のしきい値を浮動小数点値で指定。上限値を上回った場合、サーバーに対する接続要求が拒否されるようになり、一時的にサービスの利用が不可となるが、DoS攻撃などにより、システム全体がダウンすることを防ぐ。
-per_source同じクライアントからの接続数を制限するために、数値(整数)または、UNLIMITEDを指定。
サービスに関するアトリビュート
-id同じサービスを違うプロトコルで使用する場合にサービスの名前を定義。デフォルトは、サービス名と同じ名前が定義されています。
-flags 下記の値を指定。
REUSEポートが使用中(TIME_WAIT)の場合でも、再利用できるようにする。
INTERCEPTパケット転送を中断し、許可された発信先からきているのかを調べます(マルチスレッド、内部サービスでは使用不可)。
IDONLYリモートホストの認証で、ユーザー名が引ける場合のみ接続を許可。ログオプションの USERID と併用する必要があります。
NORETRY認証に失敗した場合、同じサービスへの接続を許可しません。
NAMEINARGStcpdを使用する場合に、server_arg で指定する変数がサービス(service)へ引数(argv[0]) として渡されます。
NODELAYTCPコネクションの場合、TCP_NODELAY フラグをセット。
DISABLEenable の設定を上書きして、サービスを使用不可に。
KEEPALIVETCPコネクションの場合、キープアライブを適用。
NOLIBWRAPlibwrap を使用しません。
必須portサービスが使用するポート番号を指定。
必須protocol サービスが使用するプロトコルを指定。/etc/protocols ファイル内に記述されたプロトコルを指定。
この属性の指定がない場合、デフォルトのプロトコルが使用されます。
必須server起動するサービスを絶対パスで指定。
-server_argserver が使用する引数を指定。
必須socket_type ソケットの種類を指定。指定の際には、下記の値を指定。
streamTCP
dgramUDP
rawIPダイレクトアクセス
seqpacketsequenced packet
必須wait シングルスレッド/マルチスレッドによって「yes」か「no」を選択。
yesシングルスレッドサービス(サービスを起動したら、プロセスを終了するまで次の接続を受付けない)。
noマルチスレッドサービス(サービスを起動したら、リミットに達するまで次の接続を待つ)。
-nice ジョブの優先順位を指定。値が小さいほど優先順位が高くなる。
Linuxでは、最高:-20、最低:19の範囲で指定可能。
その他のアトリビュート
-type 以下の3つのタイプを指定可能。
RPC/etc/rpc ファイル用
INTERNAL内部向けサービス
UNLISTED/etc/rpc、/etc/services ファイルに記述のないサービスを扱う。
-env "name=value" の形式で、サービスを起動する前に読み込ませる環境変数を指定。サービスに特に必要なライブラリなどを絶対パスで指定して、xinetd で指定した環境変数に、ここで設定した環境変数を追加する。
-passenvサーバに渡される環境変数をリスト。この値が空だとサーバには何も渡されません。
-redirect TCPサービスを他のホストにリダイレクトする。指定したポートへのTCPサービス要求を受けると、指定するホストへ接続してデータを転送。書式は、以下の通りです。

redirect = (IP address) (Port)

「server」オプションを指定した場合、「server」オプションが優先される為、指定する必要なし。
-bind 複数のIPアドレスを持つホスト上で、各IPアドレスごとにサービスを提供できるように指定可能。
グローバルIPとプライベートIPを持つサーバで、同じサービスを異なるIPアドレスで提供可能になる。

bind = (IP address)

-interface bindと同意。
-banner リモートホストから接続要求があった場合に表示するバナーファイルをフルパスで指定。 このオプションでは、許可・拒否の場合ともに同じファイルを表示。
-banner_success リモートホストからの接続要求が許可された場合に表示するバナーファイルをフルパスで指定。
-banner_fail リモートホストからの接続要求が拒否された場合に表示するバナーファイルをフルパスで指定。
必須user サービスが実行されるときのUIDを指定。ユーザーは、/etc/passwd に登録されていなくてはいけません。また、xinetd のUIDがスーパーユーザーでないと指定は無効になる。
-group サービスが実行されるときのGIDを指定。グループは、/etc/group に登録されていなくてはいけません。なお、GIDを指定しないと、ユーザが属するグループが適用されます。
-include新しい設定ファイルをインクルードする。ただし、このオプションは、個々のサービスの中で指定することはできません。
-includedirサービスごとの xinetd の設定ファイルを置くディレクトリをインクルード。
-rlimit_as サービスごとの最大アドレス空間をバイト値で指定(Linuxのみ)。
設定には、K(=KB)、M(=MB)、UNLIMITEDも指定可能。
-rlimit_cpu サービスが使用可能なCPU の最大時間を秒で指定。
設定には、UNLIMITEDも使用可能。
-rlimit_dataサービスの最大データサイズをバイト値で指定。
-rlimit_rss サービスの最大常駐可能数をバイト値で指定。搭載しているメモリが少なく、スワップが発生しやすい場合などに有効な設定。
UNLIMITEDも使用可能。
-rlimit_stack サービスの最大スタックサイズをバイト値で指定。
UNLIMITEDも使用可能。
必須rpc_versionRPCのバージョンを指定。
必須rpc_numberサービスにないRPCサービスナンバーを指定。