Cómo Instalar FTP en Debian 9

Cómo Instalar FTP en Debian 9

En este artículo vamos a ver cómo instalar FTP en Debian 9 paso a paso, para tener un servicio de transferencia de ficheros en una red local doméstica, de oficina o incluso a través de Internet. El servicio que vamos a instalar es VSFTPD para Debian. Sigue los pocos pasos de los que consta el tutorial y en unos minutos tendrás tu propio servidor FTP en Debian.

Para seguir este tutorial es recomendable una instalación actualizada de Debian 9, conexión a Internet y poder acceder por consola con un usuario con privilegios de sudo o root.

Cómo Instalar FTP en Debian 9

En la actualidad existen múltiples opciones de servicios FTP que se pueden instalar sobre multitud de sistemas, pero en esta ocasión nos decantamos por uno de ellos que ofrece a la vez seguridad y sencillez de configuración.

Cómo instalar VSFTPD en Debian 9

Vamos a instalar VSFTPD en Debian 9 a través de los repositorios del sistema.

En primer lugar actualizaremos el sistema e instalamos el paquete vsftpd con apt:

~$ sudo apt update && apt -y install vsftpd

Se descargará el paquete y sus dependencias (si las tuviera). El servidor FTP queda activado para arrancar con cada inicio del sistema, y también funcionando ya, listo para recibir conexiones.

Hasta aquí todo fácil. Pero no sabemos cómo está configurado el servicio por defecto. Enseguida vamos a comprobar cómo se comporta nuestro nuevo servidor FTP VSFTPD.

Cómo instalar un cliente FTP en Debian 9

Si estás trabajando en local y quieres probar el servidor FTP con un cliente, en unos instantes puedes descargar un cliente de consola. Basta con instalar el paquete ftp mediante apt:

~$ sudo apt -y install ftp

Una vez instalado, el comando en el sistema es ftp:

~$ ftp
ftp>

Cómo comprobar el funcionamiento de VSFTPD

En primer lugar vamos a comprobar que, efectivamente, el servicio ha iniciado tras la instalación mediante el comando systemctl:

~$ systemctl status vsftpd
● vsftpd.service - vsftpd FTP server
   Loaded: loaded (/lib/systemd/system/vsftpd.service; enabled; vendor preset: e
   Active: active (running) since Wed 2018-12-12 17:24:11 CET; 3min 39s ago
 Main PID: 972 (vsftpd)
   CGroup: /system.slice/vsftpd.service
           └─972 /usr/sbin/vsftpd /etc/vsftpd.conf
lines 1-6/6 (END)

Pero como muchos somos más de «ver para creer», vamos a probarlo. Abre tu navegador favorito y conecta mediante dirección IP, nombre de máquina o dominio (si tienes alguno configurado) que apunte a la máquina que ofrece el servicio. Si abres el navegador en la misma máquina, entonces la dirección puede ser ftp://127.0.0.1 ó ftp://localhost. En mi caso, accedo desde otra máquina:

como instalar ftp en debian 9
Probando VSFTD en Debian 9

 

Al establecer la conexión aparece un diálogo solicitándonos usuario y contraseña. Si alguna vez has accedido a algún servicio FTP público, estarás familiarizado con el funcionamiento de estos servidores. El primer impulso es introducir el usuario anonymous y cualquier otra cosa como contraseña, normalmente una dirección de correo electrónico. Si haces la prueba comprobarás que no es posible el acceso, volviendo a solicitar el navegador unas credenciales de identificación.

Sin embargo, si probamos a acceder con nuestro usuario y contraseña en el sistema Debian, en mi caso es chacho, sí accederemos a nuestro directorio personal.

como configurar vsftpd en debian 9
Conectando a VSFTPD mediante usuario y contraseña

 

Bueno, ya sabemos dos cosas:

  • La configuración por defecto no permite acceso anónimo.
  • Se permite la conexión a usuarios del sistema.

Pero hay algo que no podemos comprobar con un simple navegador. Accediendo desde un cliente gráfico o de consola descubrimos que nos podemos mover por todo el sistema:

como configurar ftp en debian 9
El usuario se puede mover libremente por el sistema de archivos

 

En la imagen anterior vemos que inicialmente accedemos a nuestra carpeta personal (/home/chacho/), pero mediante los comandos habituales podemos movernos por todo el sistema de archivos (en el ejemplo hemos entrado a /etc/apache2/), pudiendo descargar e incluso modificar archivos sensibles del sistema. Al menos, a mí no me interesa ese comportamiento.

Cómo configurar VSFTPD en Debian 9

Configurar VSFTD en Debian 9 es muy sencillo. La configuración principal del servidor VSFTPD se encuentra en el archivo /etc/vsftpd.conf, que podemos revisar con nuestro editor de texto favorito (con permisos de sudo, si queremos hacer cambios).

Cada vez que hagamos cambios en vsftpd.conf será necesario recargar la configuración del servidor VSFTPD para que hagan efecto. Recargaremos la configuración con el comando systemctl:

$ sudo systemctl reload vsftpd

Acceso anónimo en VSFTPD

Ya hemos visto que, por defecto, el acceso anónimo al servidor FTP en Debian 9 no está permitido. Pero tal vez te pueda interesar configurarlo por cualquier motivo. Es muy sencillo, basta con editar /etc/vsftpd.conf y localizar la directiva anonymous_enable:

[...]
#
# Allow anonymous FTP? (Disabled by default).
anonymous_enable=NO
[...]

Como se puede ver, la directiva que se encarga de permitir el acceso anónimo está configurada con un valor de NO. Si queremos permitir el acceso anónimo, deberíamos cambiar este valor a YES.

anonymous_enable=YES

Directorio de archivos de acceso anónimo

Si quieres ofrecer archivos a través del servicio FTP debes colocarlos en la carpeta por defecto, que para VSFTPD en Debian es /srv/ftp/. Esa carpeta en principio es propiedad de root, por lo que tendrás que tener permisos para copiar los archivos que quieras poner a disposición de los usuarios anónimos.

Para este ejemplo pondré un archivo de texto vacío:

~$ sudo touch /srv/ftp/bienvenido.txt

Para que los cambios tengan efecto recargaremos la configuración del sevidor FTP.

Y ya tendremos acceso anónimo sin contraseña:

 como configurar vsftpd en debian 9
Acceso anónimo sin contraseña al servidor VSFTPD

 

No permitir el acceso a usuarios del sistema

Vimos que los usuarios del sistema pueden acceder, inicialmente, a su directorio personal. Esto lo permite la diretiva local_enable del archivo de configuración vsftpd.conf:

[...]
#
# Uncomment this to allow local users to log in.
local_enable=YES
[...]

Si directamente deseas denegar el acceso a los usuarios del sistema, basta con cambiar el valor asignado a NO y recargar VSFTPD.

configurar ftp en debian 9
Acceso denegado a usuarios del sistema

 

Ahora, al intentar acceder al servicio VSFTPD como usuario del sistema recibimos un mensaje 530 This FTP server is anonymous only, indicándonos que este servidor FTP solamente permite acceso anónimo.

Acceso restringido al directorio personal

En el caso de que quieras permitir el acceso a usuarios del sistema, pero que no puedan salir más allá de sus directorios y archivos personales, además de permitir el acceso local debemos configurar la directiva chroot_local_user:

[...]
#
# You may restrict local users to their home directories.  See the FAQ for
# the possible risks in this before using chroot_local_user or
# chroot_list_enable below.
#chroot_local_user=YES
[...]

Por defecto viene desactivada mediante comentarios. Si queremos tener acceso «enjaulado» de los usuarios de nuestro sistema, tendremos que cambiar el valor a YES.

Normalmente los directorios personales de usuario tienen permisos de lectura/escritura para ese usuario, por lo que realizar un chroot o enjaulado no es posible por defecto. Si intentáramos acceder con esta configuración probablemente obtendríamos el mensaje de error 500 OOPS: vsftpd: refusing to run with writable root inside chroot().

Para evitarlo hay que añadir una directiva allow_writeable_chroot que habilite en enjaulado en directorios de usuario escribibles. La configuración quedaría así:

[...]

local_enable=YES

[...]

chroot_local_user=YES
allow_writeable_chroot=YES

[...]

Tras recargar o reniciar VSFTPD nuestros usuarios del sistema pueden acceder a sus carpetas personales, sin poder acceder a otras partes del sistema de archivos:

configurar vsftpd en debian 9

Además tendrán acceso de lectura y escritura, es decir, podrán cargar y descargar contenido.

Seguridad SSL con VSFTPD en Debian

Podemos configurar nuestro servidor FTP con cifrado SSL para los usuarios del sistema. Buscaremos la sección pertinente en vsftpd.conf:

[...]

#rsa_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
#rsa_private_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
ssl_enable=NO

[...]

A simple vista apreciamos que la directiva ssl_enable tiene un valor NO, que debemos cambiar a YES. Las dos líneas superiores indican la ubicación de los certificados que se generan automáticamente durante la instalación de Debian, y están firmados para el nombre y dominio de máquina introducidos durante esa instalación (en el ejemplo de este tutorial, debian9.local).

Se supone que ssl-cert-snakeoil.pem y ssl-cert-snakeoil.key existen y que vamos a conectar a nuestro servidor FTP a través del nombre de máquina FQDN que establecimos en el momento de la instalación del sistema. Si tienes tus propios certificados tendrás que especificar sus ubicaciones.

Hacemos los cambios necesarios en vsftpd.conf:

[...]

rsa_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
rsa_private_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
ssl_enable=YES

[...]

Observa que también hemos descomentado las líneas que cargan el certificado SSL.

Ahora no basta con recargar la configuración de VSFTPD, es necesario reiniciar el servicio:

~$ sudo systemctl restart vsftpd

Para comprobar la configuración usaremos un cliente gráfico como Filezilla. Al configurar una conexión especificamos servidor, puerto, usuario, contraseña y en Cifrado elegimos «Use explicit FTP over TLS if available«. En cualquier otro cliente, elige la opción TLS:

configurar ssl en vsftpd debian
Configuración de una conexión FTP con cifrado TLS

 

Al realizar la conexión por primera vez (o si nunca hemos marcado la opción de confiar en el certificado para las futuras conexiones) aparecerá un aviso con toda la información del certificado:

como configurar ssl ftp en debian 9
Detalles del certificado SSL del servidor FTP

 

Vemos fechas de creación y expiración del certificado, datos del dueño del certificado y dominio (máquina) para el que fue creado. Aceptando entraremos en la pantalla de trabajo habitual del cliente de FTP, pero trabajaremos con conexión cifrada.

Si accediéramos con cualquier dominio distinto pero que apuntara al mismo servidor (misma dirección IP) la pantalla anterior nos advertiría que el certificado no corresponde al dominio con el que se conecta, pero aceptando se establece la conexión igualmente.

Conclusión

Ahora que ya sabes cómo instalar FTP en Debian 9 estás en condiciones de montar tu propio servicio de descarga de ficheros ya sea de forma local o a través de Internet. Sólo tendrás que decidir qué características deseas tener y cuáles no, ya que puedes permitir sólo acceso anónimo, sólo acceso a usuarios, o acceso anónimo y a usuarios.

Si te ha surgido alguna duda o pregunta, has detectado algún error, crees que falta algo, o quieres sugerir algún tema para próximos artículos, déjame un comentario.

Y si has conseguido seguir el tutorial, montar tu nuevo servidor FTP en Debian 9, y estás tan contento que no sabes cómo agradecérmelo… ¡siempre puedes invitarme a un café!

 

1 estrella2 estrellas3 estrellas4 estrellas5 estrellas (3 votos, promedio: 5,00 de 5)
Cargando…

Deja un comentario

Cerrar menú

Este sitio web utiliza cookies para que usted tenga la mejor experiencia de usuario. Si continúa navegando está dando su consentimiento para la aceptación de las mencionadas cookies y la aceptación de nuestra política de cookies, pinche el enlace para mayor información

ACEPTAR
Aviso de cookies