Que es y como instalar un servicio FTP en Ubuntu

Una de las grandes ventajas de Ubuntu, y en general de cualquier distribución Linux, es que puedes montar de forma muy sencilla diferentes servicios, y entre los servicios mas interesantes que podemos disfrutar en nuestra máquinas es un servicio ftp.

Para aquellos mas legos en Linux, y en el mundo de la informática en general, indicar que un servidor es un dispositivo que provee servicios a otros equipos, que se conocen como clientes.

Y ¿que es un servicio? Pues un servicio o demonio, es una aplicación o programa que se ejecuta en segundo plano, y cuya función mas habitual es la de ofrecer servicios a otros programas.

En este artículo, veremos como instalar de forma muy sencilla un servicio FTP. FTP es un protocolo, en particular un protocolo de transferencia de archivos. Es mas, se trata del protocolo de transferencia de archivos mas utilizado en Internet.

Que es y como instalar un servicio FTP en Ubuntu. Portada.

Instalación del servicio FTP con vsftpd

Hemos de decir primero, que el servidor vsftpd, se distribuye bajo licencia libre GNU GPL y puede descargarse de la página oficial de vsftpd.

Vsftpd (Very Secure FTP Daemon), es un servicio FTP que permite implementar servicios de archivos mediante protocolo FTP, caracterizándose principalmente porque se trata de un sistema muy seguro, a la vez que muy sencillo de configurar.

Puedes instalar el paquete correspondiente, al servidor vsftpd, en un ordenador con Ubuntu, desde el terminal, con el siguiente comando:

apt-get install vsftpd

Después de haber instalado el servicio FTP, éste se queda iniciado y se iniciará automáticamente cada vez que arranque el sistema.

El fichero de configuración es muy extenso, por que está autodocumentado con muchos comentarios, para ver el documento, desde el terminal, ponemos el siguiente comando:

cat /etc/vsftpd.conf

En este caso, para quitarse paja de encima, podemos ver las opciones activas usando grep, pidiendo las lineas que no comiencen por #:

cat /etc/vsftpd.conf | grep -v “^#”

El resultado, es este:

listen=YES
anonymous_enable=NO
local_enable=YES
dirmessage_enable=YES
use_localtime=YES
xferlog_enable=YES
connect_from_port_20=YES
secure_chroot_dir=/var/run/vsftpd/empty
pam_service_name=vsftpd
rsa_cert_file=/etc/ssl/private/vsftpd.pem

En la configuración inicial, no se permite el acceso anónimo y si el acceso mediante las cuentas de usuarios locales del sistema. Los demás parámetros, los describiremos más adelante.

Como añadir usuarios

Para poder probar las conexiones, a parte de nuestro usuario personal, vamos a crear otro:

useradd -d /home/prueba -m -s /bin/bash prueba

Y le proporcionamos una clave

passwd prueba

El cliente gráfico Filezilla

Por otro lado, además del servicio FTP, es necesario para los otros usuarios, instalar un cliente, que permita acceder al servicio. El software Filezilla Client, es un cliente gráfico FTP. Es un software multiplataforma desarrollado por Filezilla-Project, de código abierto y licencia GPL.

Sitio oficial de descarga de Filezilla Client

Para instalar Filezilla Client en GNU/Linux Ubuntu es más recomendable hacerlo a través de la instalación de un paquete debian, ya que la distribución que se puede descargar del sitio oficial es el código fuente del software y necesita compilarse una vez descargado.

El paquete de instalación Filezilla Client para Ubuntu, se llama filezilla. Puedes instalarlo mediante comando o desde el centro de software de ubuntu. Para instalarlo desde el terminal solo tienes que ejecutar el comando,

sudo apt install filezilla

Inicio y parada del servicio FTP

El servicio se gestiona mediante el script /etc/init.d/vsftpd. Se debe de ejecutar como superusuario o utilizando el comando sudo para ejecutarlos. En la administración del servicio podemos iniciarlo, detenerlo, reiniciarlo o comprobar su estado.

Administración del servicio vsftpd con script:

Acción Comando
/etc/init.d/vsftpd
status
Comprobar
el estado del servicio
/etc/init.d/vsftpd
stop
Detener
el servicio
/etc/init.d/vsftpd
start
Iniciar
el servicio
/etc/init.d/vsftpd
restart
Reiniciar
el servicio

También podemos usar el comando service, para administrar el servicio sabiendo que el nombre con el que se reconoce al servicio de Ubuntu es vsftpd.

Administración del servicio vsftpd con el comando service:

Acción Comando
Service vsftp status Comprobar el estado del servicio
Service vstfpd stop Detener
el servicio
Service vsftpd start Iniciar
el servicio
Service vsftpd restart Reiniciar
el servicio

Cuando está iniciado vsftpd, el servicio debe de estar escuchando en el puerto 21. Puedes comprobarlo con el comando netstat -ltn que hay un servicio en ese puerto 21.

Otros archivos

El archivo /etc/ftpusers contiene una lista de los usuarios del sistema a los que se deniega el acceso mediante ftp. Entre esos usuarios, se deniega el acceso al usuario root como medida de seguridad.

El archivo /var/log/vsftpd.log registra la información sobre las conexiones ftp establecidas. Es importante consultar este archivo para resolver cualquier incidencia producida durante las conexiones o para hacer una evaluación del comportamiento del servicio.

Enjaular Usuarios

Si los usuarios locales del servidor se conectan remotamente mediante un cliente ftp al servicio ftp podrán acceder a sus carpetas personales y además al resto del sistema de archivos. Esto es peligroso y un fallo de seguridad.

Vamos a explicar, como limitarlos a su carpeta /home/usuario. Este proceso se le llama chroot (enjaular).

Antes de nada vamos a sacar una copia de seguridad del fichero de configuración:

mv /etc/vsftpd.conf /etc/vsftpd.conf.backup

Vamos a dejar limpio el archivo:

cat /etc/vsftpd.conf.backup | grep -v “^#” > /etc/vsftpd.conf

Añadimos al siguiente configuración al final del fichero /etc/vsftpd.conf:

chroot_local_user=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd.chroot_list

A continuación creamos el fichero /etc/vsftpd.chroot_list

nano /etc/vsftpd.chroot_list

Y ponemos nuestro usuario para evitar ser enjaulados.

Por último, reiniciamos el servicio:

restart vsftpd

Al final de este punto, el fichero de configuración debería de estar así:

listen=YES
anonymous_enable=YES
local_enable=YES
dirmessage_enable=YES
use_localtime=YES
xferlog_enable=YES
connect_from_port_20=YES
secure_chroot_dir=/var/run/vsftpd/empty
pam_service_name=vsftpd
rsa_cert_file=/etc/ssl/private/vsftpd.pem
chroot_local_user=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd.chroot_list

Usuarios anónimos

Si se realiza una conexión anónima, se tiene acceso a la carpeta /srv/ftp que será compartida para todos los accesos anónimos.

Se tiene que crear un fichero en esta carpeta:

touch /srv/ftp/hola.txt

Las conexiones anónimas se podrán hacer con los nombres del usuario anonymous y ftp (sin ninguna contraseña).

Editar el fichero de configuración para permitir el acceso a usuarios anónimos:

anonymous_enable=YES

Reiniciar el servicio:

restart vsftpd

Conclusión

Con estos sencillos pasos, tendríamos configurado un servicio ftp en un Ubuntu.

23 comentarios en “Que es y como instalar un servicio FTP en Ubuntu

  1. LI
    Lionel Bino hace 8 años

    Este es sin dudas un excelente truco:
    cat /etc/vsftpd.conf | grep -v “^#”

    Es tan sencillo y útil! ¿Como no se me ocurrió a mi?

    1. LL
      Lluís Espert Cuquerella hace 8 años

      Ni idea Lionel, pero ya te digo, este truquete es muy útil!!!
      Pues eso mismo lo redireccionas a otro archivo y tienes el archivo de configuración limpio de paja, con lo que normalmente se trabaja y así es menos engorroso los comentarios y demás!!
      Espero que te haya gustado el artículo!!!

        1. LL
          Lluís Espert Cuquerella hace 8 años

          Me alegro!!!

  2. JU
    juan josé calvo sebastià hace 8 años

    se puede usar cualquier distribucion de ubuntu?

    1. LL
      Lluís Espert Cuquerella hace 8 años

      Se puede usar con cualquier distribución de ubuntu. Otra cosa he de decir, esto lo he echo sobre Ubuntu Server.
      Intento hacer el tutorial por partes, por que eso estaría unido a configurar Apache correctamente, para así, en unos sencillos tutoriales, hacerte tu distribución basada en Debian un servidor ftp y hacerlo tambíen de hosting, asignándole cuotas a cada usuario y comprándote unas simples DNS, que son unos 12€ puedes hacerte una web y almacenarla en tu pc o servidor que te crees.
      Esto también está echo si usas un VPS y le instalas ubuntu server, los pasos a seguir serían los mismos.
      Si necesitas ayuda en algunos de los casos o no te aclaras, siempre puedes contactar conmigo!!!
      Un saludo y gracias por leer el artículo!!!

  3. NE
    Ness Román hace 7 años

    Y cómo configuro el FIleZilla para acceder desde otro ordenador?

    1. LL
      Lluís Espert Cuquerella hace 7 años

      Depende de si accedes de la red local no hay problema, con poner la ip de donde tienes instalado el servicio y el nombre del usuario echo, no deberías de tener complicaciones, otra cosa es si es que quieres acceder desde un pc fuera de tu red local, deberías de configurar apache y añadirle unas dns para que te redirigiera al pc.

      Mira, si tienes dudas al respecto, te dejo mi correo personal y mi usuario de skype, por si quieres preguntar algo mas.

      Skype: lluisespertc
      Email: lluisespertc@gmail.com

      Un saludo y gracias por leer el post!!!

  4. MA
    Mauricio Astorga H. hace 7 años

    una consulta y entrar con el ftp en modo root como deberia ser?

    1. EL
      El atareao hace 7 años

      Igual que si accedes con otro usuario. Indicas dirección del FTP, puerto, nombre de usuario, que en este caso sería ‘root’ y la contraseña de ‘root.
      Saludos.

  5. DA
    Daniel Perez hace 7 años

    Buenas
    Pues yo no consigo conectar con Filezilla, he seguido todos los pasos, pero no consigo conectarme.
    Gracias,

    1. EL
      El atareao hace 7 años

      Hola Daniel,
      ¿Donde instalaste el servidor FTP?
      Un saludo.

      1. DA
        Daniel Perez hace 7 años

        Hola
        En un server Ubuntu 17.04 x64
        El servidor está correctamente instalado, el problema es que cuando intento acceder con Filezilla me dice «Connection timed out after 20 seconds of inactivity» y no conecta.
        Estoy intentando conectar desde un pc fuera de la red local, es decir, a un servidor remoto.
        Gracias,

        1. LE
          Leonidas131 hace 6 años

          Para realizar una conexion desde internet (de manera remota) es necesario tener los puertos mapeados (port forwarding) en tu router investiga como hacerlo con tu router ya que cada uno es diferente el procedimiento

  6. XA
    Xavier Rossich Prades hace 7 años

    Hola

    Muchas gracias por la info y por tu web. Sólo me ha quedado una duda:
    Al introducir el siguiente comando

    cat /etc/vsftpd.conf | grep -v “^#”

    Me sale todo el archivo de configuración, incluyendo las líneas que comienzan con #. Sabes porqué puede ser? Porque la verdad, el comando me ha parecido tremendamente práctico y me da rabia no poder usarlo.
    Gracias

    1. EL
      El atareao hace 7 años

      Esto es porque has copiado y pegado directamente desde esta página. Funciona igual sin comillas,

      cat /etc/vsftpd.conf | grep -v ^#

  7. XA
    Xavier Rossich Prades hace 7 años

    Y otra duda es que en ese mismo archivo de configuración, lo que te sale a ti es la configuración por defecto de vsftp? O la que recomiendas tú? Porqué a mí me salen varios parámetros más, y muchos de ellos cambiados, respecto al tuyo:
    listen=NO
    listen_ipv6=YES
    anonymous_enable=NO
    local_enable=YES
    dirmessage_enable=YES
    use_localtime=YES
    xferlog_enable=YES
    connect_from_port_20=YESsecure_chroot_dir=/var/run/vsftpd/empty
    pam_service_name=vsftpd
    rsa_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
    rsa_private_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
    ssl_enable=NO

    Esto son los parámetros que me vienen por defecto en el archivo vsftpd.conf

    1. EL
      El atareao hace 7 años

      Tienes que modificar los parámetros para que queden igual que aparece.
      Saludos.

  8. FI
    FiERo hace 7 años

    Buenos dias a todos, estoy teniendo problemas para instalar VSFTPD en Ubuntu Zesty 17.04 no logra encontrar el paquete, tengo acceso a internet y todo pero aun asi no localiza el paquete, hay alguna otra forma de conseguir el .deb de este paquete e instalarlo manualmente. Saludos.

    1. EL
      El atareao hace 7 años

      Hola FiERo,
      El problema es que Ubuntu Zesty ya no tiene soporte. Debes actualizar a una versión superior.
      Un saludo.

  9. EM
    Emilio J. Castellanos Cano hace 6 años

    Hola , gracias por la entrada de Blog.
    De momento tengo dos problemas. Voy por prioridades;
    1º. Cuando conecto con un cliente filezilla desde Windows, conecto a la carpeta del usuario creado en vsftpd en un linux ubuntu. Pero no me deja escribir. ¿dónde puedo editar los permisos de lectura y escritura del usuario creado en vsftpd?.

    2º. No consiguo encapsular, se ven las carpetas del perfil del usuario creadas en ubuntu.

  10. IM
    ima mandola hace 6 años

    te amo :3
    te amo :3

  11. PE
    pepito hace 1 año

    hola tengo una duda sigue funcionando para 2023

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *