【Linux】ネットワークのアクセス管理するxinetd

 ネットワークサービスを提供するLinuxシステムにおいて、アクセス管理やデーモンの起動管理は非常に重要です。xinetdは、その役割を担うスーパーサーバの一種で、複数のデーモンの集中管理を行います。inetdの機能を強化したxinetdは、アクセス制御やログ機能を提供し、特定のサービスに対して柔軟な設定が可能です。現在でも、xinetdを使用してデーモンを管理しているシステムは少なくありません。

xinetdの概要

 xinetdは、ネットワークサービスを提供するデーモンの集中管理を行うスーパーサーバです。xinetdを利用することで、デーモンの起動やアクセス制御、ログの管理が一元的に行えるため、セキュリティやパフォーマンスの向上に貢献します。xinetdのメインの設定は/etc/xinetd.confファイルに記述されており、サービスごとの詳細な設定は/etc/xinetd.dディレクトリに保存されています。

/etc/xinetd.confファイル

 /etc/xinetd.confは、xinetdのメイン設定ファイルです。このファイルには、xinetd全体に適用される設定が含まれています。また、/etc/xinetd.dディレクトリにある各サービスの設定ファイルを読み込むように設定されています。

/etc/xinetd.confの設定例

defaults
{
    log_type    = SYSLOG daemon info
    log_on_failure  = HOST
    log_on_success  = PID HOST DURATION EXIT
    instances   = 60
    cps     = 25 30
}

includedir /etc/xinetd.d

/etc/xinetd.confファイルの主な設定項目

設定項目説明
log_typeログの出力形式(SYSLOG、FILEなど)。
log_on_failure失敗時のログ項目(ホスト、ユーザー名など)。
log_on_success成功時のログ項目(プロセスID、ホスト、接続時間など)。
cps1秒あたりの接続数と接続拒否の待機時間を設定。
instances同時に起動できるインスタンス数の上限。
includedirサービスごとに設定ファイルを格納するディレクトリの指定。
/etc/xinetd.confファイルの主な設定項目

/etc/xinetd.dディレクトリのtelnet設定ファイル

 /etc/xinetd.d/ディレクトリには、サービスごとの設定ファイルが保存されています。たとえば、Telnetサービスに対する設定は/etc/xinetd.d/telnetファイルに記述されています。

telnet設定ファイルの例

service telnet
{
    disable = no
    flags = REUSE
    socket_type = stream
    wait = no
    user = root
    server = /usr/sbin/in.telnetd
    log_on_failure += USERID
    only_from = 192.168.0.0/24
    no_access = 192.168.1.0/24
}

/etc/xinetd.dディレクトリのtelnet設定ファイルの主な項目

設定項目説明
disableサービスの有効/無効設定。noで有効。
flagsソケットオプションの設定。REUSEはソケットの再利用を許可。
socket_typeソケットの種類を指定。通常はstream(ストリーム)。
wait待ち時間を設けるかの設定。noでサービスを起動した後、上限まで次の接続を受け付ける。
userサービスを実行するユーザー名。
server実行するデーモンのパス。
only_from接続を許可するホストのIPアドレス範囲。
no_access接続を拒否するホストのIPアドレス範囲。
telnet設定ファイルの主な項目

xinetdの再起動

 /etc/xinetd.conf/etc/xinetd.d/ディレクトリの設定ファイルを変更した場合は、xinetdサービスを再起動する必要があります。再起動には、以下のsystemctlコマンドを使用します。再起動はroot権限で実行します。

systemctl restart xinetd

 なお、modernなLinuxシステムでは、xinetdの代わりにsystemdを使用することが一般的です。systemdでは、systemd.socketsystemd.serviceを組み合わせて、サービスの起動を管理します。

systemdとxinetdの関係

 systemdの登場により、従来のxinetdが果たしていた多くの役割がsystemdに集約されました。systemdは、Linuxシステム全体の管理を行う包括的なツールであり、xinetdの持つ機能のほとんどをsystemdの中で実現できます。具体的には、systemdは.socketファイルと.serviceファイルを組み合わせて、xinetdが管理していたようなネットワークサービスの起動を制御します。

systemd.socketファイルとsystemd.serviceファイル

 systemdでは、ネットワーク接続を待ち受けるための.socketファイルと、サービスを起動するための.serviceファイルを使用します。

  • .socketファイル
     クライアントからの接続リクエストを待ち受けます。リクエストを受け取ると、自動的に対応する.serviceファイルを起動します。
  • .serviceファイル
    実際のサービスを起動するための設定が記述されています。

xinetdの利用状況とその将来

 xinetdは、長らくLinuxのスーパーサーバとして利用されてきましたが、systemdの普及に伴い、その役割は縮小しつつあります。とはいえ、xinetdは依然として多くのシステムで利用されており、特にシンプルで特定のサービスに特化した設定が必要な場合や、既存の環境を継続して利用するケースでは今後も活用され続けるでしょう。

 xinetdを使用するか、systemdを使用するかは、システムの要件や管理者の経験に依存します。systemdはよりモダンで強力なツールですが、xinetdのシンプルさと特定用途に特化した機能は依然として魅力的です。

まとめ

 ネットワークサービスの管理において、xinetdは重要な役割を果たしてきました。サービスの起動やアクセス制御、ログの管理など、xinetdは多くの機能を提供し、システムのパフォーマンスとセキュリティを維持するために貢献してきました。しかし、systemdの登場により、多くの機能が統合されましたが、xinetdは依然として多くのシステムで利用されています。