3. vsftpd の設定変更方法や便利技

 vsftpd の設定は設定ファイル /etc/vsftpd/vsftpd.conf (マニュアルは /etc/vsftpd.conf になってますが、これは誤り) です。
 設定ファイル変更後、vsftpd をデーモンと動かしている場合は再起動が必要です。xinetd 経由で接続を許可している場合は、次回の ftp 接続より設定が有効になります。

3-1. 特定ユーザの chroot 設定(ホームディレクトリより上位に移動させない)

 複数のユーザでサーバを共有している場合や、セキュリティ上の理由でホームディレクトリ以外は読ませたくない場合、vsftpd 側の設定変更により「該当ユーザのホームディレクトリより上位に移動させない」(chroot)設定が可能です。

 初期状態では 96 行目が【 #chroot_list_enable=YES 】とコメントされています。
 制限を有効にさせる場合は【 chroot_list_enable=YES 】先頭の # を消します。あわせて 98 行目の【 chroot_list_file=/etc/vsftpd/chroot_list 】もコメント # を消します(コメントアウト)。

変更前)

     93 # You may specify an explicit list of local users to chroot() to their home
     94 # directory. If chroot_local_user is YES, then this list becomes a list of
     95 # users to NOT chroot().
     96 #chroot_list_enable=YES
     97 # (default follows)
     98 #chroot_list_file=/etc/vsftpd/chroot_list

変更後)

     93 # You may specify an explicit list of local users to chroot() to their home
     94 # directory. If chroot_local_user is YES, then this list becomes a list of
     95 # users to NOT chroot().
     96 chroot_list_enable=YES
     97 # (default follows)
     98 chroot_list_file=/etc/vsftpd/chroot_list

 もしここで 98 行目のコメントアウトをしないと、ftp ログイン時に次のようなエラーが出るので注意が必要です。

500 OOPS: could not open chroot() list file:/etc/vsftpd/chroot_list
Login failed.

 また、ファイルが空っぽでも同様にエラーが出てしまいます。初期状態ではファイルが無いので次のコマンドを実行してファイルを作成しておきます。

# touch /etc/vsftpd/chroot_list

 そして、制限をかけたいユーザ名をファイル中に記述します。
 制限を受けているユーザがアクセスすると、ログインディレクトリは同じホームディレクトリ(/home/ユーザ名)ですが、その場所が【 / 】となるため、その他の上位のディレクトリに対しては移動できなくできます。

230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> pwd
257 "/"

例) chroot 設定が無効な場合(初期状態)

230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> pwd
257 "/home/akane"

 これは akane というユーザが ftp ログイン直後にコマンド "pwd" を実行した状態。
 pwd は現在作業中のディレクトリ名を表示させるコマンドです。

3-2. 全ユーザの chroot 設定

 3-1 の方法では、個別のユーザに対する設定でした。ユーザ数が多いと1つ1つユーザ名の記述をするのは大変です。サーバ内の全アカウントに適用させる方法があります。

chroot_local_user=YES

 この記述を追加することで、chroot_list_file で指定したユーザには逆の働きがかかります。chroot_list_file の「ファイルに書かれたユーザのみ chroot 設定を解除する」事ができます。

3-3. 特定ユーザの ftp 禁止

 設定によって、特定のユーザに対する ftp 接続を許可できます。

# vi /etc/vsftpd/ftpusers

 この ftpusers ファイルに記述されているユーザは ftp が許可されていません。もし接続を試みても、次のようにログインに失敗しましたと表示されます。

Password:
530 Login incorrect.
Login failed.

3-4. 特定ユーザだけの ftp 許可

 vsftpd.conf 108 行目の記述を YES から NO に変えます。userlist_deny=NO も明示しておきます。

userlist_enable=YES
userlist_deny=NO

 そうすることで、/etc/vsftpd/user_list に記述されたユーザ以外の接続を許可します。
 また、この状態では PAM による制限も受けるので、/etc/pam.d/vsftpd ファイルの2行目をコメントします。

#%PAM-1.0
#auth       required     pam_listfile.so item=user sense=deny file=/etc/vsftpd/ftpusers onerr=succeed
auth       required     pam_stack.so service=system-auth
auth       required     pam_shells.so
account    required     pam_stack.so service=system-auth
session    required     pam_stack.so service=system-auth

 また、この PAM を無効にする方法は ftp による root ログインを許可するときにも用います。

3-5. root による ftp を許可する

 初期状態では root による ftp 接続は許可されていません。セキュリティ上の理由です(もしサーバが不正アクセスをうけている場合、パケット監視ツールにより root パスワードが奪取される恐れもあります)。

 許可するためには /etc/pam.d/vsftpd ファイルを編集します。2 行目をコメントにして無効化します。

#%PAM-1.0
#auth       required     pam_listfile.so item=user sense=deny file=/etc/vsftpd/ftpusers onerr=succeed
auth       required     pam_stack.so service=system-auth
auth       required     pam_shells.so
account    required     pam_stack.so service=system-auth
session    required     pam_stack.so service=system-auth

 つぎに、初期状態では ftp のユーザ制限がかかっています。ログインできないようにユーザをファイルで指定されています。

 /etc/vsftpd/user_list ファイルを開き、なかから root の記述を削除します。削除後は root での ftp 接続が許可されます。

 ※セキュリティ上あまり root でのログインはおすすめできませんが、緊急に遠隔からバックアップを行いたい時には役立つと思います。

3-6. 匿名ログイン(AnonymousFTP)の機能を廃止する

 初期状態では匿名ログイン(AnonymousFTP)が許可されています。特に ftp サーバの公開を行わない場合など、通常は無効にしておいたほうが良いでしょう。

 vsftpd.conf の 12 行目に anonymous_enable=YES という箇所があります。ここは NO に書き換えます。

anonymous_enable=YES

3-7. ログの取得

 初期状態では wu-ftpd などのように、ログが保存される設定ではありません。51 行目でコメントされています。ログを保存する場合は、コメントを削除します。

xferlog_file=/var/log/vsftpd.log

 また、54 行目ではログの保存形式が指定されます。 xferlog_std_format= YES (初期状態)の場合、WU-FTPD と同じようにログの取得ができます。

xferlog_std_format=YES

 通常は特に変更する必要は無いと思います。

3-8. vsftpd の バージョン番号を隠す

Fedora Core 4 付属の vsftpd.conf では、ftpd_banner の項目がコメント(# をつけて無効に)されている。そのため、接続時にはバージョン情報がさらけだされてる。特に困らないのですが、セキュリティホールが発見したとき、特定のバージョンが機械的に狙われることを避けるため、この部分は変更したほうが良いと思います。

$ ftp localhost
Connected to sion.
220 (vsFTPd 2.0.3)
     ^^^^^^^^^^^^

 設定を変えるには『 /etc/vsftpd/vsftpd.conf 』を編集します。

#ftpd_banner=Welcome to blah FTP service.

 この部分【 ftpd_banner= 】の後に好きな文字を書けば OK 。以下は例。 設定変更方法は設定ファイル /etc/vsftpd/vstpd.conf の変更が必要。85 行目を変更する。

ftpd_banner=[Welcome to pocketstudio's server]

 ファイル保存後、vsftpd をデーモンとして起動している場合は再起動をかけます。xinetd であれば、次回接続以降に設定が反映されます。

$ ftp localhost
Connected to sion.
220 [Welcome to pocketstudio's server]


トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: Mon, 20 Jun 2005 19:51:34 JST (6883d)