UbuntuでSSL / TLSを使用してセキュアFTPサーバーをセットアップする


このチュートリアルでは、Ubuntu 16.04 /16.10でSSL/TLSを使用してFTPサーバー(VSFTPDは「VerySecure FTPDaemon」の略)を保護する方法について説明します。

CentOSベースのディストリビューション用に安全なFTPサーバーをセットアップする場合は、次のように読むことができます–CentOSでSSL/TLSを使用してFTPサーバーを保護する

このガイドのさまざまな手順を実行した後、安全なデータ転送のためにFTPサーバーで暗号化サービスを有効にするための基本を学びました。

  1. You must Install and Configure a FTP Server in Ubuntu

先に進む前に、この記事のすべてのコマンドがrootまたはsudo特権アカウントとして実行されることを確認してください。

ステップ1:UbuntuでFTP用のSSL / TLS証明書を生成する

1.まず、/ etc/ssl /の下にサブディレクトリを作成して、SSL/TLS証明書とキーファイルが存在しない場合はそれを保存します。

$ sudo mkdir /etc/ssl/private

2.次に、以下のコマンドを実行して、証明書とキーを1つのファイルに生成しましょう。

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

上記のコマンドは、以下の質問に答えるように促します。シナリオに適用できる値を入力することを忘れないでください。

Country Name (2 letter code) [XX]:IN
State or Province Name (full name) []:Lower Parel
Locality Name (eg, city) [Default City]:Mumbai
Organization Name (eg, company) [Default Company Ltd]:TecMint.com
Organizational Unit Name (eg, section) []:Linux and Open Source
Common Name (eg, your name or your server's hostname) []:tecmint
Email Address []:[email protected]

ステップ2:UbuntuでSSL / TLSを使用するようにVSFTPDを構成する

3. VSFTPD構成を実行する前に、UFWファイアウォールを有効にしている場合は、ポート990と40000-50000を開いて、TLS接続とパッシブポートのポート範囲をそれぞれVSFTPD構成ファイルに設定できるようにする必要があります。

$ sudo ufw allow 990/tcp
$ sudo ufw allow 40000:50000/tcp
$ sudo ufw status

4.次に、VSFTPD構成ファイルを開き、SSLの詳細を定義します。

$ sudo vi /etc/vsftpd/vsftpd.conf
OR
$ sudo nano /etc/vsftpd/vsftpd.conf

次に、オプション ssl_enable を追加または検索し、その値をYESに設定して、SSLの使用をアクティブにします。TLSはSSLよりも安全であるため、代わりにTLSを使用するようにVSFTPDを制限します。 ssl_tlsv1 オプション:

ssl_enable=YES
ssl_tlsv1=YES
ssl_sslv2=NO
ssl_sslv3=NO

5.次に、次のように文字を使用して以下の行をコメントアウトします。

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

その後、以下の行を追加して、SSL証明書とキーファイルの場所を定義します。

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

6.ここで、匿名ユーザーがSSLを使用できないようにし、すべての非匿名ログインにデータ転送に安全なSSL接続を使用させ、ログイン中にパスワードを送信するように強制する必要があります。

allow_anon_ssl=NO
force_local_data_ssl=YES
force_local_logins_ssl=YES

7.さらに、以下のオプションを使用して、FTPサーバーにセキュリティ機能を追加できます。オプション require_ssl_reuse u003d YES を使用すると、SSLセッションの再利用を示すためにすべてのSSLデータ接続が必要になります。制御チャネルと同じマスターシークレットを知っていることを証明します。したがって、無効にする必要があります。

require_ssl_reuse=NO

さらに、 ssl_ciphers オプションを使用して、VSFTPDが暗号化されたSSL接続に許可するSSL暗号を設定できます。これは、次の脆弱性を発見した可能性のある特定の暗号を強制しようとする攻撃者によるあらゆる努力を挫折させるのに役立ちます。

ssl_ciphers=HIGH

8.次に、パッシブポートのポート範囲(最小ポートと最大ポート)を定義しましょう。

pasv_min_port=40000
pasv_max_port=50000

9. SSLデバッグを有効にするには、つまりopenSSL接続診断がVSFTPDログファイルに記録されるようにするには、 debug_ssl オプションを使用できます。

debug_ssl=YES

最後にファイルを保存して閉じます。次に、VSFTPDサービスを再起動します。

$ systemctl restart vsftpd

ステップ3:UbuntuでSSL / TLS接続を使用してFTPを確認する

10.上記のすべての構成を実行した後、以下のようにコマンドラインからFTPを使用して、VSFTPDがSSL/TLS接続を使用しているかどうかをテストします。

以下の出力から、VSFTPDはユーザー(匿名ではない)に暗号化サービスをサポートする安全なクライアントからのログインのみを許可できることを示すエラーメッセージがあります。

$ ftp 192.168.56.10
Connected to 192.168.56.10  (192.168.56.10).
220 Welcome to TecMint.com FTP service.
Name (192.168.56.10:root) : ravi
530 Non-anonymous sessions must use encryption.
Login failed.
421 Service not available, remote server has closed connection
ftp>

コマンドラインは暗号化サービスをサポートしていないため、上記のエラーが発生します。したがって、暗号化サービスを有効にしてFTPサーバーに安全に接続するには、FileZillaなどのデフォルトでSSL/TLS接続をサポートするFTPクライアントが必要です。

ステップ4:FTPを安全に接続するためにクライアントにFileZillaをインストールする

FileZillaは、FTP over SSL/TLSなどをサポートする強力で広く使用されているクロスプラットフォームFTPクライアントです。 LinuxクライアントマシンにFileZillaをインストールするには、次のコマンドを使用します。

--------- On Debian/Ubuntu ---------
$ sudo apt-get install filezilla   

--------- On CentOS/RHEL/Fedora --------- 
# yum install epel-release filezilla

--------- On Fedora 22+ --------- 
$ sudo dnf install filezilla

12.インストールが完了したら、インストールを開き、[ファイル] u003d> [サイトマネージャー]に移動するか、(Ctrl + Sを押して)以下のサイトマネージャーインターフェイスを取得します。

13.次に、以下のスクリーンショットのように、ホスト/サイト名を定義し、IPアドレスを追加し、使用するプロトコル、暗号化、およびログオンタイプを定義します(シナリオに適用される値を使用します)。

[新しいサイト]ボタンをクリックして、新しいサイト/ホスト接続を構成します。

Host:  192.168.56.10
Protocol:  FTP – File Transfer Protocol
Encryption:  Require explicit FTP over   #recommended 
Logon Type: Ask for password	        #recommended 
User: username

14.次に、上のインターフェイスから[接続]をクリックしてパスワードを入力し、SSL/TLS接続に使用されている証明書を確認し、もう一度[OK]をクリックしてFTPサーバーに接続します。

15.これで、TLS接続を介してFTPサーバーに正常にログインできたはずです。以下のインターフェースの詳細については、接続ステータスのセクションを確認してください。

16.最後に、ファイルをローカルマシンからファイルフォルダー内のFTPサーバーに転送します。ファイル転送に関するレポートを表示するには、FileZillaインターフェイスの下端を確認してください。

それで全部です!暗号化サービスを有効にせずにFTPサーバーをインストールすると、セキュリティに一定の影響があることを常に忘れないでください。このチュートリアルで説明したように、SSL/TLS接続を使用してUbuntu16.04 /16.10にセキュリティを実装するようにFTPサーバーを構成できます。

FTPサーバーでSSL/TLSを設定する際に問題が発生した場合は、以下のコメントフォームを使用して、このチュートリアル/トピックに関する問題や考えを共有してください。