jueves, 1 de julio de 2010

Uso de certificados con ProFTPD , TLS

Uso de certificados con ProFTPD, TLS
El protocolo FTP es bastante inseguro debido a que tanto las contraseñas como los datos se transfieren como texto plano, por lo que cualquier sniffer será capaz de mostrar los datos capturados en texto legible. Si empleamos TLS (Transport Layer Security -Seguridad de la Capa de Transporte ), protolo sucesor del SSL (Protocolo de capa de Conexión Segura) las comunicaciones se harán encriptadas, con lo que serán mas seguras.

1.- Instalación de OpenSSL

En primer lugar y partiendo de la base de que ya hemos instalado proftpd en el apartado anterior, tenemos que instalar el paquete openssl para la generación de los certificados:
apt-get install openssl.


Editamos el fichero /etc/proftpd/proftpd.conf y nos aseguramos de que la directiva IdentLookups tenga el valor “off”.

2.- Creación del certificado SSL para TLS

Para emplear TLS debemos crear un certificado TLS, podemos seguir para ello las instrucciones del fichero /etc/proftpd/tls.conf aunque prestando atención, ya que la sección de los permisos de los ficheros es errónea. En definitiva, en primer lugar, creamos el certificado:
openssl req -x509 -newkey rsa:1024 -keyout /etc/ssl/private/proftpd.key -out /etc/ssl/certs/proftpd.crt -nodes -days 365
Nos saldrá un asistente preguntándonos una serie de datos:
Country Name (2 letter code) [AU]: (Código del país) "ES"
State or Province Name (full name) [Some-State]: (Provincia) Ourense
Locality Name (eg, city) []: <-- Enter your City.
Organization Name (eg, company) [Internet Widgits Pty Ltd]:(Nombre de la organización)FTP mczones
Organizational Unit Name (eg, section) []: (Sección de la empresa, por ejemplo) FTP
Common Name (eg, YOUR name) []: (Introducimos Fully Qualified Domain Name del sistema, y con el que después nos conectaremos) ftp.mczones.es
Email Address []: (dirección de email) root@mczones.es

Tal y cómo se puede ver en la siguiente imagen:image
Una vez creado el fichero proftpd.key (la clave privada) debe ser sólo legible por el usuario root, el otro fichero puede ser leído por cualquiera:
chmod 0600 /etc/ssl/private/proftpd.key
chmod 0640 /etc/ssl/certs/proftpd.crt

3.- Configuración de ProFTPD.

Para configurar proFTPD para que use certificados y TLS deberemos hacer los siguientes cambios:

  • Editamos el fichero /etc/proftpd/proftpd.conf -fichero de configuración de proftpd- y descomentamos la línea Include /etc/proftpd/tls.conf
      # Alternative authentication frameworks Include /etc/proftpd/tls.conf

  • Editamos el fichero /etc/proftpd/tls.conf y podemos copiar las siguientes líneas
<IfModule mod_tls.c>
TLSEngine on
#
# Configuramos el fichero que se empleará para registrar los logs
TLSLog /var/log/proftpd/tls.log
TLSProtocol SSLv23
TLSRSACertificateFile /etc/ssl/certs/proftpd.crt
TLSRSACertificateKeyFile /etc/ssl/private/proftpd.key
#
# Evitamos el uso de un certificado CA
TLSOptions NoCertRequest
TLSVerifyClient off
#
# Obligamos a que los clientes que se quieran conectar con nuestro servidor
# empleen TLS y no aceptamos conexiones sin encriptar
TLSRequired on
</IfModule>
Tras realizar los cambios reiniciamos el servidor proftpd:
/etc/init.d/proftpd restart
A partir de ese momento podemos conectarnos, con cualquier cliente, al servidor FTP empleando TLS -obligatorio si hemos empleado TLSRequired on-.
En caso de tener problemas con TLS podemos consultar el fichero de logs /var/log/proftpd/tls.log.

4.- Configurando Filezilla para el uso de TLS.

Para configurar FTP para el uso de TLS, necesitamos un cliente FTP que soporte TLS como FileZilla. Tengo que advertir que la versión 3.1.2 de Filezilla y la 3.3.0 que he probado tienen un problema de compatibilidad con el servidor ProFTPD relativo a la gestión de los certificados con TLS que hace cada uno de ellos -y que está bastante documentado- , como se puede ver en la siguiente imagen:image
Al final he optado por descargar e instalar una versión anterior de este programa (la 3.0.0, disponible en http://ftp.debian.org/debian/pool/main/f/filezilla ) que funciona perfectamente tras configurarla del siguiente modo:

  1. Pulsamos el botón “Abrir el Administrador de Sitios”, tras lo cual nos aparecerá el cuadro de diálogo desde dónde introduciremos los datos para nuestra conexión:image

  2. En el cuadro de texto “Host” introducimos el “Common Name” -usando FDQN- que hemos introducido en la creación del certificado, en mi caso ftp.mczones.es. Para realizar la práctica podemos crear una entrada en la zona mczones.es que sea un alias llamado ftp que apunte al servidor, o directamente añadir una línea en el fichero /etc/hosts del cliente, en este último caso, por ejemplo, sería añadir la línea:
      192.168.2.3 ftp.mzcones.es
En la lista “Tipo de Servidor” seleccionamos “FTPES – FTP over explicit TLS/SSL” e introducimos el nombre de nuestro usuario y ,si seleccionamos “normal”, la contraseña.

  1. Ahora, ya podemos conectarnos al servidor, la primera vez que lo hagamos nos saltará una ventana advirtiéndonos de que debemos aceptar el certificado:image

  2. Si todo va bien deberíamos estar conectados al servidor, podemos consultar también el fichero /var/log/proftpd/tls.log dónde deberíamos ver las conexiones realizadas:imageimage

5 Bibliografía

Proftpd: Http://www.proftpd.org
Certificados con proftpd :http://www.howtoforge.com/setting-up-proftpd-tls-on-ubuntu-8.10

1 comentario:

Víctor dijo...

Muy bien explicado y hace falta para lo rápido que vas en algunas partes algunas partes