Configurar un servidor ftp con Vsftpd en openSUSE linux

Dejar a punto un servicio ftp con Vsftpd lleva buen tiempo, unos cuantos días de trabajo e investigación, así que bien vale la pena trabajar un poquito más para dejar una buena guía que en el futuro haga de ayuda memoria, ya que las lagunas mentales son mas frecuentes de lo que uno cree y siempre aparecen en los momentos más inoportunos.

El manual primeramente ofrece una configuración básica del servicio y luego lo complementa con configuraciones más avanzadas como es el soporte de usuarios virtuales, de conexiones seguras mediante ssl y otras funcionalidades más.

Instalación

  1. Para instalar el paquete del servidor Vsftpd lo podemos hacer mediante el comando zypper como se muestra a continuación:
    testsrv:~ # zypper install vsftpd
  2. Cuando hayamos culminado con la instalación, configuramos los niveles de ejecución y probamos arrancar y parar el servicio, todo ello ejecutando los siguientes comandos:
    testsrv:~ # chkconfig --add vsftpd
    testsrv:~ # service vsftpd start
    testsrv:~ # service vsftpd stop
  3. Concluido con estos pasos, continuamos con la configuración del servicio en sí.

Configuración Básica

El archivo de configuración del servidor Vsftp se encuentra en el directorio /etc/ y se llama vsftpd.conf, el cual vamos a tener que modificar con cualquier editor de texto que sea de nuestra preferencia. Las directivas o comandos que se van a especificar en esta sección son las necesarias para montar un servidor ftp básico que permite la conexión de usuarios locales del sistema operativo como así también de usuarios anónimos.
Obs: Antes de comenzar a modificar un archivo de configuración nunca hay que olvidarse de hacer una copia de seguridad del mismo, así siempre tendremos a mano una versión original para restaurar la configuración por defecto sin perder mucho tiempo ;).
  1. Como primer paso tenemos que abrimos el archivo de configuración Vsftp conectados como root:
    testsrv:~ # vi /etc/vsftpd.conf
    En los siguientes pasos se citarán las principales directivas que deberán estar definidas (descomentadas) en el archivo de configuración seguidos de sus respectivos parámetros, hay muchas otras directivas que se pueden consultar en ésta dirección, toda línea que lleve al principio el carácter almohadilla (#) es interpretado como comentario.

  2. Configuraciones Generales:

    Las siguientes directivas permiten activar la capacidad de escritura para subir nuevos archivos y habilitar mensajes de navegación y conexión.
    #!/bin/bash
    # Ejemplo del archivo de configuración /etc/vsftpd.conf
    # General Settings
    #
    # Permite el modo escritura.

    write_enable=YES

    # Activa mensajes de directorio.
    dirmessage_enable=YES

    # Mensaje de bienvenida
    ftpd_banner=Bienvenido al servidor ftp de GK - Powered by openSUSE
  3. Configuración para usuarios Locales:

    El siguiente compendio de directivas permiten realizar configuraciones relacionadas a los usuarios del servicio vsftpd.
    # Local FTP user Settings
    #
    # Permite que usuarios locales puedan conectarse.

    local_enable=YES

    # Enjaula a los usuarios locales dentro de su propio directorio
    # personal, esta opción mejora la seguridad.

    chroot_local_user=YES

    # Permite especificar una lista con los usuarios locales a los
    # cuales se les enjaulará cuando la opción chroot_local_user=YES.

    chroot_list_enable=YES

    # Especifica la ruta en donde se encuentra la lista, en mi caso
    # he creado una carpeta en el directorio /etc llamada vsftpd,
    # en la cual coloqué el archivo de texto (vsftpd.chroot_list)
    # que contiene la lista.

    chroot_list_file=/etc/vsftpd/vsftpd.chroot_list

    # Esta directiva la he dejado comentada, pero puede resultar
    # muy interesante para los casos en que sea necesario limitar
    # la velocidad de transferencia para los usuarios locales,
    # por defecto la velocidad de transferencia es ilimitada.
    #local_max_rate=7200

  4. Continuación de la configuración del archivo vsftpd en la sección Anonymus FTP user Settings:

    La configuración de las directivas que vienen a continuación definen las condiciones con las que podrán acceder y operar los usuarios anónimos con el servicio vsftpd.
    # Anonymus FTP user Settings
    #
    # Permitir conexiones anónimas.

    anonymous_enable=YES

    # Directorio raíz para los usuarios anónimos. Carpeta creada
    # en /srv/ftp/ como se comentó anteriormente.

    anon_root=anonimo

    # Solo permite descargar a los usuarios anónimos aquellos
    # archivos que tengan permisos de lectura.

    anon_world_readable_only=YES

    # En mi caso especifiqué con la siguiente directiva que los
    # usuarios anónimos no tengan permisos para subir archivos
    # al servidor.

    anon_upload_enable=NO

    # Esta directiva permite a los usuarios anónimos a crear
    # carpetas en ciertos casos.

    anon_mkdir_write_enable=NO

    # Directiva que permite establecer el límite de la velocidad
    # máxima transferencia de datos para los usuarios anónimos.
    # Fui un poco drástico jeje (2kb/s)

    anon_max_rate=2048
  5. Configuración de logs:

    En esta sección del archivo vsftpd se realizan las configuraciones relacionadas a archivos logs.
    # Log Settings
    #
    # Activa la generación de registros logs por cada
    # uploads/downloads.

    xferlog_enable=YES

    # Define cual será el archivo log.
    vsftpd_log_file=/var/log/vsftpd.log

    # Si esta directiva no se encuentra comentada activa el registro
    # (log) de todas las peticiones/respuestas del servidor.

    log_ftp_protocol=YES
  6. Configuraciones relacionadas a Transferencias:

    Con las siguientes directivas es posible configurar varias opciones del servicio relacionadas a velocidades de transferencias y al comportamiento que seguirá cuando los usuarios intenten conectarse.
    # Transfer Settings
    #
    # (ftp-data).

    connect_from_port_20=YES

    # Tiempo de espera para mantener establecidas conexiones
    # inactivas.

    idle_session_timeout=600

    # Tiempo de espera para mantener establecidas conexiones
    # de datos inactivas.

    data_connection_timeout=120

    # Comando que permite activar/desactivar conexiones
    # pasivas.

    pasv_enable=YES

    # PAM setting. Suele estar configurado por defecto.
    pam_service_name=vsftpd

    # Configura listen=YES para que vsftpd corra en modo
    # standalone.

    listen=YES

    # Máximos clientes simultáneos conectados. Ejemplo:
    max_clients=5

    # Máximas conexiones simultáneas por IP. Ejemplo:
    max_per_ip=3

    # Como tenemos activado el uso de conexiones pasivas
    # especificamos el rango de puertos que serán utilizados
    # por este método de conexión.

    pasv_min_port=40000
    pasv_max_port=40020
  7. Creando directorio para albergar a usuarios Anónimos

    En base a la configuración realizada de las directivas de la sección Anonymus FTP user Settings del archivo vsftpd.conf, necesitamos crear una carpeta en el sistema de archivos que será utilizada como el directorio raíz para las conexiones anónimas, con la instalación por defecto del servidor vsftpd en openSUSE, el directorio para usuarios anónimos se encuentra por defecto en /srv/ftp/, este directorio es el HOME del usuario de sistema ftp dueño del servicio (Ver Yast → Seguridad y Usuarios → Gestión de Usuarios → Definir Filtro: Usuarios del Sistema → Usuario FTP → Ver Detalles). Previendo la posterior utilización de dicho directorio para albergar a los usuarios virtuales, coloqué una nueva carpeta en dicho directorio llamada anónimo:
    testsrv:~ # cd /srv/ftp
    testsrv:/srv/ftp # mkdir anonimo
    asignándole el dueño:grupo y los permisos de forma idéntica a la carpeta ftp que se encuentra en /srv, esto lo comento porque cuando coloqué otros permisos a la carpeta anonimo, las conexiones anónimas no funcionaron correctamente.
    testsrv:/srv/ftp # chmod 755 anonimo/
    testsrv:/srv/ftp # chown root:root anonimo/

    Con esto ya tenemos lista la carpeta que será la encargada de contener los archivos para los usuarios anónimos.

  8. Bueno, hasta este punto ya tenemos configurado un servidor ftp básico que acepta conexiones de usuarios locales que pueden realizar downloads & uploads así como también acepta conexiones de usuarios anónimos que solamente tienen autorización para realizar descargas. Para poner nuevamente en marcha el servicio guardamos y salimos del archivo de configuración y ejecutamos el comando:
    testsrv:~ # service vsftpd start
  9. No hay que olvidarse de autorizar los puertos correspondientes al servicio vsftpd y del rango de puertos destinados a las conexiones pasivas en el Firewall de openSUSE, en el caso de que el mismo se encuentre activo. Para ello editamos el archivo SuSEfirewall2 del directorio /etc/sysconfig y le asignamos el servicio vsftpd a la directiva FW_CONFIGURATIONS_EXT si tenemos nuestra interfaz de red asignada a la zona externa, quedaría como se muestra a continuación:
    testsrv:~ # vi /etc/sysconfig/SuSEfirewall2
    FW_CONFIGURATIONS_EXT="netbios-testsrv samba-testsrv vsftpd"
    Luego, en el mismo archivo deberíamos buscar la directiva FW_SERVICES_EXT_TCP a la cual le asignamos los números de puertos del protocolo TCP mencionado:
    FW_SERVICES_EXT_TCP="40000:40020"
    Guardamos los cambios del archivo y reiniciamos el firewall con lo que el servicio ya quedará disponible:
    testsrv:~ # rcSuSEfirewall2 restart
    Starting Firewall Initialization (phase 2 of 2) SuSEfirewall2: Warning: no default firewall zone defined, assuming 'ext'
    done
    testsrv:~ #


Usuarios virtuales


Vamos a incorporar un punto más a favor de la seguridad evitando usar los usuarios locales para conectarnos al servidor ftp, para ello vamos a implementar el método de autenticación combinando PAM y bases de datos db (Berkeley Database) que son muy simples de manipular, para ello necesitamos tener instalados los paquetes db-utils y pam, que ya suelen estar instalados por defecto.
  1. Para generar la tabla que contendrá los usuarios virtuales y sus respectivas contraseñas primeramente debemos crear un archivo de texto plano donde cargaremos esos datos, para ello nos dirigimos al directorio /etc/vsftpd que creamos anteriormente, ahí adentro creamos un nuevo archivo llamado por ejemplo logins.txt.
    testsrv:/etc/vsftpd # touch logins.txt
    le establecemos permisos de lectura y escritura solo para el usuario root con el siguiente comando:
    testsrv:/etc/vsftpd # chmod 600 logins.txt
    y le agregamos un contenido similar a:
    user_gabriel
    pass_gabriel
    user_luis
    pass_luis
    donde la primera línea corresponde al login del usuario virtual gabriel y la segunda a la contraseña del mismo, ya en la tercera línea se agrega otro nuevo login, en este caso luis y que sigue el mismo procedimiento que las 2 primeras líneas (Arriba login y abajo la contraseña).

  2. Una vez que hayamos ingresado todos los usuarios virtuales que deseamos, preparamos un script que ejecutará una serie de comandos para generar la tabla db que es interpretable por el módulo pam. Para el script creamos otro nuevo archivo también en el directorio /etc/vsftpd/ llamado generar_db.sh y le agregamos el siguiente texto:
    #!/bin/bash
    # Primeramente se borra el archivo "vsftpd_login.db" si es
    # que ya existe.

    rm -f vsftpd_login.db

    # Genera el archivo "db" que contiene los usuarios virtuales
    # del servicio vsftpd.

    db_load -T -t hash -f logins.txt vsftpd_login.db

    # Se asignan permisos de seguridad solo para root.
    chmod 600 vsftpd_login.db
  3. le asignamos el permiso de ejecución al archivo generar_db.sh:
    testsrv:/etc/vsftpd # chmod 700 generar_db.sh
  4. y luego ejecutamos el script:
    testsrv:/etc/vsftpd # ./generar_db.sh
    Con esto creamos el archivo vsftpd_login.db en el directorio /etc/vsftpd/, listo para ser utilizado.

  5. El siguiente paso consiste en modificar el archivo de configuración PAM del servicio vsftpd, este archivo lo podemos encontrar en el directorio /etc/pam.d/ y debería llevar el mismo nombre especificado en la directiva pam_service_name, en este caso vsftpd.

    Antes de editar el archivo, hacemos una copia de seguridad del mismo y nos aseguramos que el servicio ftp no esté corriendo, verificado esto, editamos el archivo comentando todas sus líneas anteponiendo el carácter #, y le agregamos las siguientes líneas:
    # Para usuarios virtuales. En caso de que se
    # utilice un OS con arquitectura 64 bits (x86_64),
    # la ruta correcta para el archivo "pam_userdb.so"
    # es "/lib64/security/pam_userdb.so".

    auth required /lib/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login
    account required /lib/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login
    Estas líneas permiten que los usuarios que se conecten al servicio ftp sean validados contra los registros que contiene la tabla vsftpd_login.db que hemos creado.

  6. Como de ahora en más ya no se podrá acceder con los usuarios locales, se tiene que especificar al servidor vsftpd que un usuario local se encargará de gestionar todos los usuarios virtuales que se conecten, también aprovecharemos para agregar el directorio de donde el servidor vsftpd tendrá que buscar la configuración personal de cada usuario virtual, para lo que nuevamente editamos el archivo de configuración /etc/vsftpd.conf y agregamos las siguientes líneas al final del archivo:
    # Usuarios Virtuales
    #
    # Activamos el uso de usuarios virtuales.

    guest_enable=YES

    # Esta directiva permite especificar el usuario que se encargará de
    # manejar los usuarios Virtuales, por defecto si no se especifica esta
    # línea en openSUSE es "ftp" que como ya sabemos tiene su home
    # en /srv/ftp/, pero puede ser cualquier otro usuario si lo deseamos.

    guest_username=ftp

    # Especificamos el directorio de donde el servicio obtendrá la
    # configuración personal de cada usuario virtual que agregamos
    # a la tabla “vsftpd_login.db”.

    user_config_dir=/etc/vsftpd/config_por_usuario
  7. Guardamos los cambios del archivo vsftpd.conf y creamos el directorio indicado en la directiva user_config_dir dentro de la carpeta /etc/vsftpd/:
    testsrv:/etc/vsftpd # mkdir config_por_usuario
  8. En su interior creamos por cada usuario virtual que agregamos a la tabla vsftpd_login.db un archivo de texto plano con el mismo nombre del login del usuario.
    testsrv:/etc/vsftpd/config_por_usuario # touch gabriel luis
  9. Por ejemplo editamos el archivo gabriel recientemente creado y le agregamos las siguientes líneas:
    #!/bin/bash
    # Indicamos cual será el directorio personal del usuario gabriel.

    local_root=/srv/ftp/gabriel

    # La directiva "write_enable=YES" es innecesaria con la configuración
    # de este ejemplo ya que la siguiente directiva virtual_use_local_privs
    # le asigna a este usuario virtual los mismos privilegios que se
    # especificaron en el archivo /etc/vsftpd.conf para los usuarios
    # locales, en el cual ya se encuentra definida esta directiva.
    # write_enable=YES

    # Con virtual_use_local_privs igualado a YES, supone indicar que
    # los usuarios virtuales tendrán los mismos privilegios que los
    # usuarios locales.

    virtual_use_local_privs=YES
    Lo mismo podemos agregar al archivo luis, obviamente indicando otro directorio personal.

  10. Ahora solo nos resta crear los directorios personales para ambos usuarios virtuales (gabriel y luis) en el directorio /srv/ftp/, cambiarlos de dueño y asignar los permisos correspondientes:
    testsrv:~ # cd /srv/ftp
    testsrv:/srv/ftp # mkdir gabriel luis
    testsrv:/srv/ftp # chown -R ftp:ftp gabriel
    testsrv:/srv/ftp # chown -R ftp:ftp luis
    testsrv:/srv/ftp # chmod -R 744 gabriel
    testsrv:/srv/ftp # chown -R 744 luis
  11. El siguiente paso es reiniciar el servicio para comprobar su funcionamiento con los usuarios virtuales que hemos agregado, además las conexiones anónimas deberán seguir funcionando, solamente los usuarios locales ya no podrán conectarse al servidor.
    testsrv:~ # service vsftpd restart


Conexiones seguras utilizando SSL


Como el protocolo ftp no encripta la información que fluye entre la aplicación cliente y el servidor, los datos como ser contraseñas, logins, etc. pueden ser obtenidos con mucha facilidad mediante el escaneado de paquetes. Para aumentar la seguridad se puede activar la encriptación de paquetes utilizado ssl para tener un servicio ftp menos vulnerable (ftps).
  1. El primer paso consiste en generar un Certificado SSL, para ello necesitamos tener instalados los paquetes openssl y openssl-certs. Nos dirigimos al directorio /etc/ssl/certs y ahí ejecutamos el siguiente comando:
    testsrv:/etc/ssl/certs # openssl req -x509 -nodes -days 7300 -newkey rsa:2048 -keyout /etc/ssl/certs/vsftpd.pem -out /etc/ssl/certs/vsftpd.pem
    Para preparar el certificado, el comando openssl nos solicitará que ingresemos varios datos como ser país, provincia, ciudad, empresa, nombre, email, etc., esta información luego aparecerá en el certificado que cualquier usuario deberá aceptar para hacer uso del protocolo seguro. Cuando finalice tendremos el certificado concluido con el nombre vsftpd.pem.

  2. Para el siguiente paso editamos el archivo de configuración vsftpd.conf, nos dirigimos hasta el final donde agregaremos las siguientes líneas:
    # Secure FTP
    #
    # Activamos el soporte SSL

    ssl_enable=YES

    # No se obliga el establecimiento de conexiones encriptadas mediante
    # SSL para suarios locales.

    force_local_logins_ssl=NO

    # No se obliga a que las transferencias de datos locales sean
    # encriptados con SSL.

    force_local_data_ssl=NO

    # Se habilitan los soportes para las diversas versiones de SSL.
    ssl_tlsv1=YES
    ssl_sslv2=YES
    ssl_sslv3=YES

    # Soluciona el problema de incompatibilidad entre la suite cipher
    # implementada por FileZilla y la implementada por defecto en vsftpd
    # (DES-CBC3-SHA). Ref: http://trac.filezilla-project.org/ticket/7873

    ssl_ciphers=HIGH

    # Se especifica la ubicación del Certificado Generado.
    rsa_cert_file=/etc/ssl/certs/vsftpd.pem
    rsa_private_key_file=/etc/ssl/certs/vsftpd.pem
  3. Por ultimo reiniciamos nuevamente el servicio vsftpd:
    testsrv:~ # service vsftpd restart
Podemos probar establecer conexiones seguras utilizando clientes que soportan esta funcionalidad como ser los clientes FilleZilla, gfTP, etc. Para establecer una conexión segura desde la aplicación cliente Filezilla debemos agregar un sitio en el gestor de sitios con la opción Tipo de Servidor = FTPES (FTP sobre TLS/SSL explícito).


Cambiar directorio raíz de usuarios virtuales


En esta sección voy a anexar una configuración que me habían consultado, que consiste en cambiar el root_local (directorio raíz) original (/srv/ftp) para todos los usuarios virtuales a otro lugar, específicamente a un directorio de un usuario local como por ejemplo /home/gabriel/descargas. Tomando en cuenta la configuración de usuarios virtuales que comenté en el manual, tuve que modificar y agregar unas cositas al archivo vsftpd.conf que muestro a continuación:
  1. Primeramente cambie la directiva guest_username para colocarle el usuario local que manejará los usuarios virtuales y en cuyo home estará la carpeta raíz para los mismos, después le comenté con # la línea de la directiva user_config_dir para que ya no busque las configuraciones específicas de cada usuario virtual y por último le agregué dos nuevas líneas, una para especificar el directorio raíz con la directiva local_root y la otra para que le otorgue a los usuarios virtuales los mismos privilegios que tienen los usuarios locales con la directiva virtual_use_local_privs=YES. El archivo vsftpd.conf en la sección de usuarios virtuales me quedó como sigue:
    # Usuarios Virtuales
    #
    # Activamos el uso de usuarios virtuales.

    guest_enable=YES

    # Esta directiva permite especificar el usuario que
    # se encargará de manejar los usuarios Virtuales.

    guest_username=gabriel

    # Especificamos el directorio de donde el servicio obtendrá
    # la configuración personal de cada usuario virtual que
    # agregamos a la tabla "vsftpd_login.db". ESTA LINEA
    # LA COMENTE PARA QUE NO SEA INTERPRETADA.
    #user_config_dir=/etc/vsftpd/config_por_usuario

    # Directorio raíz para usuarios registrados en vsftpd_login.db
    # a partir del home de tu usuario local, en mi caso la carpeta
    # estará en "/home/gabriel/descargas".

    local_root=descargas

    # Esta directiva ya es conocida y supone indicar que los usuarios
    # virtuales tendrán los mismos privilegios que los usuarios locales.

    virtual_use_local_privs=YES
    Con eso el archivo vsftpd.conf ya tiene todo lo que necesita.

  2. Solo resta verificar que exista el directorio descargas, en mi caso lo tuve que crear sin necesidad de asignarle ningún permiso (por defecto 755 está ok) ni cambiarle de dueño:
    gabriel@testsrv:~> mkdir descargas
  3. Por último hay que reiniciar el servicio y la nueva configuración debería funcionar sin problemas.
    testsrv:~ # service vsftpd restart
También se puede redirigir el directorio raíz para las conexiones anónimo al mismo directorio en donde los usuarios locales o virtuales suben sus archivos modificando la directiva anon_root:
anon_root=/home/gabriel/descargas
Así los usuarios anónimos podrán descargar los archivos que subieron los demás.


Usuarios virtuales en MySQL


Me puse a investigar como hacer para que los usuarios virtuales y sus contraseñas sean almacenados en una base de datos MySQL, en vez de ser almacenados en una base de datos del tipo Berkeley como se detalla anteriormente. En esta sección simplemente se detallará la forma en que se deberá almacenar los datos de los usuarios virtuales en la base de datos MySQL y como deberá estar definido el método de autenticación PAM para el servicio vsftpd.
Este post no abarcará la instalación y configuración de la base de datos MySQL y sus respectivas herramientas de administración (como phpMyAdmin, etc.).
Una vez que hayamos configurado el servicio vsftpd con la implementación de usuarios virtuales almacenados en la base de datos Berkeley, no será demasiado trabajoso modificar el esquema para que los usuarios virtuales sean almacenados en una base de datos MySQL.
  1. El primero de los pasos es crear una nueva base de datos en MySQL, yo lo hecho ejecutando la siguiente sentencia SQL desde la aplicación phpMyAdmin:
    CREATE DATABASE vsftpd DEFAULT CHARACTER SET utf8 COLLATE utf8_spanish_ci;
  2. El siguiente paso consiste en agregar un nuevo usuario llamado vsftpd, a este usuario se le asignan todos los privilegios de la base de datos recientemente agregada:
    CREATE USER 'vsftpd'@'localhost' IDENTIFIED BY 'vsftpd';
    GRANT USAGE ON *.* TO 'vsftpd'@'localhost' IDENTIFIED BY 'vsftpd' WITH MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0 ;
    GRANT ALL PRIVILEGES ON vsftpd.* TO vsftpd@localhost WITH GRANT OPTION;

  3. Luego hay que crear una tabla en la base de datos vsftpd en la cual se van a registrar los usuarios virtuales con sus respectivas contraseñas, la sentencia SQL para este paso es la siguiente:
    CREATE TABLE IF NOT EXISTS `usuarios` (
    `numero` int(11) NOT NULL AUTO_INCREMENT,
    `usuario` varchar(50) NOT NULL,
    `password` varchar(50) NOT NULL,
    PRIMARY KEY (`numero`),
    UNIQUE KEY `usuario` (`usuario`)
    ) ENGINE=MyISAM AUTO_INCREMENT=1;

  4. Para agregar un nuevo usuario virtual a la tabla debemos ejecutar una sentencia SQL similar a la que sigue:
    INSERT INTO usuarios (usuario, password) VALUES('login_usuario', PASSWORD('contraseña_en_texto_plano'));
    Donde en reemplazo a la palabra login_usuario irá el nombre del usuario virtual y en reemplazo de la palabra contraseña_en_texto_plano la contraseña de ese usuario virtual, la función PASSWORD de MySQL convertirá la contraseña de texto plano a un código hash que ocultará la contraseña original en la tabla.

  5. Cumplidos todos los pasos anteriores ya podemos pasar a configurar el método de autenticación PAM para el servicio vsftpd, para ello nos dirigimos al directorio /etc/pam.d, creamos una copia de seguridad del archivo vsftpd y luego lo editamos, ya en el archivo comentamos todas las lineas activas y al final del archivo agregamos las siguientes lineas:
    auth required pam_mysql.so user=vsftpd passwd=vsftpd host=127.0.0.1 db=vsftpd table=usuarios usercolumn=usuario passwdcolumn=password crypt=2
    account required pam_mysql.so user=vsftpd passwd=vsftpd host=127.0.0.1 db=vsftpd table=usuarios usercolumn=usuario passwdcolumn=password crypt=2
  6. Con estas configuración la implementación debería quedar funcionando, ni siquiera es necesario reiniciar el servicio vsftpd, sin embargo, en mi caso tuve que instalar un paquete al sistema operativo para obtener la librería pam_mysql.so, ya que sin ella el servicio PAM no tiene la interfaz necesaria para relacionarse con la base de datos MySQL, para la distro openSUSE, el módulo PAM para MySQL se puede instalar mediante el método 1-Click Install, podemos buscar el paquete en el sitio de openSUSE.

Enlaces

Comentarios

  1. Muchas gracias por la información, esto facilita mucho la labor, he seguido paso a paso tu explicación pero no consigo arrancar el servicios, el sistema mi tira este error:
    $service vsftpd start
    Starting vsftpd startproc: exit status of parent of /usr/sbin/vsftpd: 1
    failed

    Agradecería que me ayuden a identificar dodne está el problema ya que no he encontrado una solución que funcione por ninguna parte.

    ResponderEliminar
    Respuestas
    1. Hola, si tira algún error durante el arranque es porque alguna configuración ha de estar mal. Una consulta, que configuraciones has realizado? has seguido solo los pasos de la configuración básica o has realizado alguna configuración avanzada más?

      Saludos.

      Eliminar
    2. logueate como super user $sudo service vsftpd start

      Eliminar
  2. Hola, he seguido al pie de la letra todo, solo hasta la parte "Usuarios virtuales" (Es decir esa configuración aun no la hago). Probé iniciar el servicio y me muestra este error:


    # service vsftpd start
    redirecting to systemctl
    Job failed. See system logs and 'systemctl status' for details.
    #

    ResponderEliminar
    Respuestas
    1. ya se encuentra operativo, el problema era con el xinetd, estaba iniciado pero no funcionaba correctamente:

      # /etc/init.d/xinetd start
      # chkconfig xinetd on

      Eliminar
    2. Hola, que bueno que haya funcionado, pero tengo una pregunta, tenías Vsftpd corriendo como un servicio xinetd o standalone? la verdad que yo nunca lo he hecho correr con xinetd.. quizás el comando service vsftpd start te haya tirado error porque ya lo tenías activo con xinetd!

      Eliminar
  3. muchas gracias...
    definitivamente uno de los mejores manuales que he encontrado

    SAludos y mis respetos

    ResponderEliminar
  4. buenas, tengo una duda. Como modifico los usuarios virtuales?

    ResponderEliminar
    Respuestas
    1. Hola, si has utilizado el método de usuarios virtuales que utiliza la base de datos Berkeley podés modificar el contenido del archivo logins.txt y volver a generar el archivo vsftpd_login.db con el script generar_db.sh. En el caso de que los usuarios estén en MySQL simplemente modificando los usuarios mediante SQL.

      Saludos.

      Eliminar
  5. hola gabriel. pude configurar al pie de la letra todo pero al tratar de pasar archivos al ftp , me da los siguientes errores. me podrias decir que es?. saludos
    an error occured copying a file to the ftp server. make sure you have permission to put files on the server.

    ya probe agregando el usuario a los grupos ftp y apache. pero nada. el usuario tiene permisos 764 sobre la carpeta, con lo cual deberia poder acceder y guardar contenido normalmente

    ResponderEliminar
    Respuestas
    1. Hola Pablo, según entiendo estás probando la configuración "básica" ftp para un usuario del sistema operativo? si es así podrías verificar que la directiva write_enable=YES esté correctamente configurada.

      Pero unas consultas más, vos accedes con el login del usuario y la misma contraseña que para el sistema operativo? con esta misma configuración, te permite descargar archivos?

      Saludos.

      Eliminar
  6. Hola excelente tutorial la verdad tengo que realizar una práctica como esta, tu guía me será de mucha ayuda.

    ResponderEliminar
    Respuestas
    1. Hola Milton, ojalá te sirva, como siempre mi recomendación es realizar primero la Configuración Básica y probar. Recién cuando esa sección funcione bien es recomendable pasar a la siguiente configuración avanzada (usuarios virtuales, ssl, etc.).

      Saludos..

      Eliminar
  7. Hola Gabriel,

    Primero que nada muy buen guía. Si no es mucha molestia quería preguntarte si hay que configurar nada mas en la parte de conexiones seguras, ya que seguí los pasos al pie de la letra y cuando quiero conectar desde FileZilla me tira el siguiente error: GnuTSL error -12: A TSL fatal alert hast been received.

    Desde ya muchas gracias

    Saludos

    Gabriel

    ResponderEliminar
    Respuestas
    1. Hola, voy a tener que verificar esta noche en mi casa, los puntos que quizás deberías controlar son los siguiente:
      - Configurar en Filezilla que use el tipo de servidor FTPES (FTP sobre TLS/SSL explícito).
      - Controlar que se haya creado correctamente el archivo vsftpd.pem en el directorio /etc/ssl/certs/.
      - Y controlar nuevamente las directivas del archivos vsftpd.conf.

      Eso es todo lo que se me ocurre por el momento..

      Saludos.

      Eliminar
    2. Gracias Gabriel por responder,

      Volvi a configurar todo nuevo en otro equipo y chequear las configuraciones tanto en en el archivo vsftpd.conf con el filezilla y me tira el mismo error.

      Voy a seguir investigando y probando!

      Gracias por la ayuda nuevamente

      Saludos, Gabriel.

      Eliminar
    3. Otroa cosa,

      Ambas pruebas las hice sobre openSUSE 11.4,

      la primera en una PC con openSUSE 11.4 64 bits (tuve en cuenta la ruta del servicio pam)

      y la segunda en una notebook con openSUSE 11.4 32 bits.

      Saludos!

      Eliminar
    4. Hola, bueno, he probado y he tenido el mismo problema, así que me puse a investigar y probando con el cliente gftp ha salido el siguiente error:

      Error 18:self signed certificate

      El error anterior se debe a que nosotros mismos hemos validado el certificado que estamos ofreciendo. En base a eso seguí investigando y agregando la directiva validate_cert=NO al archivo vsftpd.conf ya puedo listar el directorio ftp remoto del usuario con el cliente curl, pero no desde FileZilla ni gFTP.

      # curl -u mi_usuario -v -k --ftp-ssl-reqd ftp://ip_servidor:21

      Ahora tengo que ir a dormir, seguiré analizando el problema mañana..

      Saludos.

      Eliminar
    5. Hola Gabriel,

      Gracias por el tiempo que le estas dedicando yo todavía no le encontré la vuelta. Mañana sigo probando!

      Si tengo novedades lo posteo

      Muchas gracias!

      Saludos

      Eliminar
    6. Uff, ya está la solución debajo de este comentario.

      Saludos!!

      Eliminar
  8. Bueno, en realidad en mi comentario anterior me equivoqué. Primeramente el error Error 18:self signed certificate está relacionado solo con el cliente gFTP que solo soporta conexiones seguras implícitas, por lo que aquí no tiene nada que ver ya que lo que queremos usar son conexiones seguras explícitas (para evitar abrir otros puertos aparte del 21 y los puertos pasivos).

    El problema se encuentra en la incompatibilidad de la suite cipher implementada por FileZilla y la que implementa vsftpd por defecto (DES-CBC3-SHA). Para solucionar el problema podemos agregar la siguiente directiva al archivo vsftpd.conf:
    ssl_ciphers=HIGH
    Reiniciar el servicio vsftpd y ya está, deberíamos poder conectarnos con FileZilla sin problemas.

    Fuente: http://trac.filezilla-project.org/ticket/7873

    ResponderEliminar
    Respuestas
    1. Hola Gabriel, probé ssl_ciphers=HIGH y funcionó!!!

      Muchas gracias!

      Saludos

      Eliminar
    2. Excelente, que bueno que haya funcionado, voy a agregar la directiva al artículo..

      Saludos..

      Eliminar
  9. Muy buen articulo, e tratado de seguir los pasos fielmente, pero al final, cuando trato de arrancar el servicio vsftpd, me tira el este error:
    xman:/etc/ssl/certs # systemctl status vsftpd.service
    vsftpd.service - LSB: very secure ftp daemon
    Loaded: loaded (/etc/init.d/vsftpd)
    Active: failed since Mon, 30 Jul 2012 10:17:41 -0400; 6s ago
    Process: 6308 ExecStart=/etc/init.d/vsftpd start (code=exited, status=7/NOTRUNNING)
    CGroup: name=systemd:/system/vsftpd.service
    Si me pudieras ayudar, te lo agradeceria, de antemanos gracias.

    ResponderEliminar
    Respuestas
    1. Hola, la verdad que con esa información no sabría decirte cual es el problema, has realizado solo la configuración básica? o has agregado alguna configuración avanzada como usuarios virtuales, soporte ssl, etc.? Por otro lado, también podrías verificar que te dice el archivo log.

      Saludos..

      Eliminar
    2. Gracias Gabriel por responder tan rápido, disculpa no te di mucha información. Mira primero hice la básica y todo bien, después fue cuando seguí todo las otras instrucciones, incluyendo usuarios virtuales, ssl y demás y parece que ahí fue donde debo haber cometido algún error, creo voy a limpiar y empezar de nuevo ahora tendré mas cuidado. Un fuerte Saludo desde NY, USA.

      Eliminar
    3. No hay problema, solo quería saber, porque lo más probable es que alguna directiva de tu archivo vsftpd.conf no esté bien configurada. Podrías ir comentando aquellas directivas que llevan relación con las configuraciones avanzadas, e ir probando si arranca el servicio, a fin de identificar donde está el problema.

      NY, USA, wow, mis saludos van desde Paraguay xD..

      Eliminar
  10. Estupendo manual Gabriel.
    Una pregunta, es aplicable por completo el manual para la distribución de Ubuntu?

    Saludos

    ResponderEliminar
    Respuestas
    1. Hola, en líneas generales supongo que si, todas las directivas de configuración de vsftpd deberían funcionar de igual manera en otras distribuciones. Obviamente existen diferencias en los comandos utilizados (como es el caso de zypper para instalar las dependencias), en algunos directorios del sistema operativo, etc. que en algunos casos son exclusivos de la distribución openSUSE.

      Eliminar
  11. Olá bom dia!

    No meu caso o meu SO é 64bits, eu não entendi o que devo fazer ao ler os comentarios:

    # Para usuarios virtuales. En caso de que se
    # utilice un OS con arquitectura 64 bits (x86_64),
    # la ruta correcta para el archivo "pam_userdb.so"
    # es "/lib64/security/pam_userdb.so".
    auth required /lib/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login
    account required /lib/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login

    Grato

    ResponderEliminar
    Respuestas
    1. Hola, tenes que reemplazar la ruta /lib/ por /lib64/ para openSUSE 64 bits.
      Oi, você tem que trocar "/lib/" para "/lib64/" com OS 64 bits.
      auth required /lib64/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login
      account required /lib64/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login

      Eliminar
  12. Me gusto mucho tu forma de explicar, excelente tutorial. MIl Gracias y Dios le pague....

    ResponderEliminar
  13. Hola Grabiel!

    primero que nada muchas gracias por tu explicación, ojalá la hubiese visto antes de tropezar tanto con la configuración.

    tengo un problema con los usuarios virtuales, ya verifique y creo tener los paquetes necesarios pero al momento de ejecutar "generar_db.sh" me marca un error y cuando entro al GUI el icono aparece con un tache encima y no me permite instalarlo por "el sistema de paquetes no reconoció este archivo"

    alguna idea?

    de antemano gracias

    ResponderEliminar
    Respuestas
    1. Hola Manuel, al ejecutar el script generar_db.sh desde la línea de comandos como se indica en la guía no debería dar problemas, a menos que por ahí te falte instalar el paquete db-utils. Sería de mucha ayuda si podes comentar el error que sale en la consola de comandos al ejecutar el script.

      Por cierto, no suele funcionar eso de hacer clic sobre un script bash tan básico como este.

      Saludos!

      Eliminar
    2. Ya,

      bash: ./generar_db.sh: /bin/bash^M: intérprete erróneo: No existe el fichero o el directorio

      revise y resulta que tengo instalado "The Berkeley DB database for C (version 4)"

      y db4-utils que parece que es un command line tools para BerkeleyDB

      y bueno pues espero sea solo instalar algo y no otra cosa, gracias por responder

      Eliminar
    3. Todo lo estaba haciendo desde root pero le cambie los permisos a 777 y desde un usuario normal lo ejecute y si me creo el vsftp_login.db a ver que sale a partir de aqui, ya te lo haré saber

      Saludos!

      Eliminar
    4. Manuel, ese error que te salió antes ./generar_db.sh: /bin/bash^M: intérprete erróneo: No existe el fichero o el directorio probablemente se deba a que creaste o editaste el script desde un equipo con sistema operativo Windows. Te recomiendo escribirlo en el propio Linux con el editor que prefieras, te recomiendo el kwrite va de maravillas.

      Saludos!

      Eliminar
  14. hola, al activar:
    "ssl_enable=YES"
    y hacer:
    "service vsftdp restart"
    me da error
    "Starting vsftpd startproc: exit status of parent of /usr/sbin/vsftpd: 1
    failed"

    cómo puedo solucionar esto? saludos!

    ResponderEliminar
    Respuestas
    1. Hola edu, pues algo hay con las directivas relacionadas con la configuración SSL del servicio vsftpd. Por cierto, ¿te funciona el servicio sin la configuración ssl? Quizás deberías comprobar que las rutas a los archivos estén bien y que los certificados se hayan generado correctamente.

      Saludos.

      Eliminar
    2. si no activo el ssl el servidor funciona como debe, sólo he implementado el acceso a usuarios locales, lo del firewall para lo de los usuarios anónimos (punto 7) no lo he hecho ya que me elimina mi configuración del firewall.

      he mirado con el wireshark y funciona bien también, pero claro, no hay nada encriptado.

      cómo puedo comprobar si el certificado que creé está bien?

      Eliminar
    3. Mmm, es extraño, te has fijado si en el directorio /etc/ssl/certs está el archivo vsftpd.pem utilizado por las directivas rsa_cert_file y rsa_private_key_file?

      Otra tema podría ser que no se encuentran instalados todos los paquetes relacionados a SSL pero eso lo dudo. Por otro lado, te has fijado en los archivos logs? quizás te provean más información.

      Eliminar
    4. estoy probando configuraciones y el error me lo da si activo ssl_cipher=HIGH, lo que pasa es que si lo comento no me puedo conectar, me dice "530 Non-anonymous sessions must use encryption."

      Eliminar
    5. Si, el ssl_cipher lo agregué luego de los problemas comentados por otro lector, que sistema operativo y que versión estas utilizando?

      Eliminar
    6. estoy utilizando opensuse en una máquina virtual montada en un servidor, donde he instalado tu vsftpd para hacer que funcione como un servidor ftp.
      el sistema operativo creo que es opensuse v11 y algo

      Eliminar
  15. sí, en el directorio está el archivo vsftpd.pem pero no sé cómo ver el contenido que le puse al crearlo, es decir, país, ciudad...

    en el log (/var/log/messages es lo que miro) no veo nada raro, me da info de si el login y me pone esto como último log "Dec 11 18:44:15 server16 kernel: [18001.886279] lo: Disabled Privacy Extensions
    "

    ResponderEliminar
    Respuestas
    1. Y en el log del servicio vsftpd? Por la distro, estás utilizando la versión 12.2? En versiones previas creo que no era necesario la configuración del ssl_cipher.

      Anteriormente me has dicho que comentando la linea ssl_cipher te funcionaba pero no te podías conectar vía SSL, ¿con que cliente estás probando conectarte? con FileZilla FTPES?

      Eliminar
    2. he probado con el cliente del termninal de linux y con el filezilla. Con ambos me dicen lo mismo "530 Non-anonymous sessions must use encryption."

      el log del sevicio vsftpd donde esta?

      no sé si te estoy liando, lo que pasa con el cipher es que si pongo ssl_cipher=HIGH, al hacer el service vsftpd start no lo hace, da error, por lo que no puedo conectar con el servidor. sin embargo, si comento esta líena sí puedo hacer el start o restart y puedo conectarme al servidor pero me da el error que te comento.

      gracias por la ayuda que me estás dando ;)

      Eliminar
    3. por cierto, ahora que comentas lo del filezilla, no he hecho nada de lo de FTPES... pero con el ftp del terminal de linux debería conectar bien, no? o se debe utilizar algún comando diferente?

      Eliminar
    4. Para acceder a un ftp SSL deberías probar la opción FTP sobre TLS/SSL explícito (opción FTPES de FileZilla). Prueba acceder con esa configuración y ver si funciona, en los anteriores comentarios ya se tocó parte de este tipo de configuración.

      Eliminar
  16. vale, si en filezila configuro el nuevo sitio como FTP - explicito sobre TLS, al intentar conectar da el error "se ha recibido una alerta tls fatal".

    si lo configuro como SFTP se conecta y las tramas en wireshark aparecen de tipo ssh, por lo que creo que está bien, todo esto con ssl_cipher=YES comentado.

    muchas gracias por todo!

    ResponderEliminar
    Respuestas
    1. Eduardo, espero que te haya sido de ayuda, aveces las cosas no quieren salir de una. Por ahí si tendrías tiempo te recomendaría probar la configuración del artículo en otra máquina virtual con la versión 12.2 de openSUSE, quizás la experiencia sea mejor.
      Un abrazo!

      Eliminar
  17. Hola de nuevo, llevo unos días con los usuarios virtuales y no consigo conectarme de forma segura con el filezilla utilizando un usuario virtual, sin embargo, si desactivo el ssl_enable y me conecto con el cliente ftp de linux sí que me conecta.

    en etc/pam.d tengo:

    auth required /lib64/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login
    account required /lib64/security/pam_userdb.so db=/etc/vsftpd/vsftpd_logi

    y en etc/vsftpd.conf, la parte de ssl y virtuales es:

    # ssl active
    ssl_enable=YES
    #
    # It is not necesary to do encrypted conexions with SSL for local users
    force_local_logins_ssl=NO
    #
    # Data transfer between local users is not necesary to be encrypted
    force_local_data_ssl=NO
    #
    # Enable supports for SSL versions
    ssl_tlsv1=YES
    ssl_sslv2=YES
    ssl_sslv3=YES
    #
    # Solve the problem between suite cipher implemented by Firezilla and
    # suite cipher implemented by defect in vsftpd
    # (DES-CBC3-SHA). Ref: http://trac.filezilla-project.org/ticket/7873
    #ssl_cipher=HIGH
    #
    # Place for the generated certificate
    rsa_cert_file=/etc/ssl/certs/vsftpd.pem
    rsa_private_key_file=/etc/ssl/certs/vsftpd.pem
    ##################
    # VIRTUAL USERS #
    ##################
    #
    guest_enable=YES
    guest_username=ftp
    user_config_dir=/etc/vsftpd/config_por_usuario
    allow_anon_ssl=YES


    sabes a qué puede ser debido? saludos y gracias de nuevo por la ayuda :)

    ResponderEliminar
    Respuestas
    1. Hola Eduardo, el problema no creo que esté con los usuarios virtuales sino con tu configuración SSL, o mejor dicho con la autenticación SSL.

      Por cierto, ¿has verificado que tipos de autenticación SSL soporta tu cliente ftp de Linux? ojo, hay clientes que no soportan conexiones seguras. Otra cosa, tienes algún firewall más instalado aparte de SuSEFirewall como SELinux o algo así?

      Saludos!

      Eliminar
  18. Sí, es problema de la autenticación SSL, con con usuarios locales sí que me puedo conectar utilizando SFTP de filezilla. Sin embargo, cuando hago los pasos para que sólo se puedan conectar los virtuales, éstos no conectan. No es problema del firewall ya que he probado a desactivarlo también.

    ResponderEliminar
    Respuestas
    1. Lamentablemente yo no tengo ningún servidor de prueba con la configuración del artículo para hacer pruebas in-situ.

      La verdad que no sé cual puede ser el problema, por ahí deberías mirar un poco más el tema de los logs y ver si se puede guardar o encontrar en alguna parte el error real que está dando problemas.

      Por mi parte por el momento no se en que más podría ayudarte, estoy algo corto de tiempo y diagnosticar el problema en estas condiciones es algo complicado, si podrías probar la configuración con openSUSE 12.2 sería lo más interesante, en fin...

      Eliminar
    2. Eduardo, estuve verificando el manual de directivas vsftpd y encontré la siguiente directiva que me parece importante para identificar tu problema:

      debug_ssl
      If true, OpenSSL connection diagnostics are dumped to the vsftpd log file. (Added in v2.0.6).


      Fijate un poco si te sirve. Un saludo!!

      Eliminar
  19. Hola Gabriel, ante todo muchas gracias por este completo tutorial.
    Hace unos días me instalé el servidor vsftpd en un opensuse 12.2-64bits.
    Lo he configurado según tu tutorial para conexiones ssl.
    Genere el certificado como sigue
    #openssl req -x509 -nodes -days 3650 -newkey rsa:4096 -keyout vsftpd.pem -out vsftpd.pem
    y configure el servidor.
    write_enable=YES
    local_enable=YES
    local_umask=022
    chroot_local_user=YES
    anonymous_enable=NO
    ssl_enable=YES
    allow_anon_ssl=NO
    force_local_data_ssl=YES
    force_local_logins_ssl=YES
    ssl_tlsv1=YES
    ssl_sslv2=YES
    ssl_sslv3=YES
    ssl_ciphers=HIGH
    rsa_cert_file=/etc/certificados/vsftp/vsftpd.pem
    rsa_private_key_file=/etc/certificados/vsftp/vsftpd.pem
    #
    Otras opciones las deje como vienen por defecto.
    Lamentablemente, cuando me conecto con Filezilla, siempre me da el error :

    Error: GnuTLS error -15: An unexpected TLS packet was received.
    Error: No se pudo conectar al servidor
    ¿¿Que puede estar pasando??
    Ignacio

    ResponderEliminar
    Respuestas
    1. Hola Ignacio, la verdad que no tengo una configuración a mano para probar pero quisiera consultarte algo, ¿la conexión desde FileZilla al servidor FTP va por TLS/SSL explícito? (opción FTPES de FileZilla).

      La verdad que hay muchas quejas acerca de configurar un ftp con encriptación, quizás debería volver a hacer una prueba de laboratorio utilizando como base la versión 12.2 openSUSE.

      Saludos.

      Eliminar
    2. Gracias Gabriel por contestar.
      La verdad es que he probado TLS/SSL explicito e implicito.
      Nada funciona, estoy pensando de que los desarolladores han metido la pata y en vez de no ser lo que fue, es lo que nunca debio de ser.
      No obstante te agradezco tu tiempo y consideracion.
      Saludos Ignacio

      Eliminar
    3. No se que sucede, si es un problema de TLS/SSL o de la distribución y las versiones de la librería que utiliza, pero no es la primera vez que tengo problemas con ellos también, ahora bien, con vsftpd aún no he tenido problemas. Tendré que probarlo con la versión 12.2 de openSUSE para ver si no ocurren problemas similares a los que he tenido con OpenVAS, que no lo logro hacer funcionar más en openSUSE. Saludos!

      Eliminar
    4. Estimado Gabriel, voy a seguir leyendo tus apuntes a ver si das con algo, pero me temo de que es el servidor vsftp, porque en ubuntu 12.04 tambien falla.
      Saludos Ignacio

      Eliminar
    5. Que curioso, tendré que probar mi configuración si o si. En fin, gracias por tus comentarios Ignacio, apenas lo confirme o tenga algo al respecto lo estaré comentándo.

      Eliminar
  20. Gracias, el segundo vsftpd que configuro sobre Opensuse siguiendo esta guía, sin problemas.

    ResponderEliminar
  21. Es de gran ayuda,que gente con conocimientos determinados se dignen a compartirlos, como tu. Es reconfortante. Muchas gracias

    ResponderEliminar
  22. Ojala a alguien le sirva... estos eran mis errores..
    verificar que tengan el modulo /lib/security/pam_userdb.so (vayan a la carpeta y chequen) en mi caso opensuse 12.3 era ponerle /lib64/security/pam_userdb.so y al igual contar con Berkeley DB Utils.. y por ultimo agregarle en el archivo vsftpd.conf, allow_writeable_chroot=YES para permitir la escritura en la scarpetas d elos usuarios sino marcara error 500 OOPS: vsftpd: refusing to run with writable root inside chroot()

    ResponderEliminar
    Respuestas
    1. Hola Gabriel, gracias por dejar la solución de tus problemas, de seguro le servirá a alguien más..

      Saludos!

      Eliminar
  23. HOLA GABRIEL VEO QUE ERES UN EXTERNO EN ESTO PUES LO QUE YO NECESITO ES TENER TODOS ESTOS DATOS LOS PROBARE PERO LO QUE MAS ME INTERESA ES EL TEMA DE USUARIOS VIRTUALES LLEVO COMO 30 REINSTALADAS DE SISTEMA OPENSUSE 12.3 Y EH VERIFICADO EL ARCHIVO DE CONFIGURACION PERO AL REALIZAR LAS PRUEBAS NO EH PODIDO VER LOS RSULTADOS BUENOS SI EH LLEGADO A TENER CONECTIVIDAD CON EL FTP ERO EL LOGUIN DE LOS USUARIOS VIRTUALES NO LO EH PODIDO VALIDAD, ME GUSTARIA SABER SI ME PUEDES AYUDAR VOY A IMPLEMENTAR PRIERO EL TUTORIAL QUE TENES ARRIBA Y SI TENGO ALGUN PROBLEMA TE LO INFORMO, SOO QUIERO SABER SI ESTAS DISPUESTO A AYUDARME YA QUE ES MI PRIMERA VEZ CON EL TEMA LINUX SOY DEL TIPO APPLE Y MICROSOFT PERO LAS SOLUCIONES QUE PRESTA OPENSEUSE SON MUY BUENAS... AH Y UN FAVOR + NO HAY LA POSIBILIDAD DE VER ALGUN SCRIP O UN SOFT OPENSUSE QUE NOS PERMITA TENER TODO ESTO DE FORMA MAS SENCILLA..?????? GRACIAS POR TODO AHORA MISMO PRUEBO EL TUTO Y TE INFORMO GRACIAS POR AYUDAR A GENTE QUE QUIERE APRENDER TECNOLOGIA

    ResponderEliminar
    Respuestas
    1. Hola Guido, bienvenido a TDB, prueba el tutorial y si tienes alguna duda escríbeme de vuelta. En cuanto a la configuración nunca he probado ni buscado algún script o asistente que configure la herramienta, deberías buscar información al respecto, sin embargo una vez que entiendes como funciona ya no será necesario.

      Por cierto, trata de no escribir todo en mayúscula, si has llegado a participar en foros o en grupos sabrás que eso está estipulado en las normas...

      Saludos..

      Eliminar
  24. Hola muchas gracias por compartir tus conocimientos,me ha sido de gran ayuda.
    Queria hacerte una consulta, tengo en windows un servidor de archivos y quiero hacer un buscador de documentos pdf. Hay alguna manera de poner la direccion del directorio del servidor win que contiene los pdf en vsftpd? o solo toma los del directorio /srv/ftp? gracias!

    ResponderEliminar
    Respuestas
    1. Ohh, hace cuanto que ya no paso por el blog, hola anónimo, podría funcionar montando en Linux el directorio compartido de Windows, solo que el Vsftpd se debería configurar para que utilice ese origen de datos y trabajar en sus respectivos permisos de acceso, el /srv/ftp es el directorio por defecto del servicio, pero cada usuario del sistema operativo tiene su propio directorio que puede ser modificado.

      Saludos!!

      Eliminar
  25. Muchisisimas gracias por el gran aporte, me ha servido 1000 !!!

    ResponderEliminar

Publicar un comentario