【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、ホスト、接続時間など)。 |
cps | 1秒あたりの接続数と接続拒否の待機時間を設定。 |
instances | 同時に起動できるインスタンス数の上限。 |
includedir | サービスごとに設定ファイルを格納するディレクトリの指定。 |
/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アドレス範囲。 |
xinetdの再起動
/etc/xinetd.conf
や/etc/xinetd.d/
ディレクトリの設定ファイルを変更した場合は、xinetdサービスを再起動する必要があります。再起動には、以下のsystemctl
コマンドを使用します。再起動はroot権限で実行します。
systemctl restart xinetd
なお、modernなLinuxシステムでは、xinetdの代わりにsystemdを使用することが一般的です。systemdでは、systemd.socket
とsystemd.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は依然として多くのシステムで利用されています。