ウェブサイト検索

RHEL/CentOS 7 で TLS/SSL プロトコルを使用した安全な ProFTPD 接続


その性質上、FTP プロトコルは安全でないプロトコルとして設計されており、すべてのデータとパスワードは平文で転送されるため、サードパーティの仕事により、すべての FTP クライアント/サーバー トランザクション、特にユーザー名とサーバー間のトランザクションが非常に簡単に傍受されます。認証プロセスで使用されるパスワード。

要件

  1. RHEL/CentOS 7 への ProFTPD サーバーのインストール
  2. RHEL/CentOS 7 で Proftpd サーバーの匿名アカウントを有効にする

このチュートリアルでは、CentOS/RHEL 7ProFTPd サーバーで FTP 通信を保護および暗号化する方法について説明します。 、TLS (トランスポート層セキュリティ) と明示的な FTPS 拡張機能を使用します (FTPS は HTTP プロトコルの HTTPS と同じだと考えてください)。

ステップ 1: Proftpd TLS モジュール構成ファイルを作成する

1. 匿名アカウントに関する以前の Proftpd チュートリアルで説明したように、このガイドでも、enabled_mod と < の助けを借りて、Proftpd の将来の構成ファイルをモジュールとして管理する際に同じアプローチを使用します。 b>disabled_mod ディレクトリ。すべてのサーバーの拡張機能をホストします。

そのため、お気に入りのテキスト エディタで tls.conf という名前の新しいファイルを disabled_mod Proftpd パスに作成し、次のディレクティブを追加します。

nano /etc/proftpd/disabled_mod/tls.conf

次の TLS ファイル構成の抜粋を追加します。

<IfModule mod_tls.c>
TLSEngine                               on
TLSLog                                  /var/log/proftpd/tls.log
TLSProtocol                             SSLv23
 
TLSRSACertificateFile                   /etc/ssl/certs/proftpd.crt
TLSRSACertificateKeyFile                /etc/ssl/private/proftpd.key

#TLSCACertificateFile                                     /etc/ssl/certs/CA.pem
TLSOptions                      NoCertRequest EnableDiags NoSessionReuseRequired
TLSVerifyClient                         off
TLSRequired                             on
TLSRenegotiate                          required on
</IfModule>

2. TLS 接続をサポートしていないブラウザまたは FTP クライアントを使用している場合は、TLS 接続と非 TLS 接続を同時に許可するために、行 TLSRequired on をコメント化します。以下のスクリーンショットのようなエラー メッセージを回避してください。

ステップ 2: TLS 用の SSL 証明書ファイルを作成する

3. TLS モジュール構成ファイルを作成した後。 Proftpd で FTP over TLS を有効にするには、OpenSSL パッケージを使用して ProFTPD サーバー経由で安全な通信を使用するために、SSL 証明書とキーを生成する必要があります。

yum install openssl

単一の長いコマンドを使用して SSL 証明書とキーのペアを生成できますが、作業を簡略化するために、希望する名前の SSL ペアを生成し、キー ファイルに正しいアクセス許可を割り当てる単純な bash スクリプトを作成できます。

proftpd_gen_ssl という名前の bash ファイルを /usr/local/bin/ またはその他の実行可能システム パス (` PATH 変数で定義) に作成します。 )。

nano /usr/local/bin/proftpd_gen_ssl

これに次の内容を追加します。

#!/bin/bash
echo -e "\nPlease enter a name for your SSL Certificate and Key pairs:"
read name
 openssl req -x509 -newkey rsa:1024 \
          -keyout /etc/ssl/private/$name.key -out /etc/ssl/certs/$name.crt \
          -nodes -days 365\

 chmod 0600 /etc/ssl/private/$name.key

4. 上記のファイルを作成したら、実行権限を割り当て、/etc/ssl/private ディレクトリが存在することを確認し、スクリプトを実行して SSL 証明書とキーを作成します。ペア。

chmod +x /usr/local/bin/proftpd_gen_ssl
mkdir -p /etc/ssl/private
proftpd_gen_ssl

SSL 証明書に必要なプロンプト情報 (説明不要) を指定しますが、ホストの完全修飾ドメイン名FQDN と一致する共通名 に注意してください。 b>。

ステップ 3: ProFTPD サーバーで TLS を有効にする

5. 前に作成した TLS 構成ファイルはすでに正しい SSL 証明書とキー ファイルを指しているため、残っている唯一のことは シンボリック リンク を作成して TLS モジュールをアクティブにすることです。 >tls.conf ファイルを enabled-mod ディレクトリに移動し、ProFTPD デーモンを再起動して変更を適用します。

ln -s /etc/proftpd/disabled_mod/tls.conf  /etc/proftpd/enabled_mod/
systemctl restart proftpd

6. TLS モジュールを無効にするには、enabled_mod ディレクトリから tls.conf シンボリックリンクを削除し、ProFTPD サーバーを再起動して変更を適用します。

rm /etc/proftpd/enabled_mod/tls.conf
systemctl restart proftpd

ステップ 4: ファイアウォールを開いて FTP over TLS 通信を許可する

7. クライアントが ProFTPD にアクセスし、パッシブ モード でファイルを安全に転送するには、1024 から までのポート範囲全体を開く必要があります。次のコマンドを使用して、RHEL/CentOS ファイアウォールで 65534 を実行します。

firewall-cmd --add-port=1024-65534/tcp  
firewall-cmd --add-port=1024-65534/tcp --permanent
firewall-cmd --list-ports
firewall-cmd --list-services
firewall-cmd --reload

それでおしまい。これで、システムはクライアント側から TLS 経由の FTP 通信を受け入れる準備が整いました。

ステップ 5: クライアントから TLS 経由で ProFTPD にアクセスする

8. Web ブラウザには通常、FTP over TLS プロトコルのサポートが組み込まれていないため、すべてのトランザクションは暗号化されていない FTP 経由で配信されます。最も優れた FTP クライアントの 1 つは FileZilla です。これは完全にオープン ソースであり、ほぼすべての主要なオペレーティング システムで実行できます。

FileZilla から FTP over TLS にアクセスするには、サイト マネージャーを開き、プロトコルFTPを選択し、明示的な FTP over TLS が必要を選択します。 [暗号化] ドロップダウン メニューで、[ログオン タイプ] として [通常] を選択し、FTP 認証情報を入力して [接続] をクリックして通信します。サーバーと一緒に。

9. ProFTPD サーバーに初めて接続する場合は、新しい証明書のポップアップが表示されます。今後も証明書を常に信頼するというボックスをオンにします。セッションを選択し、OK をクリックして証明書を受け入れ、ProFTPD サーバーに対して認証します。

FileZilla 以外のクライアントを使用して FTP リソースに安全にアクセスすることを計画している場合は、クライアントが FTP over TLS プロトコルをサポートしていることを確認してください。 FTPS を使用できる FTP クライアントの良い例としては、Windows プラットフォームの WinSCP、NIX の gFTP またはLFTP (コマンド ライン) があります。