web-dev-qa-db-ja.com

ProFTPD:TLS構成での「TLSVerifyClient」と「NoCertRequest」の意味

FTPは暗号化されていないため、デフォルトでは安全ではないことを私は知っています。 FTPのこの安全でない動作を回避するために、ProFTPDでTLS暗号化を設定したいと思います。ここのこのチュートリアルに従って: https://www.howtoforge.com/tutorial/install-proftpd-with-tls-on-ubuntu-16-04/ ProFTPDのtls構成は次のようになります。 :

 <IfModule mod_tls.c>
TLSEngine                  on
TLSLog                     /var/log/proftpd/tls.log
TLSProtocol TLSv1.2
TLSCipherSuite AES128+EECDH:AES128+EDH
TLSOptions                 NoCertRequest AllowClientRenegotiations
TLSRSACertificateFile      /etc/proftpd/ssl/proftpd.cert.pem
TLSRSACertificateKeyFile   /etc/proftpd/ssl/proftpd.key.pem
TLSVerifyClient            off
TLSRequired                on
RequireValidShell          no
</IfModule>

これらのディレクティブの多くは自明ですが、ディレクティブ「TLSVerifyClient」が何を意味するのかはまだわかりません。

ProFTPDのマニュアルによると:

オフの場合、モジュールは証明書を受け入れてSSL/TLSセッションを確立しますが、証明書を検証しません。

オンの場合、モジュールはクライアントの証明書を検証し、さらに、サーバーが証明書を要求したときにクライアントが証明書を提示しない限り、すべてのSSLハンドシェイクの試行に失敗します。

しかし、証明書はサーバー自体からのものだと思ったのに、なぜサーバーはクライアントからの証明書要求を受け入れる必要があるのでしょうか。

そして私の2番目の質問、TLSoptionディレクティブの「nocertrequest」オプションの意味は何ですか?

ProFTPDマニュアルに準拠して、このオプションの機能は次のとおりです。

一部のFTPクライアントは、サーバーの証明書要求を処理するときにバグがあることがわかっています。このオプションにより、サーバーはSSLハンドシュ中にそのような要求を含めないようになります

ここでも同じ質問ですが、サーバー自体にTLS証明書があるのに、なぜサーバーがクライアントに証明書要求を送信するのでしょうか。

2
Wubi

TLSVerifyClient ディレクティブは、クライアントの認証に関するものです(i.e. "clientauth"または "mutual auth");これは、mod_tlsがクライアントに証明書を要求するかどうか、およびそのクライアントが提供する証明書mustが有効か(TLSVerifyClient on)、そうでないか(TLSVerifyClient optional)を決定するために使用されます。一部のサイトでは、アクセス制御にクライアント提供の証明書を使用したいと考えています。たとえば、サーバーによって信頼されているCAからの証明書を提示するクライアントのみが許可されます。

mod_tlsの元の実装には、常にクライアントの証明書の要求、regardlessTLSVerifyClient設定が含まれます。したがって、そのクライアント証明書要求を無効にするための「NoCertRequest」TLSOptionがありました。ただし、現在、NoCertRequest TLSOptionは非推奨になり、TLSVerifyClient設定のみを使用するようになりました。 Bug#421 を参照してください。

お役に立てれば!

1
Castaglia

より安全なプロトコルについては、SFTP(proftpdがサポート)の使用を検討してください。 SFTPはSSH上で実行されるため、完全に暗号化されています。 この関連する質問 が役立つかもしれません。 SFTPを使用するようにproftpdを設定する に関するこのチュートリアルも役立つ場合があります。

2