vsftpd2.xインストールガイド


vsftpd2.x インストールガイド (2005.03.03 更新)

vsftpdはセキュリティー機能が強化されたFTPサーバー。 vs(very secure)なftpdという意味らしいです。

ソースファイルの入手

root以外のユーザ(個人ID)でログインする。

vsftpdのWebサイトよりソースファイルを取得
ここでは執筆時の最新バージョン2.0.1を使用します。
最新バージョンを確認し、相応に置き換えて読んでください。

vsftpd webサイト http://vsftpd.beasts.org/

$ wget ftp://vsftpd.beasts.org/users/cevans/vsftpd-2.0.1.tar.gz

ソースファイルの展開、コンパイル

ダウンロードしたソースファイルを展開(解凍)

$ tar xzf vsftpd-2.0.1.tar.gz

展開したファイルのディレクトリへ移動

$ cd vsftpd-2.0.1

vsftpdは他のプログラムと違ってコンフィグレーションが必要ありません。
そのままmakeを実行します。

$ make

インストール

makeが終了したら、rootユーザになって必要ファイルをインストール(コピー)します。

$ su
Password: xxxxxx(rootパスワード)

このとき、すべてのファイルをインストールする場合は通常通りに

$ make install

必要ファイルだけをインストールする場合は下記のコマンドをそれぞれ実行してください。

$ cp vsftpd /usr/local/sbin/vsftpd
$ cp vsftpd.conf /etc
$ cp vsftpd.conf.5 /usr/local/man/man5
$ cp vsftpd.8 /usr/local/man/man8

動作環境の設定

ここからは環境設定になりますのでrootユーザのまま作業を続けます。
vsftpdはnobodyユーザーを必要とします。
通常は登録済みですが、未登録の場合は

$ useradd nobody

で追加してください。

emptyディレクトリの確認をします。 通常は /usr/share/empty が存在するはずです。
なければ作成します。

$ mkdir /usr/share/empty

anonymouse(匿名ユーザ)で利用する場合はftpユーザー、専用ディレクトリ(ここでは /var/ftp とします)が必要です。
anonymouseでは読み込み(ダウンロード)だけで、書き込み(アップロード・削除)を許可させませんので、その権限の設定も行います。

$ mkdir /var/ftp
$ useradd -d /var/ftp -s /sbin/nologin ftp
$ chown root.root /var/log
$ chmod og-w /var/ftp

必要に応じてユーザーID(ftp)とグループID(ftp)をあわせてください。

vsftpd.confの設定

vsftpd.confを保存したディレクトリ /etc へ移動します。

$ cd /etc

テキストエディタで開きます。

$ vi vsftpd.conf

ここではinet経由でvsftpdを起動させます。

linux起動時にデーモン(standaloneモード)として動作させる場合は
最下行に下記を追加してください。

 listen=YES

ここではinet経由の動作を説明しますので、必要な起動設定は各自合わせて行ってください。

設定条件として、私のサーバでは

  • inet経由の起動
  • anonymouse接続は行わない
  • ルーターの関係でPassiveモードを使用しない
  • .htaccessなどのドットファイルを表示する
  • 一般ユーザーはホームディレクトリ(/home/xxxx/)より上の階層には上がらせない(禁止する)
  • ftpを利用できるユーザーとできないユーザーをわける

以上の条件でvsftpd.confファイルの設定を書き換えていきます。 書き換えた項目は下記の通りです。

anonymous_enable=NO
local_enable=YES
local_umask=022
ascii_upload_enable=YES
ascii_download_enable=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd.chroot_list

下記は追記した項目です。

chroot_local_user=YES
userlist_enable=YES
userlist_deny=YES
userlist_file=/etc/vsftpd.user_list
pam_service_name=ftp
force_dot_files=YES
use_localtime=YES
text_userdb_names=YES

以上でvsftpd.confの設定は終了です。
ここで追加した設定

pam_service_name=ftp

  • PAM認証するサービス名を指定

force_dot_files=YES

  • ドットファイルの表示指定

use_localtime=YES

  • デフォルトではGMTになっているので、ローカルタイムを指定

text_userdb_names=YES

  • FTPクライアントで表示するユーザーの形式
    通常のままではユーザIDの番号が表示されます。
    この設定でユーザ名が表示されるようになります。

次にアクセスディレクトリ制限のユーザファイルを作成します。

$ vi /etc/vsftpd.chroot_list

このファイルにユーザを記載します
記載されたユーザはすべてのディレクトリアクセスを許可されます。
記載されないユーザはホームディレクトリのみになります。

次にアクセスユーザー制限のファイルを作成します。

$ vi /etc/vsftpd.user_list

このファイルに記載されたユーザはftp利用ができなくなります。
自分の環境に合わせて禁止ユーザーを記載してください。

以上でvsftpdの設定が終了です。

起動設定

inetdで動作させるため設定ファイルに記述を変更させます。
設定ファイルは /etc/xinetd.d/ にある ftp というファイルです。

これをテキストエディタで開いて内容を変更します。

$ vi /etc/xinetd.d/ftp

内容は下記のようになります。 重要なのは

server = /usr/local/sbin/vsftpd

disable = no

の修正です。

service ftp
{
        flags           = REUSE
        socket_type     = stream
        wait            = no
        user            = root
        server          = /usr/local/sbin/vsftpd
        nice            = 10
        disable         = no
}

最後に、hosts.allowに対して許可指定を記載します。

$ vi /etc/hosts.allow
vsftpd: 127.0.0.1 192.168.0. 

許可したいIPアドレス、ドメインなどを列記してください。

ここまでできたらvsftpdのinetd起動準備が整いました。
inetdサービスを再起動して動作を確認してみてください。

$ /etc/rc.d/init.d/xinetd restart


Last-modified: 2015-04-23 (木) 15:14:31 (912d)