Ubuntu 18.04 VPSまたは専用サーバー上のユーザーのディレクトリに対してvsftpdを構成する方法

前書き

非常に安全なファイル転送プロトコルデーモンの短いVsftpdは、Ubuntuシステム用の安全なFTP(ファイル転送プロトコル)です。 FTPは、特定のネットワーク内の2台のコンピューター間でファイルをダウンロードおよびアップロードするために最も一般的に使用されている標準ネットワークプロトコルです。.


ユーザー名、データ、パスワードなどの重要な情報は通常、プレーンテキストで暗号化されずに送信されるため、デフォルトではFTPデータは安全ではありません。したがって、vsftpdを使用してFTP接続が暗号化されていることを確認することが重要です。.

このチュートリアルでは、Ubuntu 18.04 VPSでSSL / TLSサポートを使用してvsftpdを構成する方法を示します.

前提条件

始める前に、次のものがあることを確認してください。

  • sudo権限を持つ非rootユーザー.
  • Ubuntu 18.04で実行されているVPSまたは専用サーバー
  • 構成済みの静的IPアドレス.

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

最初に、以下のコマンドを実行して、パッケージを更新し、vsftpdデーモンをインストールします。

$ sudo apt update
$ sudo apt install vsftpd

ファイルがインストールされたら、次のコマンドを使用してvsftpdのステータスを確認します。

$ sudoサービスvsftpdステータス

ファイアウォールを構成する前に、現在の構成ファイルをコピーして、元のバックアップを作成しましょう。

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

手順2-ファイアウォールの構成

まず、ファイアウォールが有効になっているかどうかを確認します。ただしその前に、SSHトラフィックを許可してください。許可しないと、ファイアウォールがこれらのテストをブロックする可能性があります。.

次に、ファイアウォールのステータスを確認します。押す y その後 入る SSH接続の変更について警告された場合.

$ sudo ufwステータス

ファイアウォールが適切に機能している場合は、Status:activeメッセージが表示され、ファイアウォールルールが自動的に追加されます。

ステータス:アクティブ

ToアクションFrom
—                         ——      —-
OpenSSH ALLOWどこでも
OpenSSH(v6)ALLOWどこでも(v6)

次に、パッシブFTPのポート40000〜50000を含む、FTPのポート20および21を開きます。また、ポート990を開いて、後でセットアップするTLSを有効にします。

$ sudo ufw allow 20 / tcp
$ sudo ufw allow 21 / tcp
$ sudo ufwは990 / tcpを許可します
$ sudo ufw allow 40000:50000 / tcp
$ sudo ufwステータス

プロセスが完了すると、ファイアウォールルールの出力は次のようになります。

ステータス:アクティブ

ToアクションFrom
—                         ——      —-
OpenSSH ALLOWどこでも
990 / tcp ALLOWどこでも
20 / tcp ALLOWどこでも
21 / tcp ALLOWどこでも
40000:50000 / tcp ALLOWどこでも
OpenSSH(v6)ALLOWどこでも(v6)
20 / tcp(v6)ALLOWどこでも(v6)
21 / tcp(v6)ALLOWどこでも(v6)
990 / tcp(v6)ALLOWどこでも(v6)
40000:50000 / tcp(v6)ALLOWどこでも(v6)

vsftpdをインストールし、必要なポートが開いていることを確認した後、FTPユーザーの作成に進むことができます.

ステップ3-FTPユーザーの作成

FTPの新しいユーザーを作成してみましょう。必ずテストユーザーを追加してください。この例では、新しいユーザーを呼び出します ftpuser.

$ sudo adduser ftpuser

強力なパスワードを作成してください。いくつかの重要な情報を入力するように求められたら、を押します 入る それぞれの場合.

FTPをユーザーにとってより安全にするには、特定のディレクトリに転送する必要があります。 Vsftpdはこれを使用してこれを達成できます chroot. ユーザーのchrootを有効にすると、ユーザーは特定のホームディレクトリに制限されます。ただし、vsftpdはホームディレクトリが安全であることを保証するため、ローカルユーザーによる書き込みは許可されません。.

このチュートリアルでは、ホームディレクトリの書き込み権限を削除する代わりに、新しいディレクトリを作成します ftp 代わりにディレクトリ chroot および対応する書き込み可能 ファイル 元のファイルのディレクトリ.

新しいを作成するには ftp フォルダで、次のコマンドを実行します。

$ sudo mkdir / home / ftpuser / ftp

ftpディレクトリに所有権ファイルを作成して、 nobody:nogroup

$ sudo chown nobody:nogroup / home / ftpuser / ftp

書き込み権限を廃止します。

$ sudo chmod a-w / home / ftpuser / ftp

次に、これらの権限を確認します。

$ sudo ls -la / home / ftpuser / ftp

これにより、以下のような出力が得られます

合計8
4 dr-xr-xr-x 2 nobodynogroup 4096 8月24日21:29 .
4 drwxr-xr-x 3 ftpuser ftpuser 4096 Aug 24 21:29 ..

次のステップは、アップロードを保存する新しいディレクトリを作成し、それらがローカルユーザーに割り当てられていることを確認することです。

$ sudo mkdir / home / ftpuser / ftp / files
$ sudo chown ftpuser:ftpuser / home / ftpuser / ftp / files

次のコマンドを実行して、ftpディレクトリの権限を確認します。

$ sudo ls -la / home / ftpuser / ftp

これにより、次の出力が得られます。

合計12
dr-xr-xr-x 3 nobodynogroup 4096 8月26日14:01 .
drwxr-xr-x 3 ftpuser ftpuser 4096 Aug 26 13:59 ..
drwxr-xr-x 2 ftpuser ftpuser 4096 Aug 26 14:01ファイル

次に、別のファイルを追加します test.txt テスト目的:

$ echo"vsftpdテストファイル" | sudo tee /home/ftpuser/ftp/files/test.txt

一度 ftp ディレクトリは安全で、 ファイル ユーザーはディレクトリにアクセスできます。先に進んでFTPを構成してください.

手順4-FTP -vsftpdアクセスの構成

1人のユーザーがFTPで接続できるようにするための主要な設定は、 vsftpd.conf. 設定ファイルを編集する前にバックアップファイルを作成します.

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

次に、設定ファイルを開いて、設定が以下と一致することを確認します。

$ sudo nano /etc/vsftpd.conf

次の出力が表示されます。

. . .
#匿名FTPを許可しますか? (デフォルトでは無効).
anonymous_enable = NO

#このコメントを解除して、ローカルユーザーがログインできるようにします.
local_enable = YES
. . .

ここで、FTPユーザーがラベル付けされた設定のコメントを外して、サーバーにファイルをアップロードできるようにする必要があります。 /etc/vsftpd.confディレクトリのwrite_enable.

. . .
write_enable = YES
. . .

次に、chrootを編集して、FTPユーザーがディレクトリ/etc/vsftpd.conf内のファイル以外のファイルにアクセスできないようにします。

. . .
chroot_local_user = YES
. . .

追加する user_sub_token ユーザー名を含める行 local_root 構成プロセスがローカルユーザーおよび他のすべてのユーザーに対して今後も機能することを確認するためのディレクトリ。ファイルに次の設定を追加します /etc/vsftpd.conf

. . .
user_sub_token = $ USER
local_root = / home / $ USER / ftp

また、パッシブFTPのポート制限範囲を追加して、十分な接続が利用できるようにします。

. . .
pasv_min_port = 40000
pasv_max_port = 50000

ステップ2でこれらのポートを開いて、パッシブFTPのポート範囲をセットアップしたことに注意してください。これらの値に変更を加えた場合は、ファイアウォール設定を更新してください。.

ユーザーがリストにある場合にのみFTPにアクセスできるようにし、デフォルトではアクセスできないようにするには、ディレクトリに次の構成を設定します /etc/vsftpd.conf

. . .
userlist_enable = YES
userlist_file = / etc / vsftpd.userlist
userlist_deny = NO

上記の設定から、もし userlist_deny YESに設定されている場合、リストに追加されたユーザーはFTPアクセスを取得できません。 NOに設定されている場合、アクセスを許可されるユーザーは、リストにあるユーザーのみです。.

これらの変更を行ったら、ファイルを保存して終了します.

次に、ユーザーをに追加します /etc/vsftpd.userlist. ファイルに添付されている-aフラグを必ず使用してください。

$ echo"ftpuser" | sudo tee -a /etc/vsftpd.userlist

ファイルが追加されたことを確認します。

$ cat /etc/vsftpd.userlist

これにより、以下の出力が提供されます。

ftpuser

最後に、vsftpdデーモンを再起動して、これらの変更を適用します。

$ sudo systemctl restart vsftpd

設定が完了したら、FTPアクセスをテストします.

ステップ5-FTPアクセスのテスト

これで、ftpuserがFTP経由で接続できるようにサーバーを正常に構成したので、このプロセスが適切に機能することを確認する必要があります.

匿名がシステムにアクセスできるかどうかを試すことから始めます。構成が計画どおりに機能している場合、ユーザー以外はシステムにアクセスできません.

$ ftp -p(IPアドレス)

出力は次のようになります。

IPアドレスに接続しました.
220(vsFTPd 3.0.3)
名前(IPアドレス:デフォルト):匿名
530許可が拒否されました.
ftp:ログインに失敗しました.
FTP

接続を閉じます。

ftp>さようなら

次に、sudoユーザーとして接続してみます。 ftpuser以外のユーザーは、パスワードを入力する前に許可を拒否する必要があります。.

$ ftp -p IPアドレス

出力は次のようになります。

IPアドレスに接続しました.
220(vsFTPd 3.0.3)
名前(IPアドレス:デフォルト):sudo_user
530許可が拒否されました.
ftp:ログインに失敗しました.
ftp>

次に、接続を閉じます。

ftp>さようなら

次に、ftpユーザーはファイルに接続し、読み取り、さらには書き込みを行う必要があります。接続が簡単であることをユーザーが確認できるようにする必要があります。

$ ftp -p IPアドレス

出力は次のようになります。

接続先IPアドレス.
220(vsFTPd 3.0.3)
名前(IPアドレス:デフォルト):ftpuser
331パスワードを指定してください.
パスワード:your_user’s_password
230ログイン成功.
リモートシステムタイプはUNIXです.
バイナリモードを使用してファイルを転送する.
ftp>

次に、 ファイル ディレクトリを作成し、以前に作成したファイルを 取得する コマンド:

ftp>CDファイル
ftp> test.txtを取得

出力は次のようになります。

227EnteringPassiveMode(IPアドレス).
150.test.txtのOpeningBINARYモードのデータ接続(16バイト).
226転送完了.
16バイトを0.0101秒で受信(1588バイト/秒)
ftp>

次に、新しい名前でディレクトリにファイルをアップロードして、書き込み権限をテストします。

ftp> puttest.txtupload.txt

出力は次のようになります。

227EnteringPassiveMode(IPアドレス).
1万5000万回のデータ送信.
226転送完了.
16バイトが0.000894秒で送信されました(17897バイト/秒)

次に、接続を閉じます。

ftp>さようなら

構成をテストしたら、サーバーを保護しましょう.

ステップ6-トランザクションの保護

FTPは、ユーザーの資格情報を含むデータを暗号化しません。したがって、TLS / SSLをアクティブにして暗号化を取得します。まず、SSL証明書を作成します vsftpd.

そのためには、証明書にOpenSSLを使用し、-days行を含めて1年間の有効期間を取得します。また、証明書とキーを1つのファイルに含めるために、このコマンドに秘密キーを含めます。

$ sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/ssl/private/vsftpd.pem -out /etc/ssl/private/vsftpd.pem

証明書の詳細を提供するよう求められます。以下の画面で強調表示されている領域の情報を使用してください。

2048ビットのRSA秘密鍵の生成
………………………………………………………………….+++
………..+++
newprivateキーを「/etc/ssl/private/vsftpd.pem」に書き込みます
—–
組み込まれる情報の入力を求められます
証明書リクエストに.
入力しようとしているのは、いわゆる識別名またはDNです。.
かなりの数のフィールドがありますが、いくつかは空白のままにすることができます
一部のフィールドにはデフォルト値があります,
「。」を入力すると、フィールドは空白のままになります.
—–
国名(2文字のコード)[AU]:US
都道府県名(フルネーム)[Some-State]:NY
市区町村名(例:市)[]:ニューヨーク市
組織名(例:会社)[Internet Widgits Pty Ltd]:HostAdvice
組織単位名(セクションなど)[]:
共通名(例:サーバーのFQDNまたはユーザー名)[]:your_server_ip
電子メールアドレス []:

証明書の準備ができたら、vsftpd構成ファイルに移動して再度開きます。

$ sudo nano /etc/vsftpd.conf

下部には2行で始まります RSA. これらを編集して、次のようにします。

. . .
#rsa_cert_file = / etc / ssl / certs / ssl-cert-snakeoil.pem
#rsa_private_key_file = / etc / ssl / private / ssl-cert-snakeoil.key
. . .

同じディレクトリの次の行(/etc/vsftpd.conf), 次の情報を追加します。

. . .
rsa_cert_file = / etc / ssl / private / vsftpd.pem
rsa_private_key_file = / etc / ssl / private / vsftpd.pem
. . .

次に、SSLが機能し、TLSユーザーがアクセスできないようにします。これは、すべてのトラフィックが完全に暗号化されていることを確認するために重要です。ただし、この移動により、FTPユーザーはクライアントを変更する必要がある場合があります.

先に進んで変更 ssl enable に はい

/etc/vsftpd.conf

. . .
ssl_enable = YES
. . .

SSLを介した匿名アクセスを拒否するには、次の行を編集して追加します。

/etc/vsftpd.conf

. . .
allow_anon_ssl = NO
force_local_data_ssl = YES
force_local_logins_ssl = YES
. . .

次に、次の行を追加して、TLSを使用するようにサーバーを構成します。

/etc/vsftpd.conf

. . .
ssl_tlsv1 =はい
ssl_sslv2 = NO
ssl_sslv3 = NO
. . .

最後に、2つのオプションを追加します。高度に暗号化された暗号スイートが必要です。つまり、キーの長さが128ビット以上になります。

/etc/vsftpd.conf

. . .
require_ssl_reuse = NO
ssl_ciphers = HIGH
. . .

出力は次のようになります。

/etc/vsftpd.conf

#このオプションは、SSLに使用するRSA証明書の場所を指定します
#暗号化された接続.
#rsa_cert_file = / etc / ssl / certs / ssl-cert-snakeoil.pem
#rsa_private_key_file = / etc / ssl / private / ssl-cert-snakeoil.key
rsa_cert_file = / etc / ssl / private / vsftpd.pem
rsa_private_key_file = / etc / ssl / private / vsftpd.pem
ssl_enable = YES
allow_anon_ssl = NO
force_local_data_ssl = YES
force_local_logins_ssl = YES
ssl_tlsv1 =はい
ssl_sslv2 = NO
ssl_sslv3 = NO
require_ssl_reuse = NO
ssl_ciphers = HIGH

すべてが完了したら、ファイルを保存して終了します.

次に、システムを再起動してこれらの変更を適用します。

$ sudo systemctl restart vsftpd

次のステップは、TLSをサポートするクライアントでサーバーに接続できることを確認することです.

ステップ7-FileZillaを使用したTLSのテスト

TLSをテストするには、クロスプラットフォームサポートサービスを提供するFileZillaを使用します.

FileZilla内にいるときに、 サイト管理者 それをクリックして.

Ubuntu 18.04 VPSまたは専用サーバー上のユーザーのディレクトリに対してvsftpdを構成する方法

新しいウィンドウで、 新しいサイト ボタン.

Ubuntu 18.04 VPSまたは専用サーバー上のユーザーのディレクトリに対してvsftpdを構成する方法

に行く 私のサイト ラベルが付けられた別のアイコンが表示されるアイコン 新しいサイト. 使用 リネーム サイトに新しい名前を割り当てるボタン.

[ホスト]フィールドに名前またはIPアドレスを入力します。に行く 暗号化 そして選ぶ TLS経由の明示的なFTPが必要.

のために ログインタイプ セクション、選択 パスワードを尋ねる. ラベルが付けられた次のセクションにFTPユーザーを入力します ユーザー フィールド.

Ubuntu 18.04 VPSまたは専用サーバー上のユーザーのディレクトリに対してvsftpdを構成する方法

を押す 接続する パスワードを入力してください.

Ubuntu 18.04 VPSまたは専用サーバー上のユーザーのディレクトリに対してvsftpdを構成する方法

押す OK 接続を開始します。これで、TLS / SSL暗号化を使用してサーバーに自動的に接続されます。.

すべてが適切に機能した場合は、以下に示すサーバー証明書が表示されます。

Ubuntu 18.04 VPSまたは専用サーバー上のユーザーのディレクトリに対してvsftpdを構成する方法

証明書を受け入れた後、 ファイル フォルダをダブルクリックしてドラッグします upload.txt ファイルを簡単にダウンロードできるように左側に.

Ubuntu 18.04 VPSまたは専用サーバー上のユーザーのディレクトリに対してvsftpdを構成する方法

次に、コピーの名前を upload-tls.txt それをサーバーに転送して、ファイルを正常にアップロードできるかどうかを確認します.

Ubuntu 18.04 VPSまたは専用サーバー上のユーザーのディレクトリに対してvsftpdを構成する方法

プロセスが成功した場合は、SSL / TLSを使用してファイルを正常に転送できることを示しています.

結論

おめでとう! Ubuntu 18.04 VPSでは、さまざまなユーザー向けにFTPを快適にセットアップできます。あなたに.

これらの上位3つのLinuxホスティングサービスを確認する

FastComet

開始価格:
$ 2.95


信頼性
9.7


価格
9.5


使いやすい
9.7


サポート
9.7


特徴
9.6

レビューを読む

FastCometにアクセス

Hostinger

開始価格:
$ 0.99


信頼性
9.3


価格
9.3


使いやすい
9.4


サポート
9.4


特徴
9.2

レビューを読む

Hostingerにアクセス

ChemiCloud

開始価格:
$ 2.76


信頼性
10


価格
9.9


使いやすい
9.9


サポート
10


特徴
9.9

レビューを読む

ChemiCloudにアクセス

関連するハウツー記事

  • CentOS 7 VPSまたは専用サーバーでVSFTPDサーバーを設定する方法
    中間
  • Ubuntu 18.04でvsftpdをインストールして設定する方法
    中間
  • Ubuntu 18.04にVSFTPDをインストールする方法
    中間
  • Ubuntu 18.04にVSFTPDをインストールする方法
    中間
  • Ubuntu 18.04 VPSまたは専用サーバーにPrestaShopをインストールする方法
    中間
Jeffrey Wilson Administrator
Sorry! The Author has not filled his profile.
follow me