Я знаю, что по умолчанию FTP небезопасен, потому что он не зашифрован. Чтобы избежать этого небезопасного поведения FTP, я хочу настроить шифрование TLS в моем ProFTPD. В соответствии с этим руководством здесь: https://www.howtoforge.com/tutorial/install-proftpd-with-tls-on-ubuntu-16-04/ конфигурация tls в ProFTPD должна выглядеть так:
<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, если только клиент не представит сертификат, когда сервер запросит его.
Но я думал, что сертификат исходит от самого сервера, так почему сервер должен принимать запросы сертификатов от клиента?
и мой второй вопрос, что означает параметр «nocertrequest» в директиве TLSoption?
В соответствии с руководством ProFTPD, функция этой опции:
Известно, что некоторые FTP-клиенты дают сбой при обработке запроса сертификата сервера. Эта опция заставляет сервер не включать такой запрос во время установления связи SSL.
Здесь тот же вопрос, зачем серверу отправлять запрос сертификата клиенту, если у самого сервера есть TLS-сертификаты.
Для более безопасного протокола вы можете рассмотреть возможность использования SFTP (который поддерживает proftpd). SFTP работает через SSH, поэтому полностью зашифрован. Вы можете найти этот связанный вопрос полезно. Это руководство по настройка proftpd для использования SFTP также может помочь.
В TLSVerifyClient
директива об аутентификации клиентов (т.е. "клиентская аутентификация" или "взаимная аутентификация"); он используется, чтобы определить, mod_tls
будет запрашивать сертификат у клиента, и будет ли этот сертификат, предоставленный клиентом должен быть действительным (TLSVerifyClient on
), или не (TLSVerifyClient optional
). Некоторые сайты хотят использовать предоставленный клиентом сертификат для управления доступом; Например, будут разрешены только клиенты, представляющие сертификат от центра сертификации, которому доверяет сервер.
Оригинальная реализация mod_tls
всегда будет включать запрос сертификата клиента, несмотря на из TLSVerifyClient
настройка. Таким образом, был "NoCertRequest" TLSOption
для отключения запроса сертификата клиента. Однако теперь NoCertRequest TLSOption
устарел в пользу использования только TLSVerifyClient
установка; видеть Ошибка # 4213.
Надеюсь это поможет!