GNU/Linux >> Linux の 問題 >  >> Ubuntu

Ubuntu で TLS を使用して FTP を構成する方法

FTP (File Transfer Protocol) は、主にコンピュータ間のファイル転送に使用されます。 FTP は、クライアントがサーバーにファイルを要求し、サーバーが必要なファイルをクライアントに返すクライアント サーバー アーキテクチャで動作します。クライアント マシンでは、FTP クライアント アプリケーションを使用してサーバーと通信します。ブラウザ経由でFTPサーバーにアクセスすることも可能です。デフォルトでは、FTP は安全でないチャネルを介して通信しますが、安全なチャネルを介してデータを転送するように FTP を構成することができます。このチュートリアルでは、TLS を使用して FTP サーバーを構成し、FileZilla をクライアント アプリケーションとして使用して FTP サーバーに接続する方法を学習します。

VSFTPD をインストール

VSFTPD (Very Secure FTP Daemon) は、サーバー上で FTP を構成するためのソフトウェア プログラムです。このチュートリアルでは、VSFTPD を使用して、コンピューター上の FTP サーバーを構成します。 VSFTPD をインストールする前に、次のコマンドを実行してサーバーのリポジトリを更新してください。

[メール保護]:~$ sudo apt-get-update -and

次に、次のコマンドで VSFTPD をインストールします。

[メール保護]:~$ sudo apt-get install vsftpd -and

最後に、次のコマンドで vsftpd のバージョンを確認して、インストールを確認します。

[メール保護]:~$ vsftpd -v

上記のコマンドは、インストールが成功した場合に vsftpd のバージョンを出力します。

アクティブ モードの FTP

アクティブ モードでは、FTP クライアントは、クライアント マシンの任意のポートからサーバーのポート 21 への TCP 制御接続を確立することによって、セッションを開始します。次に、クライアントはランダムなポート X でデータ接続のリッスンを開始し、クライアントがポート X でデータ接続をリッスンしていることを TCP 制御接続を介してサーバーに通知します。次にサーバーは、ポート 20 からクライアント コンピューターのポート X へのデータ接続を確立します。

クライアントがファイアウォールの背後にあり、ポート X がブロックされている場合、問題が発生する可能性があります。この場合、サーバーはクライアントへのデータ接続を確立できません。ほとんどの場合、この問題を回避するために、FTP サーバーはパッシブ モードで使用されます。これについては、この記事の後半で説明します。デフォルトでは、VSFTPD はパッシブ モードを使用するため、アクティブ モードに変更する必要があります。

まず、VSFTPD 構成ファイルを開きます。

[メール保護]:~$ sudo Nano /etc/vsftpd.conf

次の行をファイルの末尾に追加します。

pasv_enable=いいえ

また、「connect_from_port_20」オプションが「YES」に設定されていることを確認してください。このオプションは、データ接続がサーバーのポート 20 で確立されることを保証します。

次に、FTP サーバーがファイルの保存に使用するディレクトリを作成します。このチュートリアルでは、「/home/ubuntu/ftp/」を FTP サーバーのルート パスとして構成します。

[メール保護]:~$ sudo mkdir /home/ubuntu/ftp

ここで、「local_root」オプションを変更して、構成ファイルでこのディレクトリを指定します。次のパラメーターは、サーバーのルート パスを構成します。

local_root=/home/ubuntu/ftp

ユーザーが FTP サーバーに書き込みできるようにするには、「write_enable」オプションを有効にする必要があります。

構成ファイルを変更するときは、必ずサーバーを再起動してください。

[メール保護]:~$ sudo systemctl restart vsftpd

ユーザーのパスワードを設定する

FTP クライアントは、ユーザー名とパスワードを使用してサーバーに接続します。次のコマンドを使用して、デバイスでユーザーのパスワードを設定します。

[メール保護]:~$ sudo passwd ubuntu

上記のコマンドは、ユーザー「ubuntu」のパスワードを要求します。

ファイアウォールをアクティブ モードに設定する

FTP がアクティブ モードで使用される場合、FTP サーバーはクライアントとの通信にポート 21 と 22 の 2 つのポートを使用します。ポート 21 はクライアントにコマンドを渡すために使用され、ポート 20 は の任意のポートにデータを送信するために使用されます。お客様を転送します。 ufw を使用して、サーバー上のファイアウォールを構成します。次のコマンドで ufw をインストールします。

[メール保護]:~$ sudo apt-get install ufw

ここで、サーバー側でポート 20、21、および 22 (SSH 接続用) を開きます。

[email protected]:~$ sudo ufw allow proto tcp from any from any port

次のコマンドで ufw のステータスを有効にして確認します。

[メール保護]:~$ sudo ufw を有効にする

[メール保護]:~$ sudo ufw ステータス

注: クラウドで FTP サーバーを構成する場合は、セキュリティ グループでポート 20、21、および 22 も許可する必要があります。

警告: リモート システムで ufw を有効にする前に、必ずポート 22 と必要なポートを有効にしてください。デフォルトでは、ポート 22 トラフィックを許可せずに ufw を有効にすると、UFW はポート 22 トラフィックをブロックするため、SSH 経由でリモート サーバーにアクセスできなくなります。

FTP クライアントをインストール

これで、サーバーがアクティブ モードで構成され、クライアント側からアクセスできるようになりました。クライアント アプリケーションには、FTP クライアント アプリケーションである FileZilla を使用します。次のコマンドで FileZilla をインストールします。

[メール保護]:~$ sudo apt-get install filezilla -and

FTP クライアント アプリケーションを開き、FTP サーバーのパブリック IP アドレスとその他の資格情報を入力します。

「Quickconnect」をクリックすると、FTP サーバーに接続され、「/home/ubuntu/ftp」構成ファイルの「local_root」オプションで指定されたディレクトリに自動的に転送されます。

アクティブ モードの問題

FTP をアクティブ モードで使用すると、クライアントがファイアウォールの背後にある場合に問題が発生します。最初の制御コマンドを入力した後、サーバーがランダムなポートでクライアントとのデータ接続を確立すると、ポートがクライアントのファイアウォールによってブロックされ、データ転送が失敗する可能性があります。 FTP をパッシブ モードで使用して、これらのファイアウォールの問題を修正できます。

パッシブ モードの FTP

パッシブ モードでは、クライアントはサーバーのポート 21 でサーバーとの制御接続を確立します。次に、クライアントは特別な「PASV」コマンドを送信して、データ接続がサーバーではなくクライアントによって行われていることをサーバーに通知します。応答として、クライアントはサーバー IP とランダムなポート番号を取得します (このポート番号はサーバーで構成されます)。クライアントは、この IP とポート番号を使用して、サーバーとのデータ接続を確立します。パッシブ モードでは、ファイアウォールがクライアントとサーバー間の通信を妨害しないように、データ接続と制御接続の両方がクライアントによって確立されます。

お好みのエディターで FTP 構成ファイルを開きます。

[メール保護]:~$ sudo Nano /etc/vsftpd.conf

ファイルの「pasv_enable」オプションを「YES」に設定して、サーバーがパッシブ モードでクライアントと通信できるようにします。また、「local_root」オプションを設定してサーバーのルート ディレクトリを指定し、「write_enable」オプションを「YES」に設定して、ユーザーがファイルをサーバーにアップロードできるようにします。

前述のように、データ接続はクライアントによって確立され、サーバーはそのパブリック IP とランダム ポートをクライアントに送信して、データ接続を確立します。サーバー上のこのランダムなポートは、構成ファイル内のポート範囲から指定できます。

サーバーとクライアント間のデータ接続は、1024 ~ 1048 のポートで確立されます。構成ファイルを変更した後、FTP サーバーを再起動してください。

[メール保護]:~$ sudo systemctl restart vsftpd

パッシブ モードでファイアウォールを構成する

FTP をパッシブ モードで使用する場合、データ接続は 1024 から 1048 までの任意のポートを介して行われるため、FTP サーバーでこれらすべてのポートを許可する必要があります。

[email protected]:~$ sudo ufw allow proto tcp from any from any port

ファイアウォールですべてのポートを許可した後、次のコマンドを実行して ufw を有効にします。

[メール保護]:~$ sudo ufw を有効にする

ファイアウォールを有効にする前に、サーバーのポートを常に許可してください。そうしないと、デフォルトでポート 22 をブロックする ufw として SSH 経由でサーバーにアクセスできなくなります。

接続のテスト

FTP サーバーをパッシブ モードでセットアップしたので、クライアント アプリケーションとの FTP 接続を確認できます。これを行うには、システムで FileZilla を開きます。

ホスト、ユーザー名、パスワード、ポートを入力すると、サーバーに接続できるようになります。パッシブ モードで実行されている FTP サーバーに接続したので、サーバーにファイルをアップロードできます。

FTP サーバーで SSL 証明書を構成する

デフォルトでは、FTP サーバーは、セキュリティで保護されていないチャネルを介してクライアントとサーバー間の接続を確立します。クライアントとサーバー間で機密データを交換する場合は、このタイプの通信を使用しないでください。安全なチャネルを介して通信するには、SSL 証明書を使用する必要があります。

SSL 証明書の生成

SSL 証明書を使用して、クライアントとサーバー間の安全な通信を設定します。 openssl を使用してこれらの証明書を生成します。次のコマンドは、サーバーの SSL 証明書を生成します。

[メール保護]:~$ sudo openssl request -x509 -node -tag 365 -新しいキー rsa:2048 -keyout /etc/ssl/private/vsftpd.pem -aus /etc/ssl/private/vsftpd.pem

上記のコマンドを実行すると、いくつかの質問が表示されます。これらの質問に答えると、証明書が生成されます。ターミナルで証明書を参照できます。

[メール保護]:~$ sudo ls /etc/SSL/private/

構成ファイルでの証明書の使用

これで、証明書を使用する準備が整いました。通信に SSL 証明書を使用するように「vsftpd.conf」ファイルを構成します。次のコマンドで構成ファイルを開きます。

[メール保護]:~$ sudo Nano /etc/vsftpd.conf

ファイルの末尾に次の行を追加します。これらの変更により、FTP サーバーは新しく生成された SSL 証明書を使用してクライアントと安全に通信できるようになります。

ssl_enable=はい
force_local_data_ssl=いいえ
force_local_logins_ssl=いいえ
ssl_tlsv1=はい
ssl_sslv2=いいえ
ssl_sslv3=いいえ
rsa_cert_file=/etc/SSL/privateプロパティ /vsftpd.pem
rsa_private_key_file=/etc/SSL/Private/vsftpd.pem

これらの変更を有効にするには、FTP サーバーを再起動してください。

[メール保護]:~$ sudo systemctl restart vsftpd

サーバーが再起動したら、FileZilla クライアント アプリケーションを使用してサーバーに接続してみます。今度は、クライアント アプリケーションがこれらの証明書を信頼するかどうかを尋ねます。

信頼できる CA からの証明書がある場合、この警告は表示されません。信頼できる CA ではない openssl を使用して証明書を生成したため、この場合は証明書認証を求められました。これで、安全なチャネルを介してクライアントとサーバーの間で通信できます。

匿名構成

FTP サーバーで匿名ログインを有効にすることもできます。この構成を有効にすると、すべてのユーザーが任意のユーザー名とパスワードで FTP サーバーにログインできます。構成ファイルの次のパラメーターは、FTP サーバーに匿名でアクセスできるようにします。

上記の構成は、匿名ユーザーのルート パスを「/home/ubuntu/ftp/anon」に設定し、匿名ユーザーがログインするときにパスワードの入力を求めません。

注: パス「/home/ubuntu/ftp/anon」が FTP サーバーに存在することを確認してください。

FTP サーバーを再起動してください。

[メール保護]:~$ sudo systemctl restart vsftpd

サーバーを再起動した後、Google Chrome ブラウザーを介してサーバーへの接続を試みます。次の URL にアクセスしてください。

ftp://3.8.12.52

上記の URL は、構成ファイルで指定されている FTP サーバーのルートに移動します。匿名ログインが無効になっている場合、ブラウザから FTP サーバーに接続しようとすると、最初に認証を求めるプロンプトが表示され、次にサーバーのルートにリダイレクトされます。

ローカル アクセスを構成する

構成ファイルを変更して、FTP サーバーへのローカル アクセスを許可またはブロックすることもできます。現在、FTP クライアント アプリケーションを使用せずにローカルで FTP サーバーにアクセスできますが、このアクセスをブロックすることができます。これを行うには、'local_enable' パラメータを変更する必要があります。

まず、FTP サーバーを再起動します。

[メール保護]:~$ sudo systemctl restart vsftpd

サーバーが再起動したら、コマンド ライン インターフェイスを使用してローカルで FTP サーバーにアクセスしてみます。 SSH を使用してリモート サーバーにログインします。

[メール保護]:~$ ssh [email protected] -i

次のコマンドを入力して、コマンド ライン インターフェイスを使用してローカルで FTP サーバーにログインします。

[メール保護]:~$ ftp localhost

上記のコマンドを実行すると、500 エラーがスローされます。

完了

ファイル転送プロトコルは、インターネット経由でファイルやドキュメントを転送するために長年使用されてきました。 VSFTPD は、コンピューターで FTP サーバーとして使用されるパッケージの 1 つです。 VSFTPD には、FTP サーバーのカスタマイズに使用できるさまざまな構成が付属しています。このチュートリアルでは、セキュリティを強化するために TLS を使用して FTP サーバーを構成する方法を示しました。 FTP 構成の詳細については、次のリンクにアクセスしてください。

https://vsftpd.beasts.org/vsftpd_conf.html


Ubuntu

Ubuntu20.04LTSにOpenNMSをインストールする方法

  1. Ubuntu18.04にElasticsearchをインストールする方法

  2. Ubuntu16.04にTextpatternをインストールする方法

  3. Ubuntuデスクトップでカーソルサイズを変更する方法

Ubuntu20.04にGpartedをインストールする方法

  1. Ubuntu 22.04 JammyJellyfishLinuxにTelegramをインストールする方法

  2. ubuntu20.04にgitlabをインストールする方法

  3. ベスト6無料およびオープンソース試験ソフトウェアソリューション

Ubuntu18.04およびUbuntu19.04にuTorrentをインストールする方法

  1. Ubuntu20.04にApacheSolrをインストールする方法

  2. Netplanを使用してアクセスポイントをセットアップするために必要な詳細な方法または例は?

  3. ClamTkのインストール方法– Ubuntu 20.04でのClamAV(Clam Antivirus)のフロントエンド