Servidor FTP (Vsftpd)

En un post anterior instalamos un servidor TFTP, en esta ocasión será FTP (File Transfer Protocol), el cual tiene prácticamente la misma funcionalidad, transferencia de archivos, aunque éste utiliza un conexión TCP por el puerto 20 o 21.

Aunque podemos encontrar más servidores de FTP para linux, desde hace un tiempo yo elegí Vsftpd, es sencillo de configurar y según dicen muy seguro, yo esto último no lo puedo confirmar ya que no he probado otro.

Servidor

En primer lugar instalaremos el servidor vsftpd; desde nuestra consola en Ubuntu, sistema GNU/Linux que yo utilizo, ejecutaremos el siguiente comando:

# aptitude install vsftpd

Una vez realizada la instalación configuraremos dicho servidor. El servidor vsftpd utiliza dos ficheros de configuración, al menos con la configuración que yo voy a realizar.

  • /etc/vsftpd.conf –> fichero de configuración del servidor vsftpd
  • /etc/vsftpd.chroot_list –> En este fichero se ubicarán los usuarios que se enjaulan en su directorio raíz.

1. El fichero /etc/vsftpd.conf

Cuando instalas el servidor vsftpd en Ubuntu, te genera este fichero de configuración con parámetros por defecto. Una posible configuración de este fichero sería la siguiente:

#Example config file /etc/vsftpd.conf

# Para que se ejecute vsftpd en modo independiente. No se puede utilizar en conjunto con listen_ipv6
listen=YES

# No permitimos que se conecten usuarios anónimos.

anonymous_enable=NO

# Permitimos que los usuario locales se puedan conectar.

local_enable=YES

# Permitimos poder hacer modificaciones.

write_enable=YES

# Muestra un mensaje cada vez que un usuario entra en un directorio.
dirmessage_enable=YES

# Vsftpd registra las conexiones y la información de transferencia, por defecto en /var/log/vsftpd.log

xferlog_enable=YES

# Se permite que el servidor vsftpd abra el puerto 20, para ponerse a la escucha de peticiones.

connect_from_port_20=YES

# Mensaje de bienvenida al conectarse mediante un cliente ftp

ftpd_banner=Bienvenidos al ftp de Redes de Area Local.

# Permitimos a los usuarios locales que puedan salir de su directorio.

chroot_local_user=NO

# Con esta opción los usuarios locales que se encuentren en el fichero indicado por chroot_list_file estarán enjaulados en su directorio.

chroot_list_enable=YES

# Especifica el fichero que contiene los usuarios a enjaular.

chroot_list_file=/etc/vsftpd.chroot_list

# Esta opcion especifica el nombre de un directorio vacio. También el directorio no tiene que tener privilegios para el usuario de ftp. Este es un directorio usado como una jaula segura chroot y aveces no requiere de aceso al sistema de ficheros.

secure_chroot_dir=/var/run/vsftpd

# Especifica el nombre de PAM (Pluggable Authentication Modules) para vsftpd

pam_service_name=vsftpd

# Esta opción especifica la localización del certificado RSA para usar conexiones SSL. Esta opción viene por defecto.

rsa_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem

# Esta opción especifica la localización de la clave privada para las conexiones SSL.

rsa_private_key_file=/etc/ssl/private/ssl-cert-snakeoil.key

Una vez configurado nuestro fichero, ya tendriamos listo nuestro servidor vsftpd. Reiniciamos el servicio y listo, para ello:

# invoke-rc.d vsftpd restart

Ya podría conectarse cualquiera como los usuarios locales, pero vamos a hacer una restricción a uno que vamos a crear.

2. El fichero /etc/vsftpd.chroot_list

El fichero vsftpd.chroot_list va a contener el nombre del usuario que vamos a crear a continuación, para que cualquiera pueda conectarse a ese servidor, pero sólo teniendo acceso a el directorio de ftp.

Creamos el usuario mediante el siguiente comando:

# useradd amigo

Y ahora vamos a añadir este nombre al fichero; lo podemos hacer habriendo el fichero mediante cualquier editor o mediante el siguiente comando:

# echo amigo >> /etc/vsftpd.chroot_list

Y ahora ya podríamos decir que nuestro servidor ftp esta totalmente configurado. Para mas opciones se recomienda ver el man.

Cliente

Para conectarnos a nuestro ftp mediante una consola, únicamente devemos introducir el siguiente comando:

$ ftp <dir_ip_servidor_ftp>

Posteriormente te pedirá usuario y password; y ya tendrás acceso a el servidor que anteriormente hemos configurado.

Referencias:

http://www.esdebian.org/article.php/20060407102022453

http://www.linuxparatodos.net/portal/staticpages/index.php?page=09-como-vsftpd

http://www.redhat.com/docs/manuals/enterprise/RHEL-4-Manual/es/ref-guide/s1-ftp-vsftpd-conf.html

http://www.esdebian.org/staticpages/index.php?page=20050424180613347

~ por revartm en junio 26, 2007.

14 comentarios to “Servidor FTP (Vsftpd)”

  1. Tengo problemas con la autentifacion final en el cliente.
    He realizado todos los pasos. Observar que por defecto no te crea la lista de users del servidor, por si acaso a alguien le surge la duda.

    Aun así, cunado voy a autenticarme, sale que conecta con el servidor,

    jose@eniac:~$ ftp 192.168.0.128
    Connected to 192.168.0.128.
    220 (vsFTPd 2.0.5)
    Name (192.168.0.128:jose): jose
    530 This FTP server is anonymous only.
    Login failed.
    ftp>

    Puede ser porque sea dentro del mismo equipo. Sin embargo, y si lo intento con la localhost, me sale lo mismo. Además le tengo deshabilitado las entradas anónimas y mira el resultado anterior… ¿Alguna sugerencia?

  2. Comprueba que en el /etc/vsftpd.conf donde pone anonymous_enable pones “NO” no vale “No” o “no”. Y ademas comprueba en el /etc/ftpusers que tu usuario “jose” no esté ahi y que estñe el nombre “anonymous”. Por lo menos a mi me funciona😉

  3. Hola, tengo creado el servidor ftp, los usuarios son los del sistema, por ejemplo si entra usuario amigo, y paswd amigo , como podría enjaular a ese usuario, es que el que entra a mi ftp va a /home/amigo pero si retrocede directorio se encuentra en el home y desde ahí me puede ver todo el sistema, me gustaría que entrase solamente a la carpeta amigo y que ahi pueda escribir leer y borrar, pero que no pueda ir a ningún otro directorio.
    salu2

  4. hola, ¿cómo puedo enjaular el direcotorio prueba que se encuentra dentro de home/prueba para que los que se conecten al ftp solo puden leer, escribir y borrar en la carpeta prueba sin ver todo lo demás.

    en el directorio /etc/vsftpd.chroot_list

    puse esto pero no funciona; ya que se puede retroceder a la carpeta home y usmear todo el sistema.
    gracias
    salu2

    # useradd amigo
    # echo amigo

    # useradd /home/prueba
    # echo /home/prueba

    # useradd prueba
    # echo prueba

  5. hola me llamo michael estudio gnu/linux y ya entre a la etapa de servicios es muy interesante y quiero que porfavor me manden a me corre (michael_6aventura@hotmail.com una guia en español completa de como hacer un servidor (dhcp,ftp,ssh) el que lo tenga favor de mandarmelo en español gracias

  6. revard, gracias por tus artículos, a los novatos y no tan novatos nos vienen muy bien. Verás mi pregunta es la siguiente:

    1. Me interesa, cómo configuro un linux server que actue como un router (tal como decías tú) pero que pueda manipular la velocidad de subida (muy importante en mi caso) por cada ip /host??

    2. Me gustaría saber si cabría la posibilidad de conseguir una dirección de msn messenger tuya o de otro messenger que uses, porque me encantaría poder preguntarte cosas live de vez en cuadno si no es demasiado …

    p.s. te dejé mi dirección de correo

    Un saludo cordial
    Andrei

  7. Hola,

    tengo un problema, me he instalado el vsftpd y desde otro ordenador de la misma LAN intento conectarme como anonymous. Dice que la conexion es OK. Pero cuando hago un dir me dice lo siguiente:
    229 Entenring Extended Passive Mode (|||42223|)
    150 Here comes the directory listing
    226 Directory send OK

    y no me dice nada mas ni me enseña los ficheros que hay en el directorio.
    He creado un directorio en
    /home/manel/temp/vsftpd
    y he metido un par de ficheros.

    ah y he puesto secure_chroot_dir=/home/manel/temp/vsftpd

    alguna idea??

  8. prueba con un “ls”….suerte!

  9. – he realiazo un ftp normal no tengo problemas cuando el usuario se loguea por web lo tengo enjaulado

    El problema existe si el usuario lo ingreso por mi consola de linux el problema puede navegar por todo mis carpeta de linux puede ver root el home
    lo que yo quiero hacer dos cosas

    consola de linux
    usuario prueba
    clave prueba
    ls -l
    visualizatodo por consolo el usuario prueba
    ve todo mis directorios de linux
    la primera es cuando el usuario lo ingreso por linux debe estar enjaulado como si estuviera ingresando por web,
    en web no tengo problemas solo cuando lo ingreso por consola de linux alli esta el porblema

    segundo caso
    En mi consola de linux cuando ingreso el usuario prueba y haga un ssh prueba@192.168.1.22
    que me salga un mensaje de error que no puede hacer ssh con el usuario prueba en mi consola de linux
    ya que el usuario prueba es un usuario de linux creado para ingresar a ftp
    ftp prueba@192.168.1.22
    espero que me puedas ayudar doctor

    tercer caso
    sabes com puedo hacer una sycronizacion por linux de un servidor a otro servidor
    espero tu pronta respuesta

    aai_pechejo@yahoo.com.mx

  10. Yo tengo configurado my Linux Centos con un server VSFTPD, el ftp funciona excelentemente. Mi pregunta es: Como cambio el directorio por default para subir los archivos.

  11. Aqui teneis otra guía, que puede servir para complementar los detalles de configuración:

    En HTML:
    http://www.actiu.net/infordoc/servidors/vsftpd-pam-mysql_es.htm

    En PDF:
    http://www.actiu.net/infordoc/servidors/vsftpd-pam-mysql_es.pdf

  12. Hola a todos, Mi problema es el siguiente:
    Estoy tratando de configurar el servidor vsftpd, pero al momento que el usuario inicia sesion, no puede observar los directorios, ni ficheros cuando ejecuta el comando ls. Ademas no puede bajar ni subir ficheros. Espero me hechen la mano, Saludoss..

  13. Hola, estoy pasandome a Linux, me he dado cuenta que es mucho, pero mucho mejor k Windows, pero he tenido unos pekeños fallos en la configuracion del demonio vsftpd, y especificamente cuando tratao de ejecutar el comando ls, en consola no muestra ningun directorio, ni archivo, Ademas cuando uso el Filezilla el login, es perfecto, pero no puedo ni subir ni bajar nada. Necesito de su ayuda, por favor.

  14. Hola, instale vsftpd y al parecer funciona muy bien, pero intento conectarme remoto desde un ciente FTP y no encuentra el server, estoy casi seguro que es problema del Firewall, podria indicarme como hago para abrir los puertos para que la conexion funcione y como hago para verificar si los puertos si estan abiertos o no.
    Gracias

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

 
A %d blogueros les gusta esto: