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.
![](https://www.lacajadeinternet.es/wp-content/uploads/2020/04/pureftpd.png)
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.
![](https://www.lacajadeinternet.es/wp-content/uploads/2020/04/pureftpd2-1024x435.png)
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.