Ubuntu16.04で匿名ダウンロード用にvsftpdを設定する方法

前書き ##

FTPは、クライアントとサーバー間でファイルを移動するためにかつて広く使用されていたネットワークプロトコルであるFile TransferProtocolの略語です。これは、より速く、より安全で、より便利なファイル転送方法に置き換えられました。多くのカジュアルなネットユーザーは、 httpsを使用してWebブラウザーから直接ダウンロードしたいと考えており、コマンドラインユーザーは scpやSFTPなどの安全なプロトコルを使用することを好みます。

FTPは、特定の要件を持つレガシーアプリケーションとワークフローをサポートするためによく使用されます。使用するプロトコルを選択できる場合は、より最新のオプションを検討することを検討してください。ただし、FTPが必要な場合は、vsftpdを選択することをお勧めします。 vsftpdは、セキュリティ、パフォーマンス、および安定性のために最適化されており、他のFTPサーバーに存在する多くのセキュリティ問題を十分に防ぐことができ、多くのLinuxディストリビューションのデフォルト設定です。

このチュートリアルでは、パブリックファイルを広く配布することを目的とした匿名FTPダウンロードサイト用にvsftpdを設定する方法を示します。 FTPを使用してファイルを管理する代わりに、ローカルユーザーの sudo権限は、 scpsFTP、またはファイルを転送および維持するために選択したその他の安全なプロトコルを使用することが期待されます。

前提条件

このチュートリアルに従うには、次のものが必要です。

サーバーができたら、開始できます。

**ステップ1-vsftpd **をインストールする##

最初にパッケージリストを更新し、 vsftpdデーモンをインストールします。

sudo apt-get update
sudo apt-get install vsftpd

インストールが完了したら、構成ファイルをコピーして、空の構成から開始し、元のファイルをバックアップとして保存できるようにします。

sudo cp /etc/vsftpd.conf /etc/vsftpd.conf.orig

構成をバックアップすることで、ファイアウォールを構成する準備が整いました。

ステップ2-ファイアウォールをオンにする

まず、ファイアウォールのステータスをチェックして有効になっているかどうかを確認します。有効になっている場合は、構成をテストするときにブロックするファイアウォールルールが発生しないように、現在許可されているものを確認します。

sudo ufw status

この例では、次のように表示されます。

OutputOutput
Status: active
​
To Action  From
------------
OpenSSH ALLOW   Anywhere
OpenSSH(v6)   ALLOW   Anywhere(v6)

他のルールがある場合と、ファイアウォールルールがまったくない場合があります。この例では、 sshトラフィックのみが許可されているため、FTPトラフィックのルールを追加する必要があります。

多くのアプリケーションでは、 sudo ufw app listを使用して名前で有効にすることができますが、FTPはその1つではありません。 ufwは/ etc / servicesにサービスポートとプロトコルがあるかどうかもチェックするため、FTPを名前で追加できます。ポート20に ftp-data、ポート21に ftpが必要です(コマンド用):

sudo ufw allow ftp-data
sudo ufw allow ftp
sudo ufw status

現在、ファイアウォールルールは次のとおりです。

Status: active
​
To Action  From
------------
OpenSSH  ALLOW   Anywhere
21 /tcp ALLOW   Anywhere
20 /tcp ALLOW   Anywhere
OpenSSH(v6)   ALLOW   Anywhere(v6)21/tcp(v6)ALLOW   Anywhere(v6)20/tcp(v6)ALLOW   Anywhere(v6)

vsftpdをインストールし、必要なポートを開いたら、続行する準備が整いました。

ステップ3-ファイル用のスペースを準備する

まず、 -pフラグを使用して中間ディレクトリを作成し、ファイルをホストする予定のディレクトリを作成します。ディレクトリ構造を使用すると、すべてのFTPディレクトリをまとめて、認証が必要な他のフォルダを追加できます。

sudo mkdir -p /var/ftp/pub

次に、ディレクトリのアクセス許可を nobody:nogroupに設定します。後で、すべてのファイルがftpユーザーとグループによって所有されていることを示すようにFTPサーバーを構成します。

sudo chown nobody:nogroup /var/ftp/pub

最後に、後でテストするためにディレクトリにファイルを作成します。

 echo "vsftpd test file"| sudo tee /var/ftp/pub/test.txt

このサンプルファイルを使用して、vsftpdデーモンを構成できます。

ステップ4-匿名アクセスを構成する

私たちは、一般に広く配布するためにファイルを維持する権限を持つ sudoユーザー向けに設定しています。このために、匿名ダウンロードを許可するように vsftpdを構成します。ファイル管理者は、ファイルを維持するために scp sftp、またはその他の安全な方法を使用することが期待されるため、FTPを介したファイルのアップロードは許可されません。

構成ファイルには、vsftpdの多くの構成オプションが含まれています。

まず、設定内容を変更します。

sudo nano /etc/vsftpd.conf

次の値を見つけて、次の値に一致するように編集します。

...
# Allow anonymous FTP?(Disabled by default).
anonymous_enable=YES
#
​
We’ll set the local_enable setting to “NO” because we’re not going to allow users with local accounts to upload files via FTP. The comment in the configuration file can be a little confusing, too, because the line is uncommented by default. 
# Uncomment this to allow local users to log in.
local_enable=NO
...

既存の設定を変更することに加えて、他のいくつかの構成も追加します。

注: man vsftpd.confコマンドを使用して、すべてのオプションを理解できます。

これらの設定を構成ファイルに追加します。それらは順序に依存しないため、ファイル内のどこにでも配置できます。

#
# Point users at the directory we created earlier.
anon_root=/var/ftp/
#
# Stop prompting for a password on the command line.
no_anon_password=YES
#
# Show the user and group as ftp:ftp, regardless of the owner.
hide_ids=YES
#
# Limit the range of ports that can be used for passive FTP
pasv_min_port=40000
pasv_max_port=50000

注: UFWを使用している場合、これらの設定はそのまま実行できます。 iptablesを使用している場合は、指定した pasv_min_port pasv_max_portの間にポートを開くルールを追加する必要がある場合があります。

追加後、ファイルを保存して閉じます。次に、次のコマンドを使用してデーモンを再起動します。

sudo systemctl restart vsftpd

systemctlは、すべてのサービス管理コマンドの結果を表示するわけではないため、成功したことを確認する場合は、次のコマンドを使用します。

sudo systemctl status vsftpd

最後の行が次のようになっている場合は、成功しています。

Aug 1717:49:10 vsftpd systemd[1]: Starting vsftpd FTP server...
Aug 1717:49:10 vsftpd systemd[1]: Started vsftpd FTP server.

これで、作業をテストする準備が整いました。

ステップ5-匿名アクセスをテストする

Webブラウザーから、ftp:// * serverの背後にあるIPアドレスを入力します。

ftp:// 203.0.113.0

すべてが期待どおりに機能する場合は、 pubディレクトリが表示されます。

また、 pubをクリックし、 test.txtを表示し、右クリックしてファイルを保存できるはずです。

コマンドラインからテストすることもできます。これにより、構成に関するフィードバックがさらに提供されます。多くのコマンドラインクライアントの -pフラグであるパッシブモードでサーバーにftpします。パッシブモードでは、ユーザーはローカルファイアウォール構成を変更してサーバーとクライアントの接続を許可する必要がありません。

**注:**ネイティブWindowsコマンドラインFTPクライアント ftp.exeは、パッシブモードをまったくサポートしていません。 Windowsユーザーは、[WinSCP](https://winscp.net/eng/docs/commandline)などの別のWindowsFTPクライアントを表示したい場合があります。

ftp -p 203.0.113.0

ユーザー名の入力を求められたら、「ftp」または「anonymous」と入力できます。それらは同等であるため、短い「ftp」を使用します。

Connected to 203.0.113.0.220(vsftpd 3.0.3)Name(203.0.113.0:21:sammy): ftp

Enterキーを押すと、次のメッセージが表示されます。

Output
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp>

パッシブモードが期待どおりに機能することを確認します。

ls
Output227 Entering Passive Mode(45,55,187,171,156,74).150 Here comes the directory listing.
drwxr-xr-x    2 ftp      ftp          4096 Aug 1719:30 pub
226 Directory send OK.

匿名ユーザーは、次の getコマンドを使用してファイルをローカルコンピューターに転送できるはずです。

cd pub
get test.txt
Outputftp>get test.txt
227 Entering Passive Mode(45,55,187,171,156,73).150 Opening BINARY mode data connection for test.txt(14 bytes).226 Transfer complete.16 bytes received in0.0121seconds(1325 bytes/s)

この出力は、ファイルが正常にダウンロードされたことを示しています。必要に応じて、ローカルファイルシステムにあるかどうかを確認できます。

また、匿名ユーザーがファイルシステムに入力しないようにしたいので、テストするために、右に曲がって同じファイルを新しい名前でサーバーに戻そうとします。

put test.txt upload.txt
Output227 Entering Passive Mode(104,236,10,192,168,254).550 Permission denied.

これを確認したので、次のステップの準備のためにモニターを終了します。

bye

匿名接続が期待どおりに機能していることを確認したので、ユーザーが接続しようとしたときに何が起こるかに注目します。

手順6-ユーザーとして接続してみます

この設定ではログイン資格情報が暗号化されないため、ローカルアカウントを持つユーザーとして接続できないようにすることもできます。ログインを求められたら、「ftp」や「anonymous」と入力する代わりに、sudoユーザーを使用してみてください。

ftp -p 203.0.113.0
OutputConnected to 203.0.113.0:21.220(vsFTPd 3.0.3)Name(203.0.113.0:21:your_user)530 This FTP server is anonymous only.
ftp: Login failed.
ftp>

これらのテストは、匿名ダウンロード用にのみシステムを設定したことを確認します。

結論として ##

このチュートリアルでは、匿名ダウンロード専用にvsftpdを構成する方法について説明しました。これにより、更新がより困難な最新のプロトコルや広く公開されているFTPURLを使用できないレガシーアプリケーションをサポートできます。

その他のUbuntuチュートリアルについては、[Tencent Cloud + Community](https://cloud.tencent.com/developer?from=10680)にアクセスして詳細を確認してください。


参照:「Ubuntu16.04で匿名ダウンロード用にvsftpdを設定する方法」

Recommended Posts

Ubuntu16.04で匿名ダウンロード用にvsftpdを設定する方法
Ubuntu16.04でユーザーディレクトリ用にvsftpdを設定する方法
Ubuntu14.04でGogsを設定する方法
Ubuntu14.04でRを設定する方法
Ubuntu14.04でShinyServerをセットアップする方法
Ubuntu18.04で時刻同期を設定する方法
Ubuntu18.04でDNSサーバーを設定する方法
Ubuntu16.04用にGhostワンクリックアプリを設定する方法
UbuntuとRaspbianでJavaホームを設定する方法
Ubuntu14.04でMasterlessPuppet環境をセットアップする方法
Ubuntu14.04でUFWを使用してファイアウォールを設定する方法
Ubuntu14.04で本番Elasticsearchクラスターをセットアップする方法
Ubuntu16.04でApache仮想ホストを設定する方法
Ubuntu20.04でApache仮想ホストを設定する方法
Ubuntu14.04でNginxを使用してパスワード認証を設定する方法
Ubuntu16.04でPostgreSQLの起動を設定する方法
Ubuntu18.04サーバーで静的IPを設定する方法
Ubuntu18.04サーバーで静的IPを設定する方法
ubuntu14.04で静的IPを設定する方法を詳しく説明します
Ubuntu16.04に基づいて固定IPを設定する方法
UbuntuスタートアップでTmuxサービススクリプトを実行する方法
Ubuntu20.04にRubyをインストールする方法
Ubuntu20.04にMemcachedをインストールする方法
Ubuntu20.04にJavaをインストールする方法
Ubuntu20.04にMySQLをインストールする方法
Ubuntu20.04にVirtualBoxをインストールする方法
Ubuntu20.04にElasticsearchをインストールする方法
CentOS7でApache仮想ホストを設定する方法
UbuntuにProtobuf3をインストールするための詳細なチュートリアル
Ubuntu20.04にApacheをインストールする方法
Ubuntu20.04にGitをインストールする方法
Ubuntu16.04にNode.jsをインストールする方法
Ubuntu20.04にMySQLをインストールする方法
Ubuntu20.04にVagrantをインストールする方法
Ubuntu14.04にBacula-Webをインストールする方法
Ubuntu18.04にAnaconda3をインストールする方法
Ubuntu20.04でタイムゾーンを設定または変更する方法
Ubuntu18.04にMemcachedをインストールする方法
Ubuntu16.04にJenkinsをインストールする方法
Ubuntu14.04にMemSQLをインストールする方法
Ubuntu20.04にGoをインストールする方法
Ubuntu16.04にMongoDBをインストールする方法
Ubuntu14.04にMailpileをインストールする方法
Ubuntu16.04にPrestaShopをインストールする方法
Ubuntu14.04でPHP7にアップグレードする方法
Ubuntu20.04にSkypeをインストールする方法
Ubuntu20.04にJenkinsをインストールする方法
Ubuntu18.04にPython3.8をインストールする方法
Ubuntu18.04にKVMをインストールする方法
Ubuntu20.04にKVMをインストールする方法
ubuntu14.04にopencv3.0.0をインストールする方法
Ubuntu20.04にAnacondaをインストールする方法
Ubuntu16.04にPrometheusをインストールする方法
Ubuntu18.04にJenkinsをインストールする方法
Ubuntu14.04にDjangoをデプロイする方法
Ubuntu20.04にApacheをインストールする方法
Ubuntu20.04にRをインストールする方法
Ubuntu20.04でタイムゾーンを設定または変更する方法
Ubuntu16.04にMoodleをインストールする方法
Ubuntu14.04にSolr5.2.1をインストールする方法
Ubuntu16.04にTeamviewerをインストールする方法