vsftpd(Very Secure FTP Daemon)は、広く利用されているオープンソースの FTP サーバーソフトウェアです。高いパフォーマンス、セキュリティ、および安定性が特徴です。vsftpd は、FTP、SSH 上の SFTP、SSL/TLS 暗号化を用いた FTP など、さまざまな FTP 関連プロトコルをサポートします。本トピックでは、Linux を実行する Elastic Compute Service (ECS) インスタンス上への vsftpd のインストールおよび構成方法について説明します。
クイックデプロイメント
[今すぐ実行] をクリックして Terraform Explorer に移動します。Terraform Explorer では、ECS インスタンス上に FTP サイトを自動的に構築するための Terraform コードを表示および実行できます。
前提条件
以下の要件を満たす基本的な ECS インスタンスを作成します。インスタンスを作成していない場合は、「ウィザードを使用したインスタンスの作成」をご参照ください。
オペレーティングシステム:Alibaba Cloud Linux 3 または 2、CentOS 7.x 64 ビット、Ubuntu、または Debian。
IP アドレス:インスタンスには固定パブリック IP アドレスが割り当てられているか、Elastic IP Address (EIP) と関連付けられています。詳細については、「Elastic IP Address」をご参照ください。
vsftpd の概要
vsftpd(Very Secure FTP Daemon)は、UNIX および Linux システム向けに設計されたオープンソースの FTP サーバーソフトウェアです。主な特徴は以下のとおりです:
高いセキュリティ:vsftpd は厳格なセキュリティ監査を経ており、複数のセキュリティ機構を採用することで、一般的な攻撃や脆弱性を効果的に防止します。
優れたパフォーマンス:高速なファイル転送を提供し、多数の同時ユーザー接続をサポートします。
シンプルな構成:柔軟で理解しやすい構成オプションを提供し、さまざまなユーザー要件に対応します。
IPv6 対応:次世代ネットワークプロトコルを堅牢にサポートします。
VSFTP サービスの構築
Alibaba Cloud Linux 3 および 2 / CentOS 7.x
手順 1:vsftpd のインストール
以下のコマンドを実行して、システムコンポーネントを更新し、
vsftpdサービスをインストールします。sudo yum update -y sudo yum install vsftpd -y以下のコマンドを実行して、FTP サービスを起動し、システム起動時に自動的に開始されるように設定します。
sudo systemctl start vsftpd sudo systemctl enable vsftpd以下のコマンドを実行して、サービスが起動しているかどうかを確認します。
netstat -antup | grep ftp出力が以下と類似している場合、FTP サービスは正常に起動しています。

この時点で、vsftpd はデフォルトで匿名ユーザーモードが有効になっています。ユーザー名およびパスワードを入力せずに FTP サーバーにログインできます。この方法でログインしたユーザーは、ファイルの変更およびアップロード権限を持ちません。
手順 2:vsftpd の構成
以下のコマンドを実行して、FTP サービス専用のユーザーを作成し、パスワードを設定します。本トピックでは例として
ftpuserを使用します。sudo useradd -d /data/ftp -s /sbin/nologin ftpuser # ホームディレクトリを指定し、シェルアクセスを無効化 sudo passwd ftpuser以下のコマンドを実行して、FTP サービス用のフォルダを作成し、ディレクトリ権限を構成します。
sudo mkdir -p /data/ftp # カスタムストレージディレクトリを作成 sudo chown ftpuser:ftpuser /data/ftp sudo chmod 750 /data/ftp # 権限は 755 または 750 である必要がありますvsftpd構成ファイルを編集します。説明FTP サーバーは、アクティブモードまたはパッシブモードでクライアントに接続し、データを転送できます。ほとんどのクライアントマシンではファイアウォール設定が有効であり、実際の IP アドレスを取得できないため、FTP サービスの構築にはパッシブモードの使用を推奨します。以下に示す変更は、パッシブモードの設定を目的としています。
以下のコマンドを実行して、
vsftpd構成ファイルのバックアップを作成します。sudo cp /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf.bak以下のコマンドを実行して、構成ファイルを編集します。
sudo vim /etc/vsftpd/vsftpd.confFTP サービスの基本的なセキュリティ構成を変更します。
listen=YES # IPv4 リスナーを有効化 anonymous_enable=NO # 匿名アクセスを無効化 local_enable=YES # ローカルユーザーのログインを有効化 write_enable=YES # ファイルアップロードを許可 chroot_local_user=YES # ユーザーをホームディレクトリに制限 allow_writeable_chroot=YES # chroot 書き込みエラーを解決構成ファイルの末尾にパッシブモードの構成を追加します。
pasv_enable=YES # パッシブモードを有効化 pasv_min_port=40000 # パッシブポート範囲の下限 pasv_max_port=40100 # パッシブポート範囲の上限 pasv_address=public_ip_address # サーバーのパブリック IP アドレスに設定する必要があります
以下のコマンドを実行して、
vsftpdサービスを再起動します。sudo systemctl restart vsftpd
手順 3:セキュリティグループルールの設定
FTP サービスを構築した後、使用する FTP モードに応じて、Linux インスタンスのセキュリティグループにインバウンドルールを追加します。詳細については、「セキュリティグループルールの追加」をご参照ください。
ほとんどのクライアントマシンは LAN(ローカルエリアネットワーク)内にあり、その IP アドレスは変換されます。FTP のアクティブモードを使用する場合、クライアントマシンが実際の IP アドレスを取得することを確認してください。そうでないと、クライアントが FTP サーバーにログインできなくなる可能性があります。適切な構成により、接続障害を防止し、FTP サービスの安定性および可用性を向上させることができます。
アクティブモード:ポート 21 のトラフィックを許可します。
パッシブモード:ポート 21 および /etc/vsftpd/vsftpd.conf ファイルで指定された pasv_min_port から pasv_max_port の間のすべてのポートのトラフィックを許可します。本トピックでは、ポート 40000 ~ 40100 を許可します。FTP のパッシブモードでポート範囲が必要となる理由および構成に関する推奨事項については、「FTP パッシブモードのポート構成に関する推奨事項」をご参照ください。
手順 4:FTP サービスの検証
FTP サービスの検証には、FTP クライアント、ブラウザ、またはファイルエクスプローラーを使用できます。本トピックでは、クライアントのファイルエクスプローラーを例として説明します。
ローカル接続のテスト
以下のコマンドを実行して、ローカルマシンからの接続をテストします。
ftp ftpuser@localhostコンソールに
Login successfulというメッセージが表示されれば、接続は成功しています。
クライアント接続のテスト
クライアントコンピューターでファイルエクスプローラーを開き、図に示す通りに次のアドレスにアクセスします。

表示されるログインダイアログボックスで、FTP ユーザー名およびパスワードを入力します。ログイン後に、ファイルのアップロードおよびダウンロードが可能です。
Ubuntu および Debian
手順 1:VSFTP のインストール
以下のコマンドを実行して、システムコンポーネントを更新し、
vsftpdサービスをインストールします。sudo apt update && sudo apt upgrade -y sudo apt install vsftpd -y以下のコマンドを実行して、
vsftpdサービスを起動し、システム起動時に自動的に開始されるように設定します。sudo systemctl start vsftpd sudo systemctl enable vsftpd
手順 2:VSFTP の構成
以下のコマンドを実行して、専用の FTP ユーザーを作成します。
sudo useradd -m -s /bin/bash ftpuser # ユーザーを作成し、ホームディレクトリを自動生成 sudo passwd ftpuser # ユーザーのパスワードを設定(強力なパスワードを推奨)以下のコマンドを実行して、ファイルストレージディレクトリを作成し、権限を構成します。
sudo mkdir /home/ftpuser/ftp-files sudo chown ftpuser:ftpuser /home/ftpuser/ftp-files sudo chmod 755 /home/ftpuser/ftp-files元の構成ファイルのバックアップを作成するため、以下のコマンドを実行します。
sudo cp /etc/vsftpd.conf /etc/vsftpd.conf.bak以下のコマンドを実行して、構成ファイルを編集します。
sudo nano /etc/vsftpd.conf以下の構成設定を変更します:
# 基本構成 listen=YES anonymous_enable=NO # 匿名アクセスを無効化 local_enable=YES # ローカルユーザーのログインを許可 write_enable=YES # 書き込み権限を有効化 chroot_local_user=YES # ユーザーをホームディレクトリ内に制限ファイルの末尾に以下の構成を追加します:
allow_writeable_chroot=YES # chroot ディレクトリへの書き込みを許可 local_root=/home/ftpuser/ftp-files # FTP ユーザーのルートディレクトリを指定 # 外部ネットワーク接続の問題を解決するためのパッシブモード構成 pasv_enable=YES pasv_address=xx.xx.xx.xx # ご利用のパブリック IP アドレスに置き換えます pasv_min_port=40000 pasv_max_port=40100以下のコマンドを実行して、FTP サービスを再起動します。
sudo systemctl restart vsftpdFTP のインストール後、デフォルトでパスワードなしの ftp というユーザーが作成されます。以下のコマンドを実行して、ftp ユーザーのパスワードを変更します。
sudo passwd ftp強力なパスワードを設定し、その他のプロンプトはすべてスキップします。
ユーザーを許可された FTP ユーザーのリストに追加します。
echo "ftp" | sudo tee -a /etc/vsftpd.userlistFTP ファイルディレクトリを作成し、ユーザーに権限を付与します。
FTP フォルダを作成します。
sudo mkdir /home/ftpフォルダの所有者を設定します。
本例では、フォルダに対して読み取り、書き込み、完全制御の権限を付与しています。必要に応じて、権限を変更できます。
sudo chmod 777 /home/ftp
手順 3:セキュリティグループルールの設定
FTP サービスを構築した後、使用する FTP モードに応じて、Linux インスタンスのセキュリティグループにインバウンドルールを追加します。詳細については、「セキュリティグループルールの追加」をご参照ください。
ほとんどのクライアントマシンは LAN(ローカルエリアネットワーク)内にあり、その IP アドレスは変換されます。FTP のアクティブモードを使用する場合、クライアントマシンが実際の IP アドレスを取得することを確認してください。そうでないと、クライアントが FTP サーバーにログインできなくなる可能性があります。適切な構成により、接続障害を防止し、FTP サービスの安定性および可用性を向上させることができます。
アクティブモード:ポート 21 のトラフィックを許可します。
パッシブモード:ポート 21 および /etc/vsftpd/vsftpd.conf ファイルで指定された pasv_min_port から pasv_max_port の間のすべてのポートのトラフィックを許可します。FTP のパッシブモードでポート範囲が必要となる理由および構成に関する推奨事項については、「Windows インスタンス上での FTP サイト構築」をご参照ください。
手順 4:FTP サービスの検証
FTP サービスの検証には、FTP クライアント、ブラウザ、またはファイルエクスプローラーを使用できます。本トピックでは、クライアントのファイルエクスプローラーを例として説明します。
ローカル接続のテスト
以下のコマンドを実行して、ローカルマシンからの接続をテストします。
ftp ftpuser@localhostコンソールに
Login successfulというメッセージが表示されれば、接続は成功しています。
クライアント接続のテスト
クライアントコンピューターでファイルエクスプローラーを開き、図に示す通りに次のアドレスにアクセスします。

表示されるログインダイアログボックスで、FTP ユーザー名およびパスワードを入力します。ログイン後に、ファイルのアップロードおよびダウンロードが可能です。
よくあるエラー
現象 | 対処方法 |
| パブリック IP アドレスの関連付け状況およびクライアント・サーバー双方のファイアウォールルールを確認します。 |
| ディレクトリ権限を 755 に変更します。 |
空のディレクトリのみが一覧表示される |
|
|
|
パッシブモード接続のタイムアウト | ファイアウォールルールおよび pasv_address の設定を確認します。 |
ファイルをアップロードできない | ディレクトリ権限が 755 または 750 であることを確認します。 |
付録
vsftpd 構成ファイルおよびパラメーター
以下のセクションでは、/etc/vsftpd ディレクトリ内のファイルについて説明します:
/etc/vsftpd/vsftpd.confは、vsftpd のコア構成ファイルです。/etc/vsftpd/ftpusersはブラックリストファイルです。このファイルに記載されたユーザーは FTP サーバーにアクセスできません。/etc/vsftpd/user_listはホワイトリストファイルです。このファイルに記載されたユーザーは FTP サーバーにアクセスできます。
以下の表では、vsftpd.conf 構成ファイル内のパラメーターについて説明します:
以下の表では、ログイン制御に関するパラメーターを説明します。
パラメーター
説明
anonymous_enable=YES
匿名ユーザーを許可します。
no_anon_password=YES
匿名ユーザーはパスワードなしでログインできます。
anon_root=(none)
匿名ユーザーのホームディレクトリです。
local_enable=YES
ローカルユーザーを許可します。
local_root=(none)
ローカルユーザーのホームディレクトリです。
以下の表では、ユーザー権限制御に関するパラメーターを説明します。
パラメーター
説明
write_enable=YES
ファイルのアップロードを許可します(グローバル設定)。
local_umask=022
ローカルユーザーがアップロードしたファイルの権限です。
file_open_mode=0666
アップロードされたファイルの権限です。この設定は local_umask と併用されます。
anon_upload_enable=NO
匿名ユーザーによるファイルアップロードを許可します。
anon_mkdir_write_enable=NO
匿名ユーザーによるディレクトリ作成を許可します。
anon_other_write_enable=NO
匿名ユーザー:編集、削除
chown_username=lightwiter
匿名ファイルアップロード用のユーザー名