InicioLinuxProFTPD: configurando un Servidor FTP con TLS

ProFTPD: configurando un Servidor FTP con TLS

Linux12/7/2011
Trabajar con Servidores Web requiere generalmente disponer de una serie de herramientas con que interactuar con los Boxes y en este capítulo vamos a dedicarnos al viejo y buen FTP (File Transfer Protocol), imprescindible a la hora de transferir o descargar rapidamente archivos desde nuestros Servers.
Linux ofrece muchas alternativas a la hora de instalar un ftp-server y hemos optado en este caso por trabajar con ProFTPD debido a que es un servidor ftp robusto y configurarlo con medidas extra de seguridad (TLS) es relativamente sencillo.
La necesidad de securizar nuestras transferencias FTP con un protocolo como TLS (Transport Security Layer) reside en que al operar con FTP estamos moviendo a través de internet archivos de texto plano que podrían ser facilmente legibles en caso de que, por ejemplo,  trabajemos en una red en que corre un Sniffer . La tarea de TLS será la de garantizar que los datos de conexión al servidor FTP y los paquetes que subamos o bajemos sean encriptados de modo tal que, ante un sniffer u otra herramienta que intercepte nuestra tráfico no corramos el riesgo de exponer información valiosa.

Instalando ProFTPD

Comenzaremos por instalar y configurar este servidor FTP. Al finalizar esta sección tendremos un servidor FTP funcionando sin ninguna clase de securización.
Trabajaremos sobre Debian Squeeze y asumimos que hay un Lampp instalado y corriendo (aunque realmente no lo precisaremos) al que deseamos agregarle un servidor FTP con el que cargar contenidos al directorio en que se encuentra nuestro sitio.
carp@server1:~$ su root
 Ingresamos clave de root 
root@nodo0:/# apt-get install proftpd openssl

La instalación preguntará si deseamos correr el server FTP como Standalone (Independiente), o desde inetd. Elegimos Standalone.
Una vez terminado el proceso de instalación ya tenemos nuestro servidor ftp instalado y funcionando. Intenta una conexión usando  una cuenta no root y conseguirás acceso al home del usuario empleado. Como verás puedes subir niveles hasta / y acceder a archivos de configuración en /etc: el usuario puede explorar todo el servidor y esto es algo que -por razones evidentes- no queremos.
Necesitamos poner un jail para que cuando el user carp se conecte, ingrese al listado de /home/carp sin posibilidades de subir de nivel. Esto es muy sencillo de realizar modificando el valor de DefaultRoot en el archivo de configuración de proftpd (/etc/proftpd/proftpd.conf).
root@nodo0:/# /etc/init.d/proftpd stop
Stopping ftp server: proftpd.
root@nodo0:/# pico /etc/init.d/proftpd.conf
Buscamos en el fichero de configuración la línea comentada:
# DefaultRoot ~
La descomentamos y modificamos de modo que quede:
DefaultRoot /var/www carp
Guardamos, salimos e Iniciamos ProFTPD nuevamente:
root@nodo0:/# /etc/init.d/proftpd start

Basicamente hemos descomentado el parámetro que nos permite restringir el acceso vía FTP proporcionando el path al que nuestro user (carp) debe acceder al conectarse seguido del nombre de usuario.
Si reiniciamos proftpd e intentamos conectarnos nuevamente con el user carp FTP listará los contenidos de /var/www y no habrá posibilidad de subir niveles: /www es la rama más alta en el árbol de este usuario.

Securizando nuestro Servidor FTP con TLS

Hasta aquí disponemos de un servidor 100% funcional. Ahora nos encargaremos de securizarlo utilizando TLS.
Si bien ProFTPD viene con soporte para TLS, tendremos que crear un certificado SSL para poder habilitar esta funcionalidad. Dicho esto, vamos a crear un directorio ssl dentro de /etc/proftpd en que guardaremos nuestro Certificado y Key SSL.
root@nodo0:/# mkdir /etc/proftpd/ssl
root@nodo0:/# openssl req -new -x509 -days 365 -nodes -out /etc/proftpd/ssl/proftpd.cert.pem -keyout /etc/proftpd/ssl/proftpd.key.pem   

Se nos presenta un aviso y un formulario en que debemos proporcionar datos básicos:

Generating a 1024 bit RSA private key
.........++++++
........................................++++++
writing new private key to '/etc/proftpd/ssl/proftpd.key.pem'
-----
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]:AR
State or Province Name (full name) [Some-State]:Buenos Aires
Locality Name (eg, city) []:Merlo
Organization Name (eg, company) [Internet Widgits Pty Ltd]:DDM
Organizational Unit Name (eg, section) []:DDM
Common Name (eg, YOUR name) []:Daniel
Email Address []:[email protected]   

root@nodo0:/#

No entraremos en detalles acerca de cómo crear Certificados SSL con Openssl , pero sí recomendamos -a quienes quieran conocer un poco más acerca de la creación de certificados self-signed- la lectura de este How To en el sitio de Openssl .
Habiendo creado nuestro certificado volvemos sobre el archivo de configuración de ProFTPD para habilitar la funcionalidad de TLS.
root@nodo0:/# pico /etc/init.d/proftpd.conf
Buscamos y descomentamos quitando el #:
Include /etc/proftpd/tls.conf
Guardamos y salimos.

A continuación y finalizando, debemos configurar el fichero /etc/proftpd/tls.conf que viene con el paquete proftpd. Debido a que este fichero contiene unas cuantas líneas nos resultará más sencillo eliminar su contenido y reescribir los parametros de configuración para que TLS funcione con nuestro certificado y clave. Manos a la obra:
root@nodo0:/# cat /dev/null > /etc/proftpd/tls.conf
root@nodo0:/# pico /etc/proftpd/tls.conf
Nos encontraremos con el fichero en blanco y allí escribimos:

<IfModule mod_tls.c>
TLSEngine on
TLSLog /var/log/proftpd/tls.log
TLSProtocol SSLv23
TLSOptions NoCertRequest
TLSRSACertificateFile /etc/proftpd/ssl/proftpd.cert.pem
TLSRSACertificateKeyFile /etc/proftpd/ssl/proftpd.key.pem
TLSVerifyClient off
TLSRequired on
</IfModule> 

Guardamos, salimos y reiniciamos proftpdf
root@nodo0:/# /etc/init.d/proftpd restart
Stopping ftp server: proftpd.
Starting ftp server: proftpd.
root@nodo0:/#

Y eso es todo! Nuestro Servidor FTP cuenta ahora con la seguridad de transacciones protegidas por un protocolo de encriptación basado en SSL.

Conectando con mi FTP Client

Para terminar, hay que aclarar que el hecho de haber implementado TLS sobre FTP implicará realizar un tipo de conexión desde el cliente FTP que utilicemos distinta a la que acostumbramos usar para acceder a una cuenta de FTP sin ninguna clase de securización.
La mayoría de los clientes FTP poseen la opción de conectar a FTP con TLS (Este tipo de conexión suele llamarse FTPS también). En el caso de Fillezilla, basta con ingresar los datos como de costumbre con la salvedad de que en cifrado debe elegirse "Requiere FTP Explicito Sobre TLS" en lugar del valor por defecto "Utilizar FTP simple".
En caso de no encontrar la opción para realizar conexiones TLS, revisen la documentación del cliente para asegurarse de que éste posee soporte (y si no lo tiene consideren seriamente utilizar otro cliente).

Este Post fue publicado originalmente en mi Blog:
Datos archivados del Taringa! original
10puntos
1,132visitas
0comentarios
Actividad nueva en Posteamelo
0puntos
2visitas
0comentarios
Dar puntos:

Dejá tu comentario

0/2000

Autor del Post

c
carpclash🇦🇷
Usuario
Puntos0
Posts10
Ver perfil →
PosteameloArchivo Histórico de Taringa! (2004-2017). Preservando la inteligencia colectiva de la internet hispanohablante.

CONTACTO

18 de Septiembre 455, Casilla 52

Chillán, Región de Ñuble, Chile

Solo correo postal

© 2026 Posteamelo.com. No afiliado con Taringa! ni sus sucesores.

Contenido preservado con fines históricos y culturales.