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

Elastic Compute Service:LinuxインスタンスでのFTPサーバーの構築

最終更新日:Sep 06, 2024

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

前提条件

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

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

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

  • セキュリティグループ: インバウンドルールがインスタンスのセキュリティグループに追加され、ポート22、80、および443を開きます。 インバウンドセキュリティグループルールを追加する方法の詳細については、「セキュリティグループルールの追加」をご参照ください。

手順

ステップ1: vsftpdのインストール

  1. Linuxインスタンスに接続します。

    詳細については、「パスワードまたはキーを使用したLinuxインスタンスへの接続」をご参照ください。

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

    Alibaba Cloud Linux、CentOS 7.x、またはCentOS 8.x

    重要

    CentOS 8は寿命 (EOL) に達しました。 Linuxコミュニティルールに従って、すべてのコンテンツが次のCentOS 8リポジトリアドレスから削除され http://mirror.centos.org/centos/8/ た。 Alibaba CloudでデフォルトのCentOS 8リポジトリを引き続き使用すると、エラーが報告されます。 特定のCentOS 8インストールパッケージを使用するには、CentOS 8リポジトリアドレスを変更します。 詳細については、「CentOS 8リポジトリアドレスの変更」をご参照ください。

    sudo yum install -y vsftpd

    Ubuntu

    sudo apt update
    sudo apt install -y vsftpd

    次の図に示すコマンド出力は、vsftpdがインストールされていることを示します。

    説明

    インストールできるvsftpdのバージョンは、オペレーティングシステムによって異なります。

    install_vsftp_successfully

  3. 次のコマンドを実行してFTPサービスを開始し、システム起動時にサービスを自動的に開始できるようにします。

    sudo systemctl start vsftpd
    sudo systemctl enable vsftpd
    説明

    上記のコマンドの実行時にシステムが [ジョブfor vsftpd.serviceがエラーコードで終了したため] エラーメッセージを返した場合は、次の問題が存在するかどうかを確認し、問題のトラブルシューティングを行います。

    • IPv6アドレスがサポートされていない場合は、設定ファイル /etc/vsftpd/vsftpd.confのlisten_ipv6パラメーターの値をYESからNOに変更します。

    • /etc/sysconfig/network-scripts/ifcfg-xxx設定ファイルで指定されているメディアアクセス制御 (MAC) アドレスが実際のMACアドレスと一致しない場合は、ifconfigコマンドを実行して実際のMACアドレスを照会します。 次に、HWADDR=<実際のMACアドレス> を設定ファイルに追加するか、既存のHWADDR値を設定ファイルの実際のMACアドレスに置き換えます。

  4. 次のコマンドを実行して、FTPサービスのリスニングポートを照会します。

    sudo netstat -antup | grep ftp

    次の図に示すコマンド出力は、FTPサービスが開始され、ポート21をリッスンしていることを示しています。

    デフォルトでは、vsftpdでは匿名アクセスが有効になっています。 ユーザー名またはパスワードなしでFTPサーバーにログオンできます。 ただし、ファイルを変更またはアップロードする権限はありません。install_vsftpd_3

ステップ2: vsftpdの設定

  1. Linuxユーザーを作成し、ユーザーのパスワードを指定します。

    FTPは次の認証モードをサポートしています。

    • 匿名ユーザーモード: このモードでは、ユーザーはユーザー名またはパスワードなしでFTPサーバーにログオンできます。 これは最も安全でない認証モードである。 ほとんどの場合、このモードは重要でないパブリックファイルを保存するために使用されます。 本番環境でファイルを保存するためにこのモードを使用しないことを推奨します。

    • ローカルユーザーモード: このモードでは、ローカルLinuxユーザーを作成する必要があります。 このモードは、匿名ユーザーモードよりも安全です。

    • 仮想ユーザーモード: 仮想ユーザーはFTPサーバーの専用ユーザーです。 仮想ユーザーは、Linuxシステムが提供するFTPサービスにのみアクセスでき、システムの他のリソースにはアクセスできません。 これにより、FTPサーバのセキュリティが強化される。

    このセクションでは、FTPサービス用にローカルLinuxユーザーが作成されます。

    Alibaba Cloud Linux、CentOS 7.x、またはCentOS 8.x

    1. 次のコマンドを実行して、FTPサービス用のLinuxユーザーを作成します。

      この例では、ftptestユーザーが作成されます。

      sudo adduser ftptest
    2. 次のコマンドを実行して、ftptestユーザーのパスワードを変更します。

      sudo passwd ftptest

      コマンドラインのプロンプトに従って、ユーザーのパスワードを変更します。

      image

    Ubuntu

    次のコマンドを実行して、FTPサービス用のLinuxユーザーを作成します。

    この例では、ftptestユーザーが作成されます。

    sudo adduser ftptest

    プロンプトに従ってパスワードを入力して確認します。

    image

  2. 次のコマンドを実行して、FTPサービス用のファイルディレクトリを作成します。

    sudo mkdir -p /var/ftp/test
  3. 次のコマンドを実行して、テストファイルを作成します。

    テストファイルは、FTPクライアントがFTPサーバーにアクセスするときに使用されます。

    sudo touch /var/ftp/test/testfile.txt
  4. 次のコマンドを実行して、/var/ftp/testディレクトリの所有者をftptestに変更します。

    sudo chown -R ftptest:ftptest /var/ftp/test
  5. vsftpd.conf設定ファイルを変更します。

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

      Alibaba Cloud Linux、CentOS 7.x、またはCentOS 8.x

      sudo vim /etc/vsftpd/vsftpd.conf

      Ubuntu

      sudo vim /etc/vsftpd.conf
    2. Iキーを押して挿入モードに入ります。

    3. FTPサーバーの作業モードを設定します。

      FTPサーバーは、次の作業モードをサポートしています。

      • アクティブモード: FTPクライアントはFTPポート情報をFTPサーバーに送信し、FTPサーバーはポートを介したFTPクライアントへの接続を初期化します。

      • パッシブモード: FTPサーバーはポートを開き、ポート情報をFTPクライアントに送信します。 FTPクライアントは、ポートを介してFTPサーバーへの接続を初期化し、FTPサーバーはその接続を受け入れます。

      説明

      ほとんどのFTPクライアントはLANに配置され、独立したパブリックIPアドレスを持たず、ファイアウォールによって保護されています。 その結果、アクティブモードのFTPサーバーはクライアントへの接続を確立できません。 特別な要件がない場合は、FTPサーバーにパッシブモードを使用することをお勧めします。

      このセクションでは、FTPサーバーにパッシブモードが使用されます。 次のパラメーターを設定し、他のパラメーターのデフォルト値を保持します。

      重要

      設定ファイルの情報を変更または追加するときは、形式に注意してください。 たとえば、余分なスペースがあると、サービスの再起動に失敗する可能性があります。

      次のパラメータを変更します。

      #Prevent anonymous users from logging on to the FTP server. 
      anonymous_enable=NO
      #Allow local users to log on to the FTP server. 
      local_enable=YES
      #Listen on IPv4 sockets. 
      listen=YES

      行の先頭に番号記号 (#) を追加して、次のパラメーターをコメントアウトし、IPv6ソケットのリスニングを無効にします。

      #listen_ipv6=YES

      設定ファイルの末尾に次のパラメーターを追加します。 pasv_addressパラメーターの値をFTPサーバーのパブリックIPアドレスに変更します。

      Alibaba Cloud Linux、CentOS 7.x、またはCentOS 8.x

      #Specify the directory of a local user after the local user logs on. 
      local_root=/var/ftp/test
      #Limit all users to the home directory after the users log on. 
      chroot_local_user=YES
      #Use a list to specify exception users. Exception users are not limited to the home directory after they log on. 
      chroot_list_enable=YES
      #Specify a file to store the list of exception users. 
      chroot_list_file=/etc/vsftpd/chroot_list
      #Enable passive mode. 
      pasv_enable=YES
      allow_writeable_chroot=YES
      #Enter the public IP address of the FTP server. In this example, the public IP address of the Linux instance that is used. 
      pasv_address=<Public IP address of the FTP server>
      #Specify the minimum port number of the port range to which FTP connections are established in passive mode. 
      #We recommend that you use ports from a range of high-number ports, such as 50000 to 50010. These ports provide more secure access to the FTP server. 
      pasv_min_port=50000
      #Specify the maximum port number of the port range to which FTP connections are established in passive mode. 
      pasv_max_port=50010

      Ubuntu

      #Specify the directory of a local user after the local user logs on. 
      local_root=/var/ftp/test
      #Limit all users to the home directory after the users log on. 
      chroot_local_user=YES
      #Use a list to specify exception users. Exception users are not limited to the home directory after they log on. 
      chroot_list_enable=YES
      #Specify a file to store the list of exception users. 
      chroot_list_file=/etc/vsftpd.chroot_list
      #Enable passive mode. 
      pasv_enable=YES
      allow_writeable_chroot=YES
      #Enter the public IP address of the FTP server. In this example, the public IP address of the Linux instance that is used. 
      pasv_address=<Public IP address of the FTP server>
      #Specify the minimum port number of the port range to which FTP connections are established in passive mode. 
      #We recommend that you use ports from a range of high-number ports, such as 50000 to 50010. These ports provide more secure access to the FTP server. 
      pasv_min_port=50000
      #Specify the maximum port number of the port range to which FTP connections are established in passive mode. 
      pasv_max_port=50010

      その他のパラメーターについては、このトピックの「vsftpd設定ファイルとパラメーター」をご参照ください。

    4. [Esc] キーを押して :wqと入力し、[enter] キーを押して設定ファイルを保存して閉じます。

  6. chroot_listファイルを作成し、例外ユーザーのリストをファイルに書き込みます。

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

      • Alibaba Cloud Linux、CentOS 7.x、またはCentOS 8.x

        sudo vim /etc/vsftpd/chroot_list
      • Ubuntu

        sudo vim /etc/vsftpd.chroot_list
    2. Iキーを押して挿入モードに入ります。

    3. 例外ユーザーを指定します。 例外ユーザーはホームディレクトリに限定されず、他のディレクトリにアクセスできます。

    4. [Esc] キーを押して :wqと入力し、[enter] キーを押して設定ファイルを保存して閉じます。

    重要

    例外ユーザーが存在しない場合でも、chroot_listファイルを作成する必要があります。 ファイルは空にすることができます。

  7. 次のコマンドを実行して、vsftpdサービスを再起動します。

    sudo systemctl restart vsftpd

ステップ 3:セキュリティグループの設定

FTPサイトを構築した後、インスタンスのセキュリティグループにインバウンドルールを追加して、次のFTPポートを開きます。 インバウンドセキュリティグループルールを追加する方法の詳細については、「セキュリティグループルールの追加」をご参照ください。

説明

ほとんどのクライアントはLANにあり、プライベートIPアドレスをパブリックIPアドレスにマッピングして外部リソースと通信できます。 したがって、ipconfigまたはifconfigコマンドによって返されるIPアドレスは、クライアントの実際のパブリックIPアドレスではない可能性があります。 クライアントからFTPサーバーにログオンできない場合は、クライアントのパブリックIPアドレスを確認してください。

パッシブモードでは、ポート21と、/etc/vsftpd/vsftpd.conf設定ファイルのpasv_min_portおよびpasv_max_portパラメーターで指定されたポート範囲内のすべてのポートでトラフィックを許可する必要があります。 次の表に、インバウンドセキュリティグループルールの設定方法を示します。

方向

Action

プロトコルタイプ

ポート範囲

権限付与オブジェクト

インバウンド

許可

カスタマイズTCP

21/21

FTPサーバーにアクセスするすべてのクライアントのパブリックIPアドレス。 IPアドレスはコンマ (,) で区切ります。

すべてのクライアントがFTPサーバーにアクセスできるようにするには、権限付与オブジェクトとして0.0.0.0/0を指定します。

インバウンド

許可

カスタマイズTCP

pasv_min_port /pasv_max_portを使用します。 例: 50000/50010。

FTPサーバーにアクセスするすべてのクライアントのパブリックIPアドレス。 IPアドレスはコンマ (,) で区切ります。

すべてのクライアントがFTPサーバーにアクセスできるようにするには、権限付与オブジェクトとして0.0.0.0/0を指定します。

ステップ4: FTPサーバーの接続をテストする

FTPクライアント、Windowsコマンドラインツール、またはブラウザを使用して、FTPサーバーにアクセスできるかどうかを確認できます。 この例では、Windows Server 2012 R2 64ビットオペレーティングシステムを実行するオンプレミスホストをFTPクライアントとして使用し、FTPサーバーへのアクセス方法を示します。

  1. オンプレミスホストで、このPCを開きます。

  2. アドレスバーに、ftp:// <FTPサーバーのパブリックIPアドレス >:< FTPポート> と入力します。 この例では、LinuxインスタンスのパブリックIPアドレスが使用されます。 例: ftp:// 121.43.XX.XX:21

  3. [ログイン] ダイアログボックスで、設定したFTPユーザー名とパスワードを入力し、[ログイン] をクリックします。

    FTPサーバーにログインした後、FTPサーバー上の指定されたディレクトリ内のファイルを表示できます。 たとえば、testfile.txtという名前のテストファイルを表示できます。ftp client

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

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

よくある質問

  • Q1: オンプレミスホストがWindowsオペレーティングシステムを実行しているときにFTPサーバーからファイルをダウンロードできない場合はどうすればよいですか?

    A: Internet Explorerでダウンロード権限を有効にするには、次の操作を実行します。

    1. オンプレミスホストでInternet Explorerを開きます。

    2. ブラウザの右上隅にあるIE图标アイコンをクリックし、[インターネットオプション] をクリックします。

    3. [インターネットオプション] ダイアログボックスの上部で、[セキュリティ] タブをクリックします。

    4. [セキュリティ設定を表示または変更するゾーンの選択] セクションで、[インターネット] をクリックし、[このゾーンのセキュリティレベル] セクションの [カスタムレベル...] をクリックします。

    5. [ダウンロード] > [ファイルダウンロード] > [有効化] を選択し、[OK] をクリックします。

    6. [適用][OK] の順にクリックします。

  • Q2: コマンドラインツールまたはブラウザを使用してWindowsオペレーティングシステムのFTPサーバーに接続するときにエラーが報告された場合はどうすればよいですか?

    A: FTPサーバーに関連するエラーメッセージに基づいて、問題のトラブルシューティングを行うことができます。 問題のトラブルシューティングが難しい場合は、FileZillaなどのサードパーティのFTPクライアント接続ツールを使用することをお勧めします。 FileZillaクライアントをダウンロードするには、FileZillaにアクセスしてください。 この例では、FileZillaを使用して匿名モードでFTPサーバーに接続します。

    1. vsftpdを匿名モードで設定します。

      1. 次のコマンドを実行して、/etc/vsftpd/vsftpd.conf設定ファイルを変更します。

        apt install vsftpdコマンドを実行してvsftpdをインストールした場合、設定ファイルのパスは /etc/vsftpd.confです。

        sudo vim /etc/vsftpd/vsftpd.conf
      2. Iキーを押して挿入モードに入ります。

      3. 権限をコメントアウトし、anon_upload_enableパラメーターをYESに設定して、匿名ユーザーがファイルをアップロードできるようにします。

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

        次の図に、変更された構成ファイルのサンプルを示します。vsftpd配置文件

      5. 次のコマンドを実行して、FTPユーザーに /var/ftp/pubディレクトリへの書き込み権限を付与します。

        /var/ftp/pubは、FTPサービスのデフォルトのファイルディレクトリです。

        sudo chmod o+w /var/ftp/pub/
      6. 次のコマンドを実行して、設定ファイルをリロードします。

        sudo systemctl restart vsftpd
    2. FileZillaをダウンロードしてインストールします。

    3. FileZillaを使用して、匿名モードでFTPサーバーに接続します。

      1. FileZillaクライアントを開きます。

      2. 上部のナビゲーションバーで、[ファイル] > [サイトマネージャー] を選択します。

      3. [サイトマネージャー] ダイアログボックスの左下隅で、[新しいサイト (N)] をクリックします。

      4. 新しいサイトの名前を入力し、新しいサイトを設定します。

        説明

        この例では、FileZilla 3.64.0が使用されます。 実際のインターフェイスは、FileZillaのバージョンによって異なる場合があります。

        filezillaパラメータ:

        • 名前: カスタムサイト名。 例: test-01

        • プロトコル: FTP。

        • Host: FTPサーバーのパブリックIPアドレス。 このトピックでは、LinuxインスタンスのパブリックIPアドレスを使用します。 例: 121.43.XX.XX

        • ポート: 21。

        • ログオンタイプ: 匿名。

          この例では、FTPクライアントを使用して匿名モードでFTPサーバーに接続します。 FTPサーバーへのアクセスを管理する場合は、ログオンタイプをnormalに設定し、ユーザー名とパスワードを設定します。

      5. [接続] をクリックします。

        FTPサーバーに接続した後、ファイルをアップロード、ダウンロード、および削除できます。 次の図は、サンプルのFileZillaインターフェイスを示しています。 filezilla次の表では、上記のインターフェイスのセクションについて説明します。

        セクション

        説明

        コマンド, FTPサーバの接続状態, およびタスクの実行結果を表示します。

        ホストのディレクトリ情報を含む、オンプレミスホストに関する情報を表示します。

        FTPサーバのディレクトリ情報など、リモートサーバに関する情報を表示します。 匿名モードでは、デフォルトのディレクトリは /pubです。

        FTPタスクキューとログを含むレコードを表示します。

関連ドキュメント

Windowsインスタンス上にFTPサイトを構築できます。 詳細については、「WindowsインスタンスでのFTPサイトの構築」をご参照ください。