CentOS 7 で安全なファイル転送のために SSL/TLS を使用して FTP サーバーを保護する方法
元の設計では、FTP (ファイル転送プロトコル) は安全ではありません。つまり、2 台のマシン間で送信されるデータとユーザーの資格情報は暗号化されません。これは、データだけでなくサーバーのセキュリティにも大きな脅威をもたらします。
このチュートリアルでは、CentOS/RHEL 7 および Fedora の FTP サーバーでデータ暗号化サービスを手動で有効にする方法を説明します。 SSL/TLS 証明書を使用して VSFTPD (非常に安全な FTP デーモン) サービスを保護するさまざまな手順を実行します。
前提条件:
- CentOS 7 に FTP サーバーをインストールして構成しておく必要があります
始める前に、このチュートリアルのすべてのコマンドはrootとして実行されることに注意してください。root アカウントを使用してサーバーを制御していない場合は、sudo コマンドを使用して root 権限を取得します。
ステップ 1. SSL/TLS 証明書と秘密キーの生成
1. まず、/etc/ssl/
の下にサブディレクトリを作成し、SSL/TLS 証明書とキー ファイルを保存する必要があります。 :
mkdir /etc/ssl/private
2. 次に、以下のコマンドを実行して、vsftpd の証明書とキーを 1 つのファイルに作成します。使用される各フラグの説明は次のとおりです。
- req – X.509 証明書署名要求 (CSR) 管理用のコマンドです。
- x509 – X.509 証明書データ管理を意味します。
- 日数 – 証明書が有効な日数を定義します。
- newkey – 証明書キープロセッサを指定します。
- rsa:2048 – RSA キー プロセッサ。2048 ビットの秘密キーを生成します。
- keyout – キー ストレージ ファイルを設定します。
- out – 証明書ストレージ ファイルを設定します。証明書とキーの両方が同じファイル /etc/ssl/private/vsftpd.pem に保存されることに注意してください。
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
ステップ 2. SSL/TLS を使用するための VSFTPD の構成
3. VSFTPD 構成を実行する前に、ポート 990 と 40000 ~ 50000 を開いて、TLS 接続とパッシブ ポートのポート範囲を許可します。 VSFTPD 構成ファイルでそれぞれ定義します。
firewall-cmd --zone=public --permanent --add-port=990/tcp
firewall-cmd --zone=public --permanent --add-port=40000-50000/tcp
firewall-cmd --reload
4. 次に、VSFTPD 構成ファイルを開き、その中で SSL の詳細を指定します。
vi /etc/vsftpd/vsftpd.conf
オプション ssl_enable を探し、その値を YES
に設定して SSL の使用を有効にします。さらに、TSL は SSL よりも安全であるため、VSFTPD が TLS を使用するように制限します。代わりに、ssl_tlsv1_2 オプションを使用します。
ssl_enable=YES
ssl_tlsv1_2=YES
ssl_sslv2=NO
ssl_sslv3=NO
5. 次に、以下の行を追加して、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 が 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 デバッグを許可します。つまり、debug_ssl オプションを使用して、openSSL 接続診断が VSFTPD ログ ファイルに記録されます。
debug_ssl=YES
すべての変更を保存してファイルを閉じます。次に、VSFTPD サービスを再起動しましょう。
systemctl restart vsftpd
ステップ 3: SSL/TLS 接続を使用した FTP サーバーのテスト
10. 上記の構成をすべて行った後、次のようにコマンド ラインから FTP を使用して、VSFTPD が SSL/TLS 接続を使用しているかどうかをテストします。
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>
上のスクリーンショットから、VSFTPD は暗号化サービスをサポートするクライアントからのログインのみをユーザーに許可できることを通知するエラーがあることがわかります。
コマンド ラインでは暗号化サービスが提供されないため、エラーが発生します。したがって、サーバーに安全に接続するには、FileZilla などの SSL/TLS 接続をサポートする FTP クライアントが必要です。
ステップ 4: FileZilla をインストールして FTP サーバーに安全に接続する
11. FileZilla は、デフォルトで SSL/TLS 接続をサポートする、最新の人気のある重要なクロスプラットフォーム FTP クライアントです。
Linux に FileZilla をインストールするには、以下のコマンドを実行します。
--------- On CentOS/RHEL/Fedora ---------
yum install epel-release filezilla
--------- On Debian/Ubuntu ---------
sudo apt-get install filezilla
12. インストールが完了したら (または既にインストールしている場合は)、それを開いて File=>サイト マネージャー に移動するか、(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
] を 1 回クリックします。 FTP サーバーに接続するには、次の手順を実行します。
この段階では、TLS 接続経由で FTP サーバーに正常にログインしているはずです。詳細については、以下のインターフェイスの接続ステータス セクションを確認してください。
15. 最後になりましたが、ローカル マシンからファイル フォルダ内の FTP サーバーにファイルを転送してみます。FileZilla インターフェイスの下端を見て確認してください。ファイル転送に関するレポート。
それだけです!このチュートリアルで説明したように、SSL/TLS 接続を使用するように設定しない限り、FTP はデフォルトでは安全ではないことに常に留意してください。以下のフィードバック フォームを使用して、このチュートリアル/トピックに関するご意見を共有してください。