このチュートリアルでは、セキュリティを確保する方法について説明します。 FTP サーバー(VSFTPD を意味する "非常に安全なFTPデーモン」)を使用する SSL / TLS NS Ubuntu 16.04 / 16.10.
CentOSベースのディストリビューション用に安全なFTPサーバーをセットアップすることを検討している場合は、次のように読むことができます– CentOSでSSL / TLSを使用してFTPサーバーを保護する
このガイドのさまざまな手順を実行した後、安全なデータ転送のためにFTPサーバーで暗号化サービスを有効にするための基本を学びました。
先に進む前に、この記事のすべてのコマンドがrootまたは sudo特権アカウント.
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。
上記のコマンドは、以下の質問に答えるように促します。シナリオに適用できる値を入力することを忘れないでください。
国名(2文字コード)[XX]:NS
州または県の名前(フルネーム)[]:下部パレル
地域名(例:都市)[デフォルトの都市]:ムンバイ
組織名(例:会社)[Default Company Ltd]:TecMint.com
組織単位名(例:セクション)[]:Linuxとオープンソース
共通名(例:名前またはサーバーのホスト名)[]:テクミント
電子メールアドレス []:[メール保護]
3. 実行する前に VSFTPD 構成、持っている人のために UFWファイアウォールが有効、ポートを開く必要があります 990 と 40000-50000 TLS接続とパッシブポートのポート範囲をそれぞれVSFTPD構成ファイルに設定できるようにするには:
$ sudo ufw allow 990 / tcp。 $ sudo ufw allow 40000:50000 / tcp。 $ sudoufwステータス。
4. 次に、VSFTPD構成ファイルを開き、SSLの詳細を定義します。
$ sudo vi / etc / vsftpd / vsftpd.conf。 また。 $ sudo nano / etc / vsftpd / vsftpd.conf。
次に、オプションを追加または検索します ssl_enable
その値をに設定します はい SSLの使用をアクティブ化するには、TLSはSSLよりも安全であるため、VSFTPDが代わりにTLSを使用するように制限します。 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 = YES
、SSLセッションの再利用を示すには、すべてのSSLデータ接続が必要です。 制御チャネルと同じマスターシークレットを知っていることを証明します。 したがって、無効にする必要があります。
require_ssl_reuse = NO。
さらに、VSFTPDが暗号化されたSSL接続に許可するSSL暗号を設定できます。 ssl_ciphers
オプション。 これは、次の脆弱性を発見した可能性のある特定の暗号を強制しようとする攻撃者によるあらゆる努力を挫折させるのに役立ちます。
ssl_ciphers = HIGH。
8. 次に、パッシブポートのポート範囲(最小ポートと最大ポート)を定義しましょう。
pasv_min_port = 40000。 pasv_max_port = 50000。
9. SSLデバッグを有効にするには、つまりopenSSL接続診断がVSFTPDログファイルに記録されるようにするには、 debug_ssl
オプション:
debug_ssl = YES。
最後にファイルを保存して閉じます。 次に、VSFTPDサービスを再起動します。
$ systemctl restartvsftpd。
10. 上記のすべての構成を実行した後、VSFTPDがSSL / TLS接続を使用しているかどうかをテストします。 コマンドラインからFTPを使用する 以下のように。
以下の出力から、VSFTPDはユーザー(匿名ではない)に暗号化サービスをサポートする安全なクライアントからのログインのみを許可できることを示すエラーメッセージがあります。
$ ftp 192.168.56.10 192.168.56.10(192.168.56.10)に接続しました。 220 TecMint.comFTPサービスへようこそ。 名前(192.168.56.10:root):ravi。 530非匿名セッションは暗号化を使用する必要があります。 ログインに失敗しました。 421サービスを利用できません。リモートサーバーの接続が閉じられました。 ftp>
コマンドラインは暗号化サービスをサポートしていないため、上記のエラーが発生します。 したがって、暗号化サービスが有効になっているFTPサーバーに安全に接続するには、次のようなデフォルトでSSL / TLS接続をサポートするFTPクライアントが必要です。 FileZilla.
FileZilla は、FTP over SSL / TLSなどをサポートする強力で広く使用されているクロスプラットフォームFTPクライアントです。 LinuxクライアントマシンにFileZillaをインストールするには、次のコマンドを使用します。
Debian / Ubuntuについて $ sudo apt-get install filezilla CentOS / RHEL / Fedoraの場合 #yum install epel-filezillaをリリース Fedora22 +で $ sudo dnf installfilezilla。
12. インストールが完了したら、それを開いてに移動します ファイル=>サイトマネージャー または(プレス Ctrl + S)を取得するには サイト管理者 以下のインターフェース。
13. 次に、以下のスクリーンショットのように、ホスト/サイト名を定義し、IPアドレスを追加し、使用するプロトコル、暗号化、およびログオンタイプを定義します(シナリオに適用される値を使用します)。
クリック 新しいサイト ボタンをクリックして、新しいサイト/ホスト接続を構成します。
ホスト: 192.168.56.10 プロトコル: FTP –ファイル転送プロトコル 暗号化: 明示的なFTPオーバーが必要 #recommendedログオンタイプ: パスワードを尋ねる #recommended User: ユーザー名
14. 次に、をクリックします 接続 上記のインターフェースからパスワードを入力し、に使用されている証明書を確認します SSL / TLS 接続し、クリックします わかった FTPサーバーに接続するためにもう一度:
15. これで、TLS接続を介してFTPサーバーに正常にログインできたはずです。以下のインターフェイスの詳細については、接続ステータスのセクションを確認してください。
16. 最後に、 ローカルマシンからFTPサーバーにファイルを転送する ファイルフォルダーで、FileZillaインターフェイスの下端を見て、ファイル転送に関するレポートを表示します。
それで全部です! 暗号化サービスを有効にせずにFTPサーバーをインストールすると、セキュリティに一定の影響があることを常に忘れないでください。 このチュートリアルで説明したように、SSL / TLS接続を使用してUbuntu16.04 /16.10にセキュリティを実装するようにFTPサーバーを構成できます。
FTPサーバーでSSL / TLSを設定する際に問題が発生した場合は、以下のコメントフォームを使用して、このチュートリアル/トピックに関する問題や考えを共有してください。