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

Elastic Compute Service:Linux インスタンスに FTP サーバーを構築する

最終更新日:Feb 14, 2025

Very secure FTP daemon (vsftpd) は、広く使用されているオープンソースの FTP サーバーソフトウェアです。 vsftpd は、高パフォーマンス、高セキュリティ、高安定性で知られており、FTP、SSH 経由の SFTP、SSL/TLS 経由の FTP など、さまざまな FTP 関連プロトコルをサポートしています。このトピックでは、Linux Elastic Compute Service (ECS) インスタンスに vsftpd をインストールして構成する方法について説明します。

クイックデプロイ

こちらをクリックして Terraform Explorer に移動し、Terraform コードを表示して実行し、ECS インスタンスに FTP サイトを自動的に構築します。

前提条件

ECS インスタンスが作成され、以下の設定がされています。ECS インスタンスが作成されていない場合は、ECS インスタンスを作成します。詳細については、「カスタム起動タブでインスタンスを作成する」をご参照ください。

  • オペレーティングシステム: Alibaba Cloud Linux 3、Alibaba Cloud Linux 2、CentOS 7.x 64 ビット、Ubuntu、または Debian。

  • IP アドレス: インスタンスには、固定パブリック IP アドレス (自動割り当てまたはシステム割り当てパブリック IP アドレスとも呼ばれます) が割り当てられているか、Elastic IP アドレス (EIP) に関連付けられています。詳細については、「EIP」をご参照ください。

メリット

vsftpd は、Unix および Linux 用に設計されたオープンソースの FTP サーバーソフトウェアです。 vsftpd には次の利点があります。

  • 高セキュリティ: vsftpd は厳格なセキュリティ監査を受け、さまざまなセキュリティメカニズムを使用して、一般的な攻撃や脆弱性を効果的に防ぎます。

  • 優れたパフォーマンス: vsftpd は、高パフォーマンスのファイル転送機能を提供し、多数の同時接続をサポートします。

  • シンプルな構成: vsftpd は、さまざまなユーザーニーズに合わせて、柔軟で理解しやすい構成オプションを提供します。

  • IPv6: vsftpd は、次世代ネットワークプロトコルのサポートを提供します。

VSFTP サービスを構築する

Alibaba Cloud Linux 2、Alibaba Cloud Linux 3、および CentOS 7.x

手順 1: vsftpd をインストールする

  1. 次のコマンドを実行して、Yellowdog Updater Modified (YUM) リポジトリを更新し、vsftpd をインストールします。

    sudo yum update
    sudo yum install -y vsftpd
  2. 次のコマンドを実行して、vsftpd がシステム起動時に自動的に起動するように構成します。

    systemctl enable vsftpd
  3. 次のコマンドを実行して、FTP を起動します。

    systemctl start vsftpd
  4. 次のコマンドを実行して、FTP が起動するかどうかを確認します。

    netstat -antup | grep ftp

    次のコマンド出力が返された場合、FTP は想定どおりに起動しています。

    image

    デフォルトでは、vsftpd は匿名モードで有効になっており、ユーザー名またはパスワードを入力せずに FTP サーバーにログオンできます。匿名モードで FTP サーバーにログオンするユーザーは、ファイルを変更またはアップロードできません。

手順 2: vsftpd を構成する

  1. 次のコマンドを実行して、FTP サービス用の Linux ユーザーを作成します。この例では、ftpuser ユーザーが作成されます。

    useradd ftpuser
  2. 次のコマンドを実行して、ftpuser ユーザーのパスワードを指定します。

    passwd ftpuser

    パスワードを入力し、Enter キーを押します。パスワードはデフォルトでは表示されません。

  3. 次のコマンドを実行して、FTP サービスが使用するファイルディレクトリを作成します。この例では、/var/ftp/test ディレクトリが使用されます。

    mkdir /var/ftp/test
  4. 次のコマンドを実行して、ディレクトリの権限を変更します。

    chown -R ftpuser:ftpuser /var/ftp/test
  5. 次のコマンドを実行して、vsftpd.conf ファイルを開きます。

    vim /etc/vsftpd/vsftpd.conf
  6. I キーを押して挿入モードに入り、ビジネス要件に基づいて FTP モードを選択し、vsftpd.conf ファイルを変更します。

    説明

    FTP サーバーでは、FTP クライアントがアクティブモードまたはパッシブモードで接続してファイルを転送できます。FTP サービスを構築するには、パッシブモードを指定することをお勧めします。これにより、FTP クライアントマシンのファイアウォール設定と IP アドレス変換によって発生する問題を防ぎます。次の例では、パッシブモードが使用されています。

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

      sudo cp /etc/vsftpd/vsftpd.conf  /etc/vsftpd/vsftpd.conf.bak
    2. 次のパラメーターを変更して、匿名ユーザーとローカルユーザーにアクセス権限を付与し、例外ユーザーリストファイルが格納されているパスを指定し、IPv4 ソケットでリッスンします。

      anonymous_enable=NO
      local_enable=YES
      write_enable=YES
      chroot_local_user=YES
      chroot_list_enable=YES
      chroot_list_file=/etc/vsftpd/chroot_list
      listen=YES
    3. 行の先頭にシャープ記号 (#) を追加して、listen_ipv6=YES パラメーターをコメントアウトし、インスタンスが IPv6 ソケットでリッスンしないようにします。

      #listen_ipv6=YES
    4. 次のパラメーターを追加してパッシブモードを有効にし、ローカルユーザーが FTP サーバーにログオンした後にアクセスするディレクトリと、インスタンスが FTP 接続を確立するために使用できるポート範囲を指定します。

      local_root=/var/ftp/test
      allow_writeable_chroot=YES
      #If pasv_enable is set to YES, the passive mode is enabled. If pasv_enable is set to NO, the active mode is used.
      pasv_enable=YES
      #Replace the value with the public IP address of your Linux ECS instance.
      pasv_address=xxx.xx.xxx.xx
      pasv_min_port=40000
      pasv_max_port=40100
      説明

      特定のポートを開く理由と、パッシブモードでポートを開く方法についての推奨事項については、「Windows インスタンスに FTP サイトを構築する」をご参照ください。

  7. Esc キーを押し、:wq と入力し、Enter キーを押してファイルを保存して閉じます。

  8. 次のコマンドを実行して、chroot_list ファイルを作成して開きます。

    vim /etc/vsftpd/chroot_list
  9. I キーを押して挿入モードに入り、ユーザー名を入力します。1 つのユーザー名は 1 行を占めます。すべての設定を構成した後、Esc キーを押し、:wq と入力し、Enter キーを押してファイルを保存して閉じます。構成されたユーザーはホームディレクトリにロックされます。例外ユーザーを指定したくない場合は、この手順をスキップし、:q と入力してファイルを閉じます。

    image

  10. 次のコマンドを実行して、FTP を再起動します。

    systemctl restart vsftpd

手順 3: セキュリティグループルールを構成する

FTP サービスを構築した後、FTP モードに基づいて、Linux ECS インスタンスが属するセキュリティグループにセキュリティグループのインバウンドルールを追加する必要があります。詳細については、「セキュリティグループルールを追加する」をご参照ください。

ほとんどのクライアントマシンは LAN (ローカルエリアネットワーク) にあり、IP アドレスは変換されます。FTP アクティブモードを指定する場合は、クライアントマシンが実際の IP アドレスを使用して FTP サーバーへの接続を開始できることを確認してください。そうしないと、クライアントは FTP サーバーに接続できない場合があります。接続の問題を防ぎ、FTP サービスの安定性と可用性を向上させるために、構成が正しいことを確認してください。

  • アクティブモード: ポート 21 を開きます。

  • パッシブモード: ポート 21 と、/etc/vsftpd/vsftpd.conf ファイルで指定された開始ポート (pasv_min_port) から終了ポート (pasv_max_port) までのすべてのポートを開きます。この例では、ポート 40000 から 40100 が開かれています。

手順 4: FTP サービスを確認する

FTP クライアントソフトウェア、ブラウザ、またはファイルリソースマネージャーを使用して、FTP サービスを確認できます。この例では、ファイルエクスプローラーが FTP クライアントとして使用されています。

  1. FTP クライアントとして機能するコンピューターで、次の図に示すように、アドレスバーで次のアドレスにアクセスします。

    image

  2. 表示される [ダイアログボックス] で、手順 2.2 で指定したユーザー名とパスワードを入力します。

  3. FTP サーバーにログオンすると、ファイルをアップロードおよびダウンロードできます。

Ubuntu および Debian

手順 1: VSFTP をインストールする

  1. 次のコマンドを実行して、vsftpd をインストールします。

    # Advanced Packaging Tool (APT) リポジトリを更新します。
    sudo apt-get update
    sudo apt-get install vsftpd
  2. 次のコマンドを実行して、元の構成ファイルをバックアップします。

    sudo cp /etc/vsftpd.conf /etc/vsftpd.conf.bak

手順 2: VSFTP を構成する

  1. 次のコマンドを実行して、vsftpd の構成ファイルを開きます。

    sudo vim /etc/vsftpd.conf
  2. 構成ファイルの構成を変更します。

    1. 次の構成を変更して、FTP アクセス権限を構成します。ローカルユーザーのみが FTP にアクセスできるようにし、匿名アクセスを無効にします。

      anonymous_enable=NO
      local_enable=YES
    2. 次の構成を変更して、ファイルのアップロードを有効にします。

      write_enable=YES
    3. 次の行の先頭のシャープ記号 (#) を削除して、chroot jail を使用して FTP ユーザーアクセスを制限し、アクセス可能な FTP ユーザーファイルを構成します。

      chroot_local_user=YES
      chroot_list_file=/etc/vsftpd.chroot_list
    4. 次の構成を構成ファイルに追加して、FTP サービスディレクトリを作成し、ユーザーがアタッチされた chroot ディレクトリに書き込むことを許可します。デフォルトでは、ユーザーは書き込み可能な chroot ディレクトリに書き込むことができません。

      local_root=/home/ftp 
      allow_writeable_chroot=YES
    5. (オプション) 次の構成を変更して、FTP パッシブモードを構成します。 vsftpd は任意のポートを使用してパッシブ FTP 接続を確立できます。 vsftpd が使用できるポート範囲を定義するために、最小および最大のポート番号を指定できます。

      パッシブ FTP 接続を許可するには、次の行を構成ファイルに追加します。

      pasv_min_port=35000
      pasv_max_port=40000
    6. 次のコマンドを実行して vsftpd を再起動し、構成を有効にします。

      sudo systemctl restart vsftpd

手順 3: FTP ユーザーディレクトリを構成する

  1. FTP をインストールすると、ftp という名前のユーザーが自動的に作成され、パスワードは指定されません。次のコマンドを実行して、デフォルトのユーザー名のパスワードを変更します。

    sudo passwd ftp

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

  2. 次のコマンドを実行して、ユーザーを許可された FTP ユーザーのリストに追加します。

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

    1. 次のコマンドを実行して、FTP ディレクトリを作成します。

      sudo mkdir /home/ftp
    2. 次のコマンドを実行して、ユーザーにディレクトリへのアクセス権を付与します。この例では、読み取り権限や書き込み権限など、ディレクトリに対するすべての権限がユーザーに付与されます。ビジネス要件に基づいて権限を変更できます。

      sudo chmod 777 /home/ftp

手順 4: セキュリティグループルールを構成する

FTP サービスを構築した後、FTP モードに基づいて、Linux ECS インスタンスが属するセキュリティグループにインバウンドルールを追加する必要があります。

ほとんどのクライアントマシンは LAN にあり、IP アドレスは変換されます。FTP アクティブモードを指定する場合は、クライアントマシンが実際の IP アドレスを使用して FTP サーバーへの接続を開始できることを確認してください。そうしないと、クライアントは FTP サーバーに接続できない場合があります。接続の問題を防ぎ、FTP サービスの安定性と可用性を向上させるために、構成が正しいことを確認してください。

  • アクティブモード: ポート 21 を開きます。

  • パッシブモード: /etc/vsftpd/vsftpd.conf ファイルで指定された開始ポート (pasv_min_port) から終了ポート (pasv_max_port) までのすべてのポートとポート 21 を開きます。特定のポートを開く理由と、FTP パッシブモードでポートを開く方法についての推奨事項については、「Windows インスタンスに FTP サイトを構築する」をご参照ください。

手順 4: FTP サービスを確認する

FTP クライアントソフトウェア、ブラウザ、またはファイルリソースマネージャーを使用して、FTP サービスを確認できます。この例では、ファイルエクスプローラーが FTP クライアントとして使用されています。

  1. FTP クライアントが存在するコンピューターで、次の図に示すように、アドレスバーで次のアドレスにアクセスします。

    image

  2. 表示される [ダイアログボックス] で、手順 2.2 で指定したユーザー名とパスワードを入力します。

  3. FTP サーバーにログオンすると、ファイルをアップロードおよびダウンロードできます。

付録

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

    匿名ユーザーがパスワードを入力せずに FTP サーバーにログオンできるようにします。

    anon_root=(none)

    匿名ユーザーのホームディレクトリを指定します。

    local_enable=YES

    ローカルユーザーを受け入れます。

    local_root=(none)

    ローカルユーザーのホームディレクトリを指定します。

  • 次の表では、ユーザーの権限を管理するために使用されるパラメーターについて説明します。

    パラメーター

    説明

    write_enable=YES

    すべてのユーザーがファイルをアップロードできるようにします。

    local_umask=022

    ローカルユーザーにファイルをアップロードする権限を付与します。

    file_open_mode=0666

    umask を使用して、ファイルをアップロードする権限を付与します。

    anon_upload_enable=NO

    匿名ユーザーがファイルをアップロードできるようにします。

    anon_mkdir_write_enable=NO

    匿名ユーザーがディレクトリを作成できるようにします。

    anon_other_write_enable=NO

    匿名ユーザーがファイルを変更および削除できるようにします。

    chown_username=lightwiter

    匿名ユーザーによってアップロードされたファイルの所有権を指定します。