3

I know that per default FTP is insecure, because it is not encrypted. To avoid this insecure behavior of FTP, I want to set up a TLS encryption in my ProFTPD. Pursuant to this tutorial here: https://www.howtoforge.com/tutorial/install-proftpd-with-tls-on-ubuntu-16-04/ the tls configuration in ProFTPD should look like this:

 <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>

A lot of these directives are self-explanatory, but I still do not know what the directive "TLSVerifyClient" means.

According to the ProFTPD manual:

If off, the module will accept the certificate and establish an SSL/TLS session, but will not verify the certificate.

If on, the module will verify a client's certificate and, furthermore, will fail all SSL handshake attempts unless the client presents a certificate when the server requests one.

But I thought the certificate is coming from the server itself, so why should the server accepts certificate requests from the client?

and my second question, what is the meaning of the "nocertrequest" option of the TLSoption directive?

Conforming to the ProFTPD manual, the function of this option is:

Some FTP clients are known to be buggy when handling a server's certificate request. This option causes the server not to include such a request during an SSL handsh

Here the same question, why would the server send a certificate request to the client, when the server itself have TLS-certificates.

Wubi
  • 83

2 Answers2

3

The TLSVerifyClient directive is about authenticating clients (i.e. "client auth" or "mutual auth"); it is used to determine whether mod_tls will request a certificate from the client, and whether that client-provided certificate must be valid (TLSVerifyClient on), or not (TLSVerifyClient optional). Some sites want to use a client-provided certificate for access control; only clients presenting a certificate from a CA trusted by the server would be allowed, for example.

The original implementation of mod_tls would always include a request for the client's certificate, regardless of the TLSVerifyClient setting. Thus there was the "NoCertRequest" TLSOption, for disabling that client certificate request. Now, however, the NoCertRequest TLSOption has been deprecated in favor of using only the TLSVerifyClient setting; see Bug#4213.

Hope this helps!

Castaglia
  • 3,477
  • 3
  • 24
  • 46
3

For a more secure protocol, you might consider using SFTP (which proftpd supports). SFTP runs over SSH, so fully encrypted. You might find this related question useful. This tutorial on configuring proftpd to use SFTP may also help.