Mi Blog

No te olvides seguirme en Facebook.

Tan solo tienes que hacer click en Me Gusta

 

 

x

⋆ Cómo configurar TLS en ProFTPD

⋆ Cómo configurar TLS en ProFTPD

(Tiempo estimado: 6 - 11 minutos)

Cifrar los datos en una conexión FTP si es posible utilizando TLS. Las comunicaciones y los datos en una conexión estándar de FTP van si cifrar, por tanto, cualquier persona podría conocer los datos de acceso e incluso interceptar los ficheros que transferimos. Por eso, es necesario otorgar al protocolo FTP de una capa extra de seguridad que evite estos problemas. Gracias a TLS la información va cifrada y nuestros datos viajarán de forma segura a través de la red.

Seguid leyendo y aprenderéis como configurar y activar TLS en ProFTPD...

 

 

¿QUÉ ES TLS?

SSL son las siglas en inglés de Secure Socket Layer (en español capa de conexión segura). Es un protocolo criptográfico (un conjunto de reglas a seguir relacionadas a seguridad, aplicando criptografía) empleado para realizar conexiones seguras entre un cliente (como por ejemplo un navegador Web de Internet) y un servidor (como lo son las computadoras que despachan páginas web).

Este protocolo ha sido relevado por TLS, que son las siglas en inglés de Transport Layer Security (en español seguridad de la capa de transporte). Versiones de TLS tienen un equivalente en SSL, por ejemplo TLS 1.2 corresponde a SSL 3.3; de ahí que aún sea común que se refiera al protocolo TLS como SSL y que en un contexto informal se utilicen estos términos de forma intercambiable.

 

 

TLS ofrece la capa de seguridad al FTP que no ofrece por sí mismo.

 

 

1.- ELEMENTOS NECESARIOS PARA ESTE TUTORIAL

  • Un equipo con GNU/Linux + ProFTPD instalado
  • Conexión a Internet (por si necesitamos instalar algún programa)
  • Cliente FTP (Por ejemplo Filezilla)

 

 

2.- CONFIGURACIÓN INICIAL

Siguiendo la serie de tutoriales de ProFTPD, este tutorial se basa en la configuración final del anterior tutorial. Por tanto, os recomiendo tener claro primero los anteriores tutoriales si queréis entender perfectamente el por qué de cada una de las líneas. La configuración en la que nos vamos a basar, es la que generamos en el anterior tutorial Cómo configurar VirtualHosts en ProFTPD, y es la siguiente:

Include /etc/proftpd/modules.conf
Include /etc/proftpd/virtuals.conf

ServerName "Debian"
ServerType standalone
DefaultServer on
UseIPv6 off

DefaultRoot ~
RequireValidShell off
AuthUserFile /etc/proftpd/ftpd.passwd

<IfModule mod_quotatab.c>
QuotaEngine on
QuotaLog /var/log/proftpd/quota.log
<IfModule mod_quotatab_file.c>
QuotaLimitTable file:/etc/proftpd/ftpquota.limittab
QuotaTallyTable file:/etc/proftpd/ftpquota.tallytab
</IfModule>
</IfModule>

<Anonymous ~ftp>
User ftp
Group nogroup
UserAlias anonymous ftp
RequireValidShell off

<Directory *>
<Limit WRITE>
Deny All
</Limit>
</Directory>

<Directory upload>
<Limit STOR,MKD>
Allow all
</Limit>
</Directory>

</Anonymous>

 

 

Es necesario realizar las operaciones con usuario root o con sudo.

 

 

3.- CONFIGURAR Y ACTIVAR TLS

En el fichero de configuración principal /etc/proftpd/proftpd.conf tenemos que añadir la siguiente línea para importar la configuración de TLS:

Include /etc/proftpd/tls.conf

 

 

Y el fichero tls.conf debemos configurarlo para que tenga las siguientes opciones:

<IfModule mod_tls.c>
TLSEngine on
TLSLog /var/log/proftpd/tls.log
TLSProtocol SSLv23
TLSRSACertificateFile /etc/ssl/certs/proftpd.crt
TLSRSACertificateKeyFile /etc/ssl/private/proftpd.key
TLSRequired on
</IfModule>

 

 

 

 

4.- GENERACIÓN DE CERTIFICADOS

Para la generación delos certificados, tanto el público como el privado, lo mejor es utilizar la propia herramienta que trae ProFTPD llamada proftpd-gencert. Tan solo debemos ejecutar el comando y un asistente muy sencillo nos irá preguntando los datos con los que queremos que se generen los certificados:

raul@ns1:~$ sudo proftpd-gencert 
Generating a RSA private key
.........+++++
.....................................................................................................................................................................................................................................................................................................................................+++++
writing new private key to '/etc/ssl/private/proftpd.key'
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:ES <--- INTRODUCIMOS VALOR
State or Province Name (full name) [Some-State]:ESPAÑA <--- INTRODUCIMOS VALOR
Locality Name (eg, city) []:LEÓN <--- INTRODUCIMOS VALOR
Organization Name (eg, company) [Internet Widgits Pty Ltd]:RPF <--- INTRODUCIMOS VALOR
Organizational Unit Name (eg, section) []:
Common Name (e.g. server FQDN or YOUR name) []:www.raulprietofernandez.net <--- INTRODUCIMOS VALOR
Email Address []:Esta dirección de correo electrónico está siendo protegida contra los robots de spam. Necesita tener JavaScript habilitado para poder verlo. <--- INTRODUCIMOS VALOR

Use the following information in your ProFTPD configuration:

TLSRSACertificateFile /etc/ssl/certs/proftpd.crt
TLSRSACertificateKeyFile /etc/ssl/private/proftpd.key

See /etc/proftpd/tls.conf for suggested TLS related configuration
items and include that file in your /etc/proftpd/proftpd.conf file.

 

 

Debemos asegurarnos que los ficheros generados en el paso anterior proftpd.crt y proftpd.key, están ubicados en el mismo sitio que tenemos configurado en el fichero tls.conf. El siguiente paso será reiniciar el servidor ProFTPD para aplicar los cambios:

raul@ns1:~$ sudo /etc/init.d/proftpd restart
[ ok ] Restarting proftpd (via systemctl): proftpd.service.

 

 

5.- PROBANDO LA CONEXIÓN TLS

Para poder utilizar TLS; debemos crear en nuestro cliente FTP una nueva conexión y forzaremos a que use TLS:

TLS ProFTPDNuevo perfil de conexión

 

 

En la primera conexión, se podrá ver que el servidor envía un certificado a nuestro cliente con los datos que configuramos en los pasos anteriores:

TLS ProFTPDAceptar certificado

 

 

TLS ProFTPDConexión FTP con TLS correcta

 

 

6.- CONFIGURACIÓN FINAL

A continuación pongo el contenido completo del fichero proftpd.conf descrito en este tutorial junto con la configuración realizada en tutoriales anteriores. Tened en cuenta que para TLS no son necesarias todas las configuraciones que hay en el fichero abajo descrito, ya que es la acumulación de la configuración de todos los tutoriales anteriores. El fichero principal proftpd.conf es el siguiente:

Include /etc/proftpd/modules.conf
Include /etc/proftpd/virtuals.conf
Include /etc/proftpd/tls.conf

ServerName "Debian"
ServerType standalone
DefaultServer on
UseIPv6 off

DefaultRoot ~
RequireValidShell off
AuthUserFile /etc/proftpd/ftpd.passwd

<IfModule mod_quotatab.c>
QuotaEngine on
QuotaLog /var/log/proftpd/quota.log
<IfModule mod_quotatab_file.c>
QuotaLimitTable file:/etc/proftpd/ftpquota.limittab
QuotaTallyTable file:/etc/proftpd/ftpquota.tallytab
</IfModule>
</IfModule>

<Anonymous ~ftp>
User ftp
Group nogroup
UserAlias anonymous ftp
RequireValidShell off

<Directory *>
<Limit WRITE>
Deny All
</Limit>
</Directory>

<Directory upload>
<Limit STOR,MKD>
Allow all
</Limit>
</Directory>

</Anonymous>

 

 

Y el fichero de tls.conf es el siguiente:

<IfModule mod_tls.c>
TLSEngine on
TLSLog /var/log/proftpd/tls.log
TLSProtocol SSLv23
TLSRSACertificateFile /etc/ssl/certs/proftpd.crt
TLSRSACertificateKeyFile /etc/ssl/private/proftpd.key
TLSRequired on
</IfModule>

 

 

ENJOY!


Raúl Prieto Fernández

Sitio Web: raulprietofernandez.net

Si quieres ir rápido, ve solo. Si quieres llegar lejos, ve acompañado.

Comentarios  

Marcio
# Marcio 16-04-2020 08:42
Me pareció muy bueno el material, era similar a otro que ya había encontrado lastimosamente no me funcionó, quizás fue un error mío, saludos.
Responder
Raúl Prieto Fernández
# Raúl Prieto Fernández 11-05-2020 12:39
Hola Marcio:

Seguramente se te olvidase hacer alguno de los pasos, ya que lo he revisado varias veces y funciona correctamente.

Un saludo!
Responder
David
# David 11-05-2020 10:24
Hola,
He conseguido hacerlo funcionar sin problemas, pero en las pruebas (LAN) he notado que la velocidad de transferencia cuando activo el TLS es de 16Mbps (2MBps) por segundo, en cambio si lo deshabilito la velocidad de transferencia me sube a 800 Mbps.
¿Sabéis cómo puedo solucionarlo?
Responder
Raúl Prieto Fernández
# Raúl Prieto Fernández 11-05-2020 12:41
Hola David:

Lo normal al usar TLS es que la velocidad se vea afectada, ya que se tienen que cifrar todos los paquetes de la conexión. Lo que no pe parece normal es esa reducción tan drástica en tu velocidad. Lo único que se me ocurre es que el servidor FTP tenga poca capacidad de procesamiento y no sea capaz de cifrar a esa velocidad.

He estado revisando un poco por Internet, y la verdad que no he encontrado nada al respecto :(

Siento no poder ayudarte en este punto.
Responder
David
# David 11-05-2020 13:12
Hola Raúl,
Muchas gracias por la respuesta, no había relacionado lo que comentas.
No me extraña tampoco (a raíz de tu respuesta) que haya esa diferencia tran drástica ya que lo que estoy haciéndo es en una NAS (buffalo) en la que me he metido y he hecho algunos cambios.
Un saludo y muchas, muchísimas gracias por la ayuda que prestas
Responder
Raúl Prieto Fernández
# Raúl Prieto Fernández 11-05-2020 13:22
Hola David:

Me imaginaba que lo estabas probando en una Raspberry, NAS o algo así con "poco" procesamiento :)

Prueba de todas formas a usar SFTP (ftp a través de ssh) también va cifrado, pero quizás obtengas mejor rendimiento.

Saludos
Responder
david
# david 23-05-2020 07:12
Hola, hice todos los pasos y al final en el momento de la prueba con el filezilla me sale:
Error al recuperar el listado del directorio
Que puede ser? Ayudame por favor
Responder
Raúl Prieto Fernández
# Raúl Prieto Fernández 29-05-2020 11:41
Hola david:

Pues no me suena ese error, pero tiene pinta que no es capaz de acceder al directorio $HOME del FTP?

¿Has probado que todo te funciona bien sin TLS?

Lo primero es montar el FTP sin TLS; y una vez que ves que lo básico funciona, montar el TLS.

Con la poca información que medas no sé que puede fallarte :(

Saludos
Responder
Guillermo Rodriguez
+1 # Guillermo Rodriguez 28-07-2020 19:31
Raul muchas gracias por este increible tutorial! Logré configurarlo, solo tengo una sugerencia para inexpertos como yo. En el tutorial pones: "En el fichero de configuración principal /etc/proftpd/proftpd.conf tenemos que añadir la siguiente línea para importar la configuración de TLS:

Include /etc/proftpd/tls.conf"

En mi caso, como le puede suceder a cualquier otra persona, agregué dicho Include, en la parte superior del archivo de configuración "proftpd.conf". Esto generó que al intentar conectarme el Filezilla respondiera "AUTH TLS 500 AUTH not understood".

Lugo de renegar un poco y analizando el archivo de configuración noté que mas abajo (casi al final) esta linea estaba comentada, o sea, según mi interpretación, no habría que "añadir el include" como indica el tutorial, si no "quitar el # comentario" del include, para que sea insertado donde FTPd lo necesita tomar. Caso contrario dará un error como el que le describí.

Espero que si a alguien mas le sucedió esto, pueda configurarlo.

Agradecido por compartir tus conocimientos, un saludo desde La Rioja, Argentina.
Responder
Raúl Prieto Fernández
# Raúl Prieto Fernández 06-09-2020 15:40
Hola Guillermo Rodriguez:

Me alegra que te sirviese el tutorial. Respecto a la configuración, gracias por comentar tu solución.

Posiblemente en tu caso usaste los ficheros de configuración que vienen por defecto y por eso tenías un Include en otra parte del fichero :) Si no recuerdo mal, yo generé todos los ficheros desde 0 y por eso en mi caso no tuve ese problema.

Saludos y gracias por visitar mi web.
Responder

Escribir un comentario

Código de seguridad
Refescar

¿Necesitas una web para tu negocio?

Yo te la hago!

Si necesitas una Web para tu negocio, atractiva, llamativa y funcional, no lo dudes y contacta conmigo. Me adapto a cualquier requisito para tu negocio.