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 をインストールする
次のコマンドを実行して、Yellowdog Updater Modified (YUM) リポジトリを更新し、vsftpd をインストールします。
sudo yum update sudo yum install -y vsftpd
次のコマンドを実行して、vsftpd がシステム起動時に自動的に起動するように構成します。
systemctl enable vsftpd
次のコマンドを実行して、FTP を起動します。
systemctl start vsftpd
次のコマンドを実行して、FTP が起動するかどうかを確認します。
netstat -antup | grep ftp
次のコマンド出力が返された場合、FTP は想定どおりに起動しています。
デフォルトでは、vsftpd は匿名モードで有効になっており、ユーザー名またはパスワードを入力せずに FTP サーバーにログオンできます。匿名モードで FTP サーバーにログオンするユーザーは、ファイルを変更またはアップロードできません。
手順 2: vsftpd を構成する
次のコマンドを実行して、FTP サービス用の Linux ユーザーを作成します。この例では、ftpuser ユーザーが作成されます。
useradd ftpuser
次のコマンドを実行して、ftpuser ユーザーのパスワードを指定します。
passwd ftpuser
パスワードを入力し、Enter キーを押します。パスワードはデフォルトでは表示されません。
次のコマンドを実行して、FTP サービスが使用するファイルディレクトリを作成します。この例では、/var/ftp/test ディレクトリが使用されます。
mkdir /var/ftp/test
次のコマンドを実行して、ディレクトリの権限を変更します。
chown -R ftpuser:ftpuser /var/ftp/test
次のコマンドを実行して、vsftpd.conf ファイルを開きます。
vim /etc/vsftpd/vsftpd.conf
I キーを押して挿入モードに入り、ビジネス要件に基づいて FTP モードを選択し、vsftpd.conf ファイルを変更します。
説明FTP サーバーでは、FTP クライアントがアクティブモードまたはパッシブモードで接続してファイルを転送できます。FTP サービスを構築するには、パッシブモードを指定することをお勧めします。これにより、FTP クライアントマシンのファイアウォール設定と IP アドレス変換によって発生する問題を防ぎます。次の例では、パッシブモードが使用されています。
次のコマンドを実行して、
vsftp
構成ファイルをバックアップします。sudo cp /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf.bak
次のパラメーターを変更して、匿名ユーザーとローカルユーザーにアクセス権限を付与し、例外ユーザーリストファイルが格納されているパスを指定し、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
行の先頭にシャープ記号 (#) を追加して、listen_ipv6=YES パラメーターをコメントアウトし、インスタンスが IPv6 ソケットでリッスンしないようにします。
#listen_ipv6=YES
次のパラメーターを追加してパッシブモードを有効にし、ローカルユーザーが 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 サイトを構築する」をご参照ください。
Esc キーを押し、:wq と入力し、Enter キーを押してファイルを保存して閉じます。
次のコマンドを実行して、chroot_list ファイルを作成して開きます。
vim /etc/vsftpd/chroot_list
I キーを押して挿入モードに入り、ユーザー名を入力します。1 つのユーザー名は 1 行を占めます。すべての設定を構成した後、Esc キーを押し、:wq と入力し、Enter キーを押してファイルを保存して閉じます。構成されたユーザーはホームディレクトリにロックされます。例外ユーザーを指定したくない場合は、この手順をスキップし、:q と入力してファイルを閉じます。
次のコマンドを実行して、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 クライアントとして使用されています。
FTP クライアントとして機能するコンピューターで、次の図に示すように、アドレスバーで次のアドレスにアクセスします。
表示される [ダイアログボックス] で、手順 2.2 で指定したユーザー名とパスワードを入力します。
FTP サーバーにログオンすると、ファイルをアップロードおよびダウンロードできます。
Ubuntu および Debian
手順 1: VSFTP をインストールする
次のコマンドを実行して、
vsftpd
をインストールします。# Advanced Packaging Tool (APT) リポジトリを更新します。 sudo apt-get update sudo apt-get install vsftpd
次のコマンドを実行して、元の構成ファイルをバックアップします。
sudo cp /etc/vsftpd.conf /etc/vsftpd.conf.bak
手順 2: VSFTP を構成する
次のコマンドを実行して、
vsftpd
の構成ファイルを開きます。sudo vim /etc/vsftpd.conf
構成ファイルの構成を変更します。
次の構成を変更して、FTP アクセス権限を構成します。ローカルユーザーのみが FTP にアクセスできるようにし、匿名アクセスを無効にします。
anonymous_enable=NO local_enable=YES
次の構成を変更して、ファイルのアップロードを有効にします。
write_enable=YES
次の行の先頭のシャープ記号 (#) を削除して、chroot jail を使用して FTP ユーザーアクセスを制限し、アクセス可能な FTP ユーザーファイルを構成します。
chroot_local_user=YES chroot_list_file=/etc/vsftpd.chroot_list
次の構成を構成ファイルに追加して、FTP サービスディレクトリを作成し、ユーザーがアタッチされた chroot ディレクトリに書き込むことを許可します。デフォルトでは、ユーザーは書き込み可能な chroot ディレクトリに書き込むことができません。
local_root=/home/ftp allow_writeable_chroot=YES
(オプション) 次の構成を変更して、FTP パッシブモードを構成します。 vsftpd は任意のポートを使用してパッシブ FTP 接続を確立できます。 vsftpd が使用できるポート範囲を定義するために、最小および最大のポート番号を指定できます。
パッシブ FTP 接続を許可するには、次の行を構成ファイルに追加します。
pasv_min_port=35000 pasv_max_port=40000
次のコマンドを実行して vsftpd を再起動し、構成を有効にします。
sudo systemctl restart vsftpd
手順 3: FTP ユーザーディレクトリを構成する
FTP をインストールすると、ftp という名前のユーザーが自動的に作成され、パスワードは指定されません。次のコマンドを実行して、デフォルトのユーザー名のパスワードを変更します。
sudo passwd ftp
強力なパスワードを指定し、すべてのプロンプトをスキップします。
次のコマンドを実行して、ユーザーを許可された FTP ユーザーのリストに追加します。
echo "ftp" | sudo tee -a /etc/vsftpd.userlist
FTP ファイルディレクトリを作成し、ユーザーにアクセス権を付与します。
次のコマンドを実行して、FTP ディレクトリを作成します。
sudo mkdir /home/ftp
次のコマンドを実行して、ユーザーにディレクトリへのアクセス権を付与します。この例では、読み取り権限や書き込み権限など、ディレクトリに対するすべての権限がユーザーに付与されます。ビジネス要件に基づいて権限を変更できます。
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 クライアントとして使用されています。
FTP クライアントが存在するコンピューターで、次の図に示すように、アドレスバーで次のアドレスにアクセスします。
表示される [ダイアログボックス] で、手順 2.2 で指定したユーザー名とパスワードを入力します。
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
匿名ユーザーによってアップロードされたファイルの所有権を指定します。