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

Home > FTPサーバ > vsftpdの設定(ホームディレクトリ)

vsftpdの設定 - ホームディレクトリ編 -

このページでは、vsftpdを使用してFTPサーバの構築を行います。ここで設定する仕様としては、
ユーザはFTPにアクセスすると、自分のホームディレクトリにアクセスするような設定
になります。
なお、共有ディレクトリにアクセスするような仕様にしたい場合は、こちらを参考にしてみてください。

また、ルートディレクトリより上層へ行くことが可能なユーザと、行くことができないユーザについて
どのような設定にすれば効率的でセキュアかを考え、その設定も行なっていきます。



vsftpdの設定(ホームディレクトリ)

先ずはvsftpdがインストールされているか確認し、無い場合にはインストールを行います。

# rpm -q vsftpd      ←インストールされてるかの確認
# yum -y install vsftpd      ←入ってない場合はインストール


vsfptdの設定ファイルは、/etc/vsftpd/vsftpd.confになりますので、早速編集していきます。

# vi /etc/vsftpd/vsftpd.conf

anonymous_enable=YES       ←12行目
↓  
anonymous_enable=NO       ←NOに。アノニマス接続は拒否

xferlog_enable=YES       ←38行目
xferlog_file=/var/log/vsftpd.log       ←追加。/var/log/vsftpd.logへログを記録

#idle_session_timeout=600       ←57行目

idle_session_timeout=600        ←コメント解除

#ascii_upload_enable=YES         ←81、82行目
#ascii_download_enable=YES

ascii_upload_enable=YES          ←コメント解除
ascii_download_enable=YES

#chroot_list_enable=YES       ←96行目

chroot_list_enable=YES       ←コメント解除

#chroot_list_file=/etc/vsftpd.chroot_list       ←98行目

chroot_list_file=/etc/vsftpd.chroot_list       ←コメント解除

#
ls_recurse_enable=YES       ←104行目

ls_recurse_enable=YES       ←有効にするとディレクトリごと削除できるようになる

use_localtime=YES        ←追加。タイムスタンプを日本時間に合わせる
userlist_enable=YES       ←追加。ユーザごとのアクセス制御

(行数については、あくまでも目安です)

以上で設定は完了です。上の記述について何点か説明したいと思います。

chroot_list_enable=YESchroot_list_file=/etc/vsftpd.chroot_listを有効にしました。
この2つを有効にすると、/etc/vsftpd.chroot_listに記述したユーザのルートディレクトリより上層への
アクセスを拒否
するという設定になります。
なので、ルートディレクトリよりも上層へ移動させたくないユーザを、/etc/vsftpd.chroot_list
に以下のように記述します。

# vi /etc/vsftpd.chroot_list
chibi         ←追加

これで、chibiユーザは自分のホームディレクトリよりも上層へアクセスできなくなります。
ルートディレクトリよりも上層へアクセスさせてしまうのは非常に危険ですので、上層へアクセス
させたく無いユーザを確実に記述するようにしてください。

また、vsftpd.confのその他の記述の部分は、vsftpdの設定(共有ディレクトリ)
説明したものと重複になりますが、ここでももう1度、書いておきます。

anonymous_enableですが、これは匿名でのアクセスを許可するかどうかです。
プライベートな環境で使いたい場合には必ず、NOにしてください。
idle_session_timeout=600の指定は、接続して10分間何も無い状態だと接続状態では無くなるという設定です。

ascii_upload_enableascii_download_enableは、アスキーモードを有効にするかどうかの設定です。
テキストファイルなどを転送する機会がある場合には、ここの2つは有効にしておきます。
Windowsで編集したテキストファイルをアスキーモードでは無くバイナリモードで転送すると、
そのまま転送します。LinuxとWindowsとでは、改行コードが異なるので、この場合には、
テキストファイルの中身がぐちゃぐちゃになってしまいます。

userlist_enable=YESは、ユーザごとのアクセス制御です。
この設定をしないと全てのユーザがFTPにアクセスできるようになっています。
なので、今回設定したFTPの共有ディレクトリにアクセスさせる必要の無いユーザや
アクセスさせたくないユーザを制限する必要があります。上の記述を追加してから
次に以下のファイルを開き、アクセスさせたくないユーザの記述を行います。

# vi /etc/vsftpd.user_list
chibi       ←ユーザ名を記述

ここでは例として、chibiユーザをFTPにアクセスできないようにしてみました。
1行につき1ユーザを記述します。

以上で準備が整いましたので、vsftpdを起動させ、自動起動もオンに設定しておきます。

# service vsftpd start
# chkconfig --level 345 vsftpd on


またFTPはポートの20番と21番を使用します。
当サイトのファイアウォールスクリプト使用の場合は、そのままでOKです。

スクリプトを使用せず、iptablesを有効にしている場合は、以下のような記述を追加してポートをオープンし、
設定を反映させる為iptablesを再起動させます。

# vi /etc/sysconfig/iptables
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 20 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 21 -j ACCEPT


# service iptables restart


以上で準備はできました。これで、FTPにログインすると各ユーザは自分のホームディレクトリにアクセスし、
特定のユーザだけはルートディレクトリより上層へアクセスできる
設定になっています。



>>このページのTOPへ

ルートディレクトリに対するユーザの制限

上記で設定した内容をもう1度確認すると、次のようなものになります。
各ユーザは自分のホームディレクトリにアクセスし、特定のユーザだけはルートディレクトリより上層へ
アクセスできる設定。


ここには少し問題があります。というのも、先ほどの/etc/vsftpd.chroot_listへの記述です。
たくさんのユーザを管理している場合、各ホームディレクトリより上層へ行けるユーザは、
行けないユーザよりも少ないと思います。本当に特別なユーザだけが上層へ移動できるように
設定すると思います。

しかし、もしこのままの設定だと、上層へのアクセスを拒否したいユーザを/etc/vsftpd.chroot_list
記述していかなければなりません。今、言ったように、上層へ行けるユーザのほうが少ないなら
この選択はあまり賢い選択とは言えません。それに、もし記述漏れがあったら、本来なら上層へ
行かせたくないユーザが上層へ行けてしまうという事態も発生します。
基本が上層へのアクセスを許可する仕様になっているからです。

それなら、基本が上層へのアクセスを拒否する設定にすれば問題解決できます。
以下の1行をvsfptd.confに追加してください。

# vi /etc/vsftpd/vsftpd.conf
chroot_local_user=YES       ←追加

これは96行目付近にchrootに関する記述が並んでますので、その辺に追記しておきます。
この1行を追加すると、先ほどとは逆になり、/etc/vsftpd.chroot_listに記述したユーザだけが上層へ行ける
という設定になります。これで基本が上層への移動が禁止になります。
このようにしておけば、上層へ行かせたいユーザだけ記述すればいいので、記述ミスなどで、
本当は上層へ行かせたくなかったユーザが、上層へ行けてしまった。なんてミスも防ぐことができます。

/etc/vsftpd.chroot_listにルートディレクトリより上層へ行かせたいユーザを記述したら、
vsftpd.confの設定を変更していますので、再起動して設定を反映させます。
これで、/etc/vsftpd.chroot_listに記述したユーザだけが上層へアクセスできるようになります。

# service vsftpd restart


【注意】
chroot_local_userとchroot_list_enableをどちらもYESに設定した場合は、/etc/vsftpd.chroot_listの
ファイル自体が無いと全てのユーザがFTPにアクセスできなくなってしまいます。


>>このページのTOPへ

最終更新 : 05/31/2005


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