Log in

CentOS でサーバー構築 - ftp サーバー(vsftpd)

目次へ戻る

ftp サーバーにもいくつかあるようですが vsftpd を使うことにしました。
以下のように yum でインストールします。

#yum -y install vsftpd

/etc/vsftpd/vsftpd.conf を以下の様な感じで編集します。
(匿名でのログインは禁止。一部の人のみ自分のホームディレクトリー以外にもアクセス可)

anonymous_enable=NO
ascii_upload_enable=YES
ascii_download_enable=YES
chroot_local_user=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
use_localtime=YES

/etc/vsftpd/chroot_list を編集します。
このファイルにはルートディレクトリー配下を自由にアクセスできるユーザーを記述します。一行に一ユーザーづつ書いていけばいいようです。

ファイアーウォールの 21番ボートをオープンします。

サービスを再起動します。

service fsvtpd restart

OS リスタート時に自動的に起動するようにします。

chkconfig vsftpd on

これで ftp サーバーが動き出しているはずなので、クライアントから接続テストします。また、anonymous で接続できないことも確認しておきます。
なお、私は ftp クライアントソフトは FileZilla を使用しています。

SSL を使うようにする

このままだとすべて平文で流れることになるので SSL で暗号化してやることにしました。
正規のサーバー証明書を持っていればそれを使えばいいんでしょうが、今回は自分でサーバー証明書を作成(いわゆるオレオレ証明書)を使用することにしました。

サーバー証明書を作成するのに make が必要なのでまずはそれを入れます。

#yum -y install make

/etc/vsftpd/vsftpd.conf を編集して SSL を使うようにします。
(以下は常に SSL を使うようにしています)

ssl_enable=YES
ssl_ciphers=HIGH
rsa_cert_file=/etc/pki/tls/certs/vsftpd.pem
force_local_logins_ssl=YES
force_local_data_ssl=YES

サーバー証明書を作成します。

# cd /etc/pki/tls/certs/
# make vsftpd.pem

(これ以下は返答例)
Country Name (2 letter code) [XX]:JP
State or Province Name (full name) []:都道府県名("Osaka" など)
Locality Name (eg, city) [Default City]:市町村名("Osaka" など)
Organization Name (eg, company) [Default Company Ltd]:会社名("amuplus" など)
Organizational Unit Name (eg, section) []:部署名(空欄でもいい)
Common Name (eg, your name or your server's hostname) []:ホスト名("www.amuplus.jp" など)
Email Address []:管理者のメールアドレス

サービスを再起動します。

service vsftpd restart

これで SSL を使用するようになったはずです。
FileZilla の場合は「サイトマネージャー」で「暗号化」を「明示的な FTP over TLS が必要」にすればアクセスできるはずです。逆にしなければ接続エラーになるはずです。(/etc/vsftpd/vsftpd.conf で常に SSL を使うようにしたので)
なお、サーバー証明書がオレオレ証明書なので接続時に証明書が確認できない旨が表示されます。

目次へ戻る