RHEL/CentOS 7 で TLS/SSL プロトコルを使用した安全な ProFTPD 接続
その性質上、FTP プロトコルは安全でないプロトコルとして設計されており、すべてのデータとパスワードは平文で転送されるため、サードパーティの仕事により、すべての FTP クライアント/サーバー トランザクション、特にユーザー名とサーバー間のトランザクションが非常に簡単に傍受されます。認証プロセスで使用されるパスワード。
要件
- RHEL/CentOS 7 への ProFTPD サーバーのインストール
- RHEL/CentOS 7 で Proftpd サーバーの匿名アカウントを有効にする
このチュートリアルでは、CentOS/RHEL 7 の ProFTPd サーバーで 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 (コマンド ライン) があります。