El servicio FTP es bastante inseguro, sobre todo si lo instalamos en modo «plano», es decir sin encriptar. De este modo, estamos pasando por internet las credenciales (usuario y password), en plano, y por lo tanto cualquier «hacker», nos las podría robar.
Para evitarlo, vamos a dotar a nuestro servidor basado en pureftp de la tecnologia TLS de modo que las credenciales, y los datos, se transmitan en modo encriptado.
En esta entrada, suponemos que tenemos el pureftp ya instalado en nuestro sistema Debian o derivado.
Instalar el OpenSSL
El primer paso seria instalar el openssl(si no lo hemos hecho ya), asi que simplemente habria que escribir desde el terminal
apt-get install openssl
Una vez instalado el openssl, deberemos configurar nuestro servidor pureftp, para que acepte conexiones encriptadas.
Configurar servidor pureftp
Aquí tenemos dos opciones:
Aceptar FTP sin encriptar(plano) y con TLS. De modo que aceptariamos conexiones seguras e inseguras a la vez. Para ello pondriamos en el terminal
echo 1 > /etc/pure-ftpd/conf/TLS
O, la opción mas segura que nuestro server solo acepte conexiones encriptadas.
echo 2 > /etc/pure-ftpd/conf/TLS
Creación del certificado
Para poder establecer las comunicaciones de manera encriptada, necesitaremos un certificado con el cifrar las transmisiones, el modo mas sencillo y economico, es crearnos nuestro propio certificado, ya que es rápido y gratuito.
Primero crearemos el directorio donde lo vamos a alojar(podemos omitir este paso si ya está creado)
mkdir -p /etc/ssl/private/
Ahora ya podemos crear nuestro certificado con la siguiente instrucción
openssl req -x509 -nodes -days 730 -newkey rsa:2048 -keyout /etc/ssl/private/pure-ftpd.pem -out /etc/ssl/private/pure-ftpd.pem
Con la instrucción anterior hemos creado un certificado en el directorio /etc/ssl/private con el nombre pure-ftpd.pem con validez para 730 dias (2 años). Al ejecutar la instrucción nos hara una serie de preguntas como veremos en la imagen de mas abajo.
Por último, como podreis ver al final de la imagen anterior, solo nos quedara, dar permisos de lectura al propietario con la instrucción
chmod 600 /etc/ssl/private/pure-fptd.pem
Y reiniciar el servicio del FTP para que coja los cambios
/etc/init.d/pure-ftpd restart
Como podreis comprobar si os conectais a vuestro server, ahora las conexiones ya son encriptadas.
Renovación del certificado
Me han preguntado muchas veces que hacer cuando el certificado ha caducado, puesto que cuando esto ocurre, y nos conectamos al servidor FTP, se muestra un mensaje avisando de que el certificado ha caducado. La conexion seguira encriptandose, pero hace muy mal efecto frente a los demás.
La solución es muy simple, solo habria que crear un nuevo certificado «machacando» el anterior. De modo que las instrucciones serian las siguientes.
openssl req -x509 -nodes -days 730 -newkey rsa:2048 -keyout /etc/ssl/private/pure-ftpd.pem -out /etc/ssl/private/pure-ftpd.pem
chmod 600 /etc/ssl/private/pure-fptd.pem
/etc/init.d/pure-ftpd restart
Con las tres instrucciones, estamos creando un certificado nuevo, nos aseguramos que es de lectura para el autor y reiniciamos el servicio para que coja el nuevo certificado.
Espero que os haya servido de ayuda. Por favor, dejad comentarios de lo que os ha parecido el artículo.