lazy developers blog

さくら VPS に FTP で接続する (CentOS + vsftpd)

はじめに

さくらの VPS に、FTP で接続します。

環境

  • VPS : さくらVPS 1G SSD
  • OS : CentOS 7.3
  • その他 : vsftpd 3.0.2

vsftpd のインストール

ここでは、vsftpd(Very Secure Ftp Deamon) をインストールします。vsftpd は安全性とパフォーマンスにすぐれ安定した FTP サーバのひとつです。

1# yum install vsftpd

設定ファイルを編集する

vsftpd.conf を環境に応じて編集します。

1# vi /etc/vsftpd/vsftpd.conf

匿名ユーザーによるログインを無効にする

YES の場合、匿名ユーザーによるログインか可能になるため NO に変更します。

/etc/vsftpd/vsftpd.conf
1- anonymouns_enable=YES
2+ anonymouns_enable=NO

FTPコマンドログを有効にする

xferlog_std_form=NO, log_ftp_protocol=YES の場合、すべての FTP コマンドと応答がログに記録されます。

/etc/vsftpd/vsftpd.conf
1- xferlog_std_format=YES
2+ xferlog_std_format=NO
3+ log_ftp_protocol=YES

ASCII モードでの転送を有効にする

Windows からファイルをアップロードしたときに、不要な改行コードをつけないために、先頭の#を削除して有効にします。

/etc/vsftpd/vsftpd.conf
1- #ascii_upload_enable=YES
2- #ascii_download_enable=YES
3+ ascii_upload_enable=YES
4+ ascii_download_enable=YES

接続時のバナー表示を設定する

デフォルトでは、vsftpd のバージョンを表示するため # を削除して設定します。

/etc/vsftpd/vsftpd.conf
1- #ftpd_banner=Welcome to blash FTP service.
2+ ftpd_banner=Welcome to blash FTP service.

上位ディレクトリの参照を可能にする

chroot_list に記載したユーザーについては、ホームディレクトリより上位のディレクトリを参照できるように設定します。

/etc/vsftpd/vsftpd.conf
1- #chroot_local_user=YES
2- #chroot_list_enable=YES
3- #chroot_list_file=/etc/vsftpd/chroot_list
4+ chroot_local_user=YES
5+ chroot_list_enable=YES
6+ chroot_list_file=/etc/vsftpd/chroot_list

ls -R での参照を許可する

ディレクトリを再帰的に参照するように変更します。巨大なサイトでは多くのリソースを消費します。

/etc/vsftpd/vsftpd.conf
1- #ls_recurse_enable=NO
2+ ls_recurse_enable=YES

GMT ではなくローカルタイムを表示する

ローカルタイムを表示するため行を追加します。

/etc/vsftpd/vsftpd.conf
1+ use_localtime=YES

リスト内のユーザーのみアクセスを許可する

NO を指定すると、userlist_file で指定したファイルに名前がないユーザーのアクセスを禁止します。

/etc/vsftpd/vsftpd.conf
1+ userlist_deny=NO

SSL による暗号化通信を設定します

SSL による暗号化通信を有効にして、データの盗聴を防ぎます。サーバ証明書の作成はこちら

/etc/vsftpd/vsftpd.conf
1+ rsa_cert_file=/etc/pki/tls/certs/vsftpd.pem
2+ ssl_enable=YES
3+ ssl_ciphers=HIGH

パッシブモードを有効にする

pasv_promiscuous=YES にすると、同一の IP アドレスを起源とすることを確認するためのチェックをおこないません。

/etc/vsftpd/vsftpd.conf
1+ pasv_promiscuous=YES
2+ pasv_min_port=50000
3+ pasv_max_port=50030

サーバ証明書の作成

SSL 通信のためにサーバ証明書を作成します。

1# cd /etc/pki/tls/certs/
2# make vsftpd.pem
3
4Country Name (2 letter code) [XX]:JP
5State or Province Name (full name) []:
6Locality Name (eg, city) [Default City]:
7Organization Name (eg, company) [Default Company Ltd]:
8Organizational Unit Name (eg, section) []:
9Common Name (eg, your name or your server's hostname) []:
10Email Address []:
  • Country Name (2 letter code) [XX] : 国コードを入力します。日本の場合は「JP」です。
  • State or Province Name (full name) [] : 都道府県名を入力します。
  • Locality Name (eg, city) [Default City] : 市区町村名を入力します。
  • Organization Name (eg, company) [Default Company Ltd] : 組織名を入力します。
  • Organizational Unit Name (eg, section) [] : 部署名を入力します。
  • Common Name (eg, your name or your server's hostname) [] : 名前またはサーバホスト名を入力します。
  • Email Address [] : メールアドレスを入力します。

vsftpd の自動起動設定

サーバ起動時に、vsftpd を自動起動するように設定します。

1# systemctl enable vsftpd

vsftpd 起動

vsftpd を起動します。

1# systemctl start vsftpd

ファイアウォールの設定

FTP 接続のために、firewalld (ファイアウォール)を設定します。パッシブモード用にポートを許可します。

1# firewall-cmd --add-service=ftp --permanent
2# firewall-cmd --add-port=50000-50030/tcp --permanent
3# firewall-cmd --reload

FTP クライアントからサーバに FTP 接続できれば成功です。