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

Simple Application Server:FTPサーバーの構築 (Linux)

最終更新日:Dec 24, 2024

Very Secure FTP Daemon (vsftpd) は、Linux向けの軽量で安全、そして使いやすいFTPサーバーソフトウェアです。このトピックでは、Linuxベースのシンプルアプリケーションサーバーにvsftpdをインストールおよび構成する方法と、FTPサーバーへの接続をテストする方法について説明します。

前提条件

Linuxベースのシンプルアプリケーションサーバーが作成されていること。詳細については、シンプルアプリケーションサーバーの作成を参照してください。

背景情報

FTPは、ファイル転送に使用されるプロトコルです。FTPはクライアントサーバーモデルアーキテクチャに基づいており、次の動作モードをサポートしています。

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

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

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

  • 匿名ユーザーモード: ユーザーはユーザー名またはパスワードなしでFTPサーバーにログオンできます。これは最も安全性の低い認証モードです。ほとんどの場合、このモードは重要でない公開ファイルの転送に使用されます。本番環境ではこのモードを使用しないことをお勧めします。

  • ローカルユーザーモード: システムは、ユーザーがローカルLinuxユーザーであるかどうかを確認することでユーザーを認証します。このモードは、匿名ユーザーモードよりも安全です。

  • 仮想ユーザーモード: Linuxシステムは、ユーザーが仮想ユーザーであるかどうかを確認することでユーザーを認証します。仮想ユーザーは、Linuxシステムが提供するFTPサービスへのみアクセスでき、システムの他のリソースにはアクセスできません。仮想ユーザーモードは、匿名ユーザーモードとローカルユーザーモードよりも安全です。サーバーデータのセキュリティ要件が高い場合は、専門家の指導の下で仮想ユーザーモードを構成することをお勧めします。

このトピックでは、構成が容易な匿名ユーザーモードと、より安全なローカルユーザーモードについて説明します。

手順 1: 準備を行う

FileZillaはFTPクライアントツールです。この例では、FileZillaを使用してFTPサーバーへの接続をテストします。次の準備を行う必要があります。

  1. コンピューターにFileZillaをダウンロードしてインストールします。

    FileZillaをダウンロードするには、FileZillaにアクセスしてください。

  2. Linuxサーバーのパスワードを設定します。

    詳細については、サーバーパスワードの設定またはリセットを参照してください。

手順 2: vsftpdをインストールおよび構成する

このトピックでは、CentOS 7を例として使用します。手順は、オペレーティングシステムによって異なります。詳細については、ECSインスタンスにFTPサイトを構築するを参照してください。

  1. Linuxサーバーに接続します。

    詳細については、Linuxサーバーへの接続を参照してください。

  2. 次のコマンドを実行して、vsftpdがサーバーにインストールされているかどうかを確認します:

    アプリケーションイメージを使用してデプロイされたシンプルアプリケーションサーバーには、vsftpdがプリインストールされている場合があります。vsftpdを再度インストールすると、競合が発生する可能性があります。

    vsftpd -v

    次の情報が返された場合、vsftpdはシンプルアプリケーションサーバーにインストールされています。vsftpdを再度インストールする必要はありません。関連するアプリケーションイメージのドキュメントを参照して、FTPサーバーのユーザー名とパスワードを取得できます。次に、ファイアウォールを構成し、FTPクライアントを使用してFTPサーバーへの接続をテストできます。詳細については、このトピックの手順 4: Linuxサーバーのファイアウォールを構成するセクションと手順 5: FTPクライアントからFTPサーバーにアクセスできるかどうかを確認するセクションを参照してください。

    [admin@iZ2579sxicu**** ~]$ vsftpd -v
    vsftpd: version 3.0.2
  3. 次のコマンドを実行して、vsftpdをインストールします。

    sudo yum install -y vsftpd

    次のメッセージが表示されたら、vsftpdがインストールされています。轻量-安装ftp

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

    sudo systemctl enable vsftpd.service
  5. 次のコマンドを実行して、FTPサービスを起動します。

    sudo systemctl start vsftpd.service
    説明

    FTPサービスを起動できず、システムからJob for vsftpd.service failed because the control process exited with error codeというエラーメッセージが返された場合は、ポート21が他のサービスによって使用されていないか確認し、問題のトラブルシューティングを行ってください。

    1. lsof -i:21コマンドを実行して、プロセスが存在するかどうかを確認します。

    2. プロセスが存在する場合は、kill -9 <プロセスの番号>コマンドを実行してプロセスを強制終了します。

  6. 次のコマンドを実行して、FTPサービスのポート番号を照会します。

    sudo netstat -antup | grep ftp

    次の図に示すように、FTPサービスのポート番号を表示できる場合は、FTPサービスが起動しています。轻量-FTP状态

手順 3: FTPサーバーのアクセスモードを構成する

FTPサーバーの匿名ユーザーモードまたはローカルユーザーモードを構成できます。より安全なローカルユーザーモードを使用することをお勧めします。

(推奨) ローカルユーザーモード

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

    この例では、ftptestユーザー名を使用します。

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

    sudo passwd ftptest

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

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

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

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

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

      vsftpdをインストールするときにapt install vsftpdコマンドを実行した場合、構成ファイルのパスは/etc/vsftpd.confです。

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

    3. FTPサーバーのパッシブモードを有効にします。

      次のパラメーターを構成し、他のパラメーターのデフォルト値を保持します。

      重要

      次のパラメーターをコピーしてLinuxサーバーの構成ファイルに貼り付ける前に、パラメーターが番号記号(#)でコメントアウトされていないことを確認してください。パラメーターが有効な形式で指定されていることを確認してください。たとえば、余分なスペースがあると、サービスが再起動に失敗する可能性があります。

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

      #匿名ユーザーがFTPサーバーにログオンできないようにします。
      anonymous_enable=NO
      #ローカルユーザーがFTPサーバーにログオンできるようにします。
      local_enable=YES
      #IPv4ソケットでリッスンします。
      listen=YES

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

      #listen_ipv6=YES

      次のパラメーターを構成ファイルの末尾に追加します。pasv_addressパラメーターの値をシンプルアプリケーションサーバーのパブリックIPアドレスに置き換えます。

      #ローカルユーザーがログオンした後に、ローカルユーザーのディレクトリを指定します。
      local_root=/var/ftp/test
      #ログオン後、すべてのユーザーをホームディレクトリに制限します。
      chroot_local_user=YES
      #リストを使用して、例外ユーザーを指定します。例外ユーザーとは、ログオン後にホームディレクトリに制限されないユーザーのことです。
      chroot_list_enable=YES
      #例外ユーザーのリストを含むファイルを指定します。
      chroot_list_file=/etc/vsftpd/chroot_list
      #パッシブモードを有効にします。
      pasv_enable=YES
      allow_writeable_chroot=YES
      #シンプルアプリケーションサーバーのパブリックIPアドレスを入力します。
      pasv_address=39.105.xx.xx
      #パッシブモードでデータ転送に使用できるポート範囲の最小ポート番号を指定します。
      #50000~50010などの高い番号範囲のポートを使用することをお勧めします。これらのポートは、FTPサーバーへのより安全なアクセスを提供します。
      pasv_min_port=50000
      #パッシブモード接続のためにFTPクライアントに送信されるポート範囲の最大ポート番号を指定します。
      pasv_max_port=50010

      その他のパラメーターについては、vsftpd構成ファイルとパラメーターを参照してください。

    4. Escキーを押して編集モードを終了します。:wqと入力し、Enterキーを押してファイルを保存して閉じます。

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

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

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

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

      重要

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

    4. Escキーを押して編集モードを終了します。:wqと入力し、Enterキーを押してファイルを保存して閉じます。

  7. 次のコマンドを実行してファイアウォールを無効にします。

    sudo systemctl stop firewalld
  8. 構成ファイルを変更します。

    1. 次のコマンドを実行して/etc/ssh/sshd_configファイルを開きます。

      sudo vi /etc/ssh/sshd_config
    2. ファイルの末尾でPasswordAuthenticationの値をyesに変更します。asdas

    3. Escキーを押して編集モードを終了します。:wq!と入力し、Enterキーを押して構成ファイルを保存して閉じます。

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

    sudo systemctl restart vsftpd.service

匿名ユーザーモード

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

    vsftpdをインストールするときにapt install vsftpdコマンドを実行した場合、構成ファイルのパスは/etc/vsftpd.confです。

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

  3. 匿名モードを指定するanonymous_enableパラメーターと、匿名アップロード許可を指定するanon_upload_enableパラメーターを見つけます。

    構成ファイルのデフォルト設定は、シンプルアプリケーションサーバーのLinuxディストリビューションによって異なる場合があります。パラメーターを変更した後、両方のパラメーターの値がYESであることを確認してください。

    anonymous_enable=YES
    anon_upload_enable=YES
    listen=YES
    listen_ipv6=NO 
  4. 次のパラメーターをファイルの末尾に追加します。

    重要

    次のパラメーターをコピーしてLinuxサーバーの構成ファイルに貼り付ける前に、パラメーターが番号記号(#)でコメントアウトされていないことを確認してください。パラメーターが有効な形式で指定されていることを確認してください。たとえば、余分なスペースがあると、サービスが再起動に失敗する可能性があります。

    #パッシブモードを有効にします。
    pasv_enable=YES
    #パッシブモードでデータ転送に使用できるポート範囲の最小ポート番号を指定します。
    #50000~50010などの高い番号範囲のポートを使用することをお勧めします。これらのポートは、FTPサーバーへのより安全なアクセスを提供します。
    pasv_min_port=50000
    #パッシブモード接続のためにFTPクライアントに送信されるポート範囲の最大ポート番号を指定します。
    pasv_max_port=50010                   
    #シンプルアプリケーションサーバーのパブリックIPアドレスを入力します。                
    pasv_address=39.105.xx.xx    
  5. Escキーを押して編集モードを終了します。:wqと入力し、Enterキーを押してファイルを保存して閉じます。

  6. 次のコマンドを実行して、/var/ftp/pubディレクトリのパーミッションを変更し、FTPユーザーにディレクトリへの書き込みパーミッションを付与します。

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

    sudo chmod o+w /var/ftp/pub/
  7. 次のコマンドを実行して、FTPサービスを再起動します。

    sudo systemctl restart vsftpd.service

手順 4: Linuxサーバーのファイアウォールを構成する

FTPサーバーを構築した後、次の表に示すポートを有効にするために、Linuxサーバーのファイアウォールにルールを追加する必要があります。詳細については、ファイアウォールの管理を参照してください。

パッシブモードでは、pasv_min_portpasv_max_port で指定されたポート範囲に属するすべてのポートと、ポート 21 を /etc/vsftpd/vsftpd.conf 設定ファイルで有効にする必要があります。次の表に、構成の詳細を示します。

アプリケーションタイプ

プロトコル

ポート範囲

FTP

TCP

21

カスタム

TCP

pasv_min_port/pasv_max_port。例: 50000/50010。

ファイアウォールルールが追加されると、次の図に示すように、ファイアウォールページに表示されます。

image.png

手順 5: FTPクライアントからFTPサーバーにアクセスできるかどうかを確認する

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

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

  3. サイトマネージャーダイアログボックスの左下隅にある新規サイト(N)をクリックします。

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

    説明

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

    filezillaパラメーター:

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

    • プロトコル: FTP。

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

    • ポート: 21。

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

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

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

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

    セクション

    説明

    コマンド、FTPサーバーの接続状態、タスクの実行結果が表示されます。

    オンプレミスホストに関する情報(ホストのディレクトリ情報を含む)が表示されます。

    リモートサーバーに関する情報(FTPサーバーのディレクトリ情報を含む)が表示されます。匿名モードでは、デフォルトのディレクトリは/pubです。

    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= (なし)

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

    local_enable=YES

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

    local_root= (なし)

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

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

    パラメーター

    説明

    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

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