Linux Lovers
    Fedora Coreで始めるサーバ構築

Home > FTPサーバ > xinetd経由で起動する

xinetdとは?

xinetdというのは、スーパー・デーモンの事です。立ち上げてるサービスの中には
接続が少なく、たまにしか使用しないサービスもあります。こういったサービスを常時
立ち上げているとその分、メモリ等のリソースが浪費されてしまいます。

そこで、こういったサービスをスーパー・デーモン経由にします。スーパー・デーモンはサービスの
代わりに該当するポートを監視し、クライアントからの接続があると、該当するサービスを起動させます。

このようにすれば、常にそのサービスが起動していないことになるので、常駐してメモリ等のリソースを
浪費させてしまうという事を回避する事ができます。

また、スーパー・デーモン自体でアクセス制御などもできるので、セキュリティアップにも繋がります。
なぜなら、そのサービスにアクセスする前に、xinetdがあるからです。xinetdの部分でアクセスをはじけば、
その先にあるサービスにアクセスできなくなるからです。
以上、このような役割りをしてくれるのが、xinetdです。

一つ注意点としては、何でもかんでもxinetd経由にしてはいけないという点です。
判断基準としては、アクセスが多いサービスはダメという事になります。なぜなら、xinetd経由に
してしまうと、アクセスの度にサービスの起動と停止を繰り返すからです。アクセスが頻繁にあり、
応答速度が重視されるサービスには向かないのです。例えば、Webサーバです。
Webサーバなどのサービスは、スーパー・デーモンではなく、スタンドアロンで運用させます。

vsftpdをxinetd経由で起動する

このページでは、vsftpdをxinetd経由で起動する方法の紹介をします。
先ず、vsftpdが起動している場合には停止します。また、自動で起動しないようにもしておきます。

# service vsftpd stop
# chkconfig --level 345 vsftpd off


次に、/etc/xinetd.d/以下にvsftpdというファイルを新規で作成し、以下のように記述します。

# vi /etc/xinetd.d/vsftpd
service ftp
{
    disable = no
    socket_type = stream
    wait = no
    user = root
    server = /usr/sbin/vsftpd
    server_args = /etc/vsftpd/vsftpd.conf
    log_on_success += DURATION USERID
    log_on_failure += USERID
    nice = 10
}

disableは、xinetd経由で起動させたい場合はnoにします。起動させたくない場合はyesにします。
socket_typeは、TCPサービスの場合はstreamを使用します。serverには、サーバ・プログラムを
絶対パスで指定します。server_argsには、vsftpdの設定ファイルを指定しました。これでvsftpdの
設定ファイルがそのまま引き継がれます。

途中で出てきた、サーバ・プログラムの場所の調べ方ですが、以下のようにすればOKです。

# which vsftpd
/usr/sbin/vsftpd       ←サーバ・プログラム

注意点が1つあります。今までvsftpdをスタンドアロンで起動して、vsftpd.confに
listen=YESという記述を入れてしまっているかもしれません。この記述が入っていると
スタンドアロンで起動するという指定になりますので、xinetd経由で起動ができなくなります。
なので、listen=YESの部分をコメントアウトしておくか、削除してください。

以上が済みましたら、xinetdを再起動します。

# service xinetd restart


ちゃんとxinetd経由になっているのか確認してみます。

# lsof -i:21
COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME
xinetd   11240  root  6u  IPv4  580135      TCP  *:ftp (LISTEN)

先頭がxinetdとなっているので、xinetd経由で起動しています。
スタンドアロンで起動した場合は、vsftpdになっています。



>>このページのTOPへ

アクセス制御

次にアクセス制御の設定を行います。先ほどの/etc/xinetd.d/vsftpdに以下の一行を
付け加えてみてください。{}の間に追加してください。

access_times = 09:00-18:00

このようにすると、9時から18時までの間しかvsftpdにアクセスできないことになります。
それ以外の時間帯にFTPサーバにアクセスしてもxinetdがはじいてくれます。
また、特定のネットワークやホストから接続を受け付ける場合には、以下のようにします。

only_from = 192.168.1.0

このようにすれば、192.168.1.0/24からしかアクセスできません。

特定のネットワークやホストを拒否したい場合には以下のようにします。

no_access = 192.168.1.50

このようにすると、IPアドレスが192.168.1.50のマシンからの接続を拒否することができます。

これらアクセス制御を追加した、今の/etc/xinetd.d/vsftpdの状態を載せてみます。

# cat /etc/xinetd.d/vsftpd
service ftp
{
    disable = no
    socket_type = stream
    wait = no
    user = root
    server = /usr/sbin/vsftpd
    server_args = /etc/vsftpd/vsftpd.conf
    log_on_success += DURATION USERID
    log_on_failure += USERID
    nice = 10
    access_times = 09:00-18:00
    only_from = 192.168.1.0
    no_access = 192.168.1.50
}


上のアクセス制御の記述を加えた場合は、設定を反映させる為にxinetdを再起動します。

# service xinetd restart

>>このページのTOPへ

最終更新 : 05/23/2005


Fedoraの設定    SSH    Web    Mail    FTP    DNS    ファイルサーバ    運用管理    システム管理    ネットワーク    セキュリティ対策
Copyright (C) 2004-2007 chibi ,All Rights Reserved