すべてのプロダクト
Search
ドキュメントセンター

Elastic Compute Service:Linux インスタンス上での FTP サイト構築

最終更新日:Mar 02, 2026

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 のインストール

  1. 以下のコマンドを実行して、システムコンポーネントを更新し、vsftpd サービスをインストールします。

    sudo yum update -y 
    sudo yum install vsftpd -y
  2. 以下のコマンドを実行して、FTP サービスを起動し、システム起動時に自動的に開始されるように設定します。

    sudo systemctl start vsftpd
    sudo systemctl enable vsftpd 
  3. 以下のコマンドを実行して、サービスが起動しているかどうかを確認します。

    netstat -antup | grep ftp

    出力が以下と類似している場合、FTP サービスは正常に起動しています。

    image

    この時点で、vsftpd はデフォルトで匿名ユーザーモードが有効になっています。ユーザー名およびパスワードを入力せずに FTP サーバーにログインできます。この方法でログインしたユーザーは、ファイルの変更およびアップロード権限を持ちません。

手順 2:vsftpd の構成

  1. 以下のコマンドを実行して、FTP サービス専用のユーザーを作成し、パスワードを設定します。本トピックでは例として ftpuser を使用します。

    sudo useradd -d /data/ftp -s /sbin/nologin ftpuser  # ホームディレクトリを指定し、シェルアクセスを無効化
    sudo passwd ftpuser 
  2. 以下のコマンドを実行して、FTP サービス用のフォルダを作成し、ディレクトリ権限を構成します。

    sudo mkdir -p /data/ftp      # カスタムストレージディレクトリを作成
    sudo chown ftpuser:ftpuser /data/ftp
    sudo chmod 750 /data/ftp    # 権限は 755 または 750 である必要があります
  3. vsftpd 構成ファイルを編集します。

    説明

    FTP サーバーは、アクティブモードまたはパッシブモードでクライアントに接続し、データを転送できます。ほとんどのクライアントマシンではファイアウォール設定が有効であり、実際の IP アドレスを取得できないため、FTP サービスの構築にはパッシブモードの使用を推奨します。以下に示す変更は、パッシブモードの設定を目的としています。

    1. 以下のコマンドを実行して、vsftpd 構成ファイルのバックアップを作成します。

      sudo cp /etc/vsftpd/vsftpd.conf  /etc/vsftpd/vsftpd.conf.bak
    2. 以下のコマンドを実行して、構成ファイルを編集します。

      sudo vim /etc/vsftpd/vsftpd.conf
    3. FTP サービスの基本的なセキュリティ構成を変更します。

      listen=YES                   # IPv4 リスナーを有効化
      anonymous_enable=NO          # 匿名アクセスを無効化
      local_enable=YES             # ローカルユーザーのログインを有効化
      write_enable=YES             # ファイルアップロードを許可
      chroot_local_user=YES        # ユーザーをホームディレクトリに制限
      allow_writeable_chroot=YES   # chroot 書き込みエラーを解決
    4. 構成ファイルの末尾にパッシブモードの構成を追加します。

      pasv_enable=YES              # パッシブモードを有効化
      pasv_min_port=40000          # パッシブポート範囲の下限
      pasv_max_port=40100          # パッシブポート範囲の上限
      pasv_address=public_ip_address      # サーバーのパブリック IP アドレスに設定する必要があります
  4. 以下のコマンドを実行して、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 クライアント、ブラウザ、またはファイルエクスプローラーを使用できます。本トピックでは、クライアントのファイルエクスプローラーを例として説明します。

  1. ローカル接続のテスト

    以下のコマンドを実行して、ローカルマシンからの接続をテストします。

    ftp ftpuser@localhost 

    コンソールに Login successful というメッセージが表示されれば、接続は成功しています。

    image

  2. クライアント接続のテスト

    クライアントコンピューターでファイルエクスプローラーを開き、図に示す通りに次のアドレスにアクセスします。

    image

    表示されるログインダイアログボックスで、FTP ユーザー名およびパスワードを入力します。ログイン後に、ファイルのアップロードおよびダウンロードが可能です。

Ubuntu および Debian

手順 1:VSFTP のインストール

  1. 以下のコマンドを実行して、システムコンポーネントを更新し、vsftpd サービスをインストールします。

    sudo apt update && sudo apt upgrade -y
    sudo apt install vsftpd -y
  2. 以下のコマンドを実行して、vsftpd サービスを起動し、システム起動時に自動的に開始されるように設定します。

    sudo systemctl start vsftpd
    sudo systemctl enable vsftpd

手順 2:VSFTP の構成

  1. 以下のコマンドを実行して、専用の FTP ユーザーを作成します。

    sudo useradd -m -s /bin/bash ftpuser  # ユーザーを作成し、ホームディレクトリを自動生成
    sudo passwd ftpuser  # ユーザーのパスワードを設定(強力なパスワードを推奨)
  2. 以下のコマンドを実行して、ファイルストレージディレクトリを作成し、権限を構成します。

    sudo mkdir /home/ftpuser/ftp-files
    sudo chown ftpuser:ftpuser /home/ftpuser/ftp-files
    sudo chmod 755 /home/ftpuser/ftp-files
  3. 元の構成ファイルのバックアップを作成するため、以下のコマンドを実行します。

    sudo cp /etc/vsftpd.conf /etc/vsftpd.conf.bak
  4. 以下のコマンドを実行して、構成ファイルを編集します。

    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
  5. 以下のコマンドを実行して、FTP サービスを再起動します。

    sudo systemctl restart vsftpd
  6. FTP のインストール後、デフォルトでパスワードなしの ftp というユーザーが作成されます。以下のコマンドを実行して、ftp ユーザーのパスワードを変更します。

     sudo passwd ftp

    強力なパスワードを設定し、その他のプロンプトはすべてスキップします。

  7. ユーザーを許可された FTP ユーザーのリストに追加します。

     echo "ftp" | sudo tee -a /etc/vsftpd.userlist
  8. FTP ファイルディレクトリを作成し、ユーザーに権限を付与します。

    1. FTP フォルダを作成します。

       sudo mkdir /home/ftp
    2. フォルダの所有者を設定します。

      本例では、フォルダに対して読み取り、書き込み、完全制御の権限を付与しています。必要に応じて、権限を変更できます。
       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 クライアント、ブラウザ、またはファイルエクスプローラーを使用できます。本トピックでは、クライアントのファイルエクスプローラーを例として説明します。

  1. ローカル接続のテスト

    以下のコマンドを実行して、ローカルマシンからの接続をテストします。

    ftp ftpuser@localhost 

    コンソールに Login successful というメッセージが表示されれば、接続は成功しています。

    image

  2. クライアント接続のテスト

    クライアントコンピューターでファイルエクスプローラーを開き、図に示す通りに次のアドレスにアクセスします。

    image

    表示されるログインダイアログボックスで、FTP ユーザー名およびパスワードを入力します。ログイン後に、ファイルのアップロードおよびダウンロードが可能です。

よくあるエラー

現象

対処方法

227 Entering Passive Mode の後にタイムアウトが発生

パブリック IP アドレスの関連付け状況およびクライアント・サーバー双方のファイアウォールルールを確認します。

550 Permission denied

ディレクトリ権限を 755 に変更します。

空のディレクトリのみが一覧表示される

chroot_local_user の構成を確認します。

500 OOPS: vsftpd: refusing to run with writable root

chmod a-w /data/ftp を実行します。

パッシブモード接続のタイムアウト

ファイアウォールルールおよび 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

    匿名ファイルアップロード用のユーザー名