La Bitácora de Gabriel

Manual para configurar un Servidor FTP con Vsftpd en openSUSE

Posteado por: Gabriel en: Marzo 25, 2008

Logo vsftpd Geeko

El fin de semana pasado preparé un manual para configurar un servidor ftp con VSFTPD, esta documentación se basó en una implementación que ya tenía funcionando en un pequeño servidor que tiene como sistema operativo un GNU/Linux, específicamente la distribución openSUSE en su versión 10.3 i586. Dejar a punto el servicio ftp me llevó 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 dos necesidades más avanzadas como es el soporte de usuarios virtuales y de conexiones seguras mediante ssl.

Edito 30/11/2008 02:42: A continuación decidí agregar en este artículo el manual completo para que los lectores pudieran disfrutar de él sin la necesidad de tener que descargarse el documento en formato PDF.

TABLA DE CONTENIDO:

  1. INTRODUCCIÓN
  2. INSTALACIÓN
  3. CONFIGURACIÓN BÁSICA
    • Configuraciones Generales
    • Configuración para usuarios Locales
    • Configuración para usuarios Anónimos
    • Configuración de logs
    • Configuraciones relacionadas a Transferencias
  4. USUARIOS VIRTUALES
  5. CONEXIONES SEGURAS UTILIZANDO SSL
  6. ENLACES

INTRODUCCIÓN

Este pequeño documento tiene como objetivo indicar los principales pasos para configurar un servicio ftp en openSUSE utilizando el reconocido servidor VSFTPD(Very Secure FTPD).

Aclaro que en la mayoría de los casos las configuraciones son realizadas editando directamente los archivos de configuración, para esto pueden utilizar el editor de texto de su preferencia (Yo utilizo el Vim =)).

Acerca de las Pruebas: Los pasos de configuración fueron probados en dos equipos:

  • Equipos de Prueba:

Intel Pentium III 550 Mhz. / Mem. 384Mb / HD 40Gb. / Placa Asus

Notebook Acer / AMD Turion 64 x2 1.6Ghz. / Mem. 2 Gb. / HD 120 Gb.

  • Distribuciones Utilizadas: openSUSE 10.3 i586 y openSUSE 10.3 x86_64 respectivamente.

  • Versión utilizada del Servidor Vsftpd: 2.0.5-78

INSTALACIÓN

Para instalar el paquete del servidor VSFTPD lo hacemos desde “YastSoftware → Instalar/desinstalar Softwaredonde buscamos el paquete con nombre “vsftpd”, lo seleccionamos, comprobamos las dependencias y lo instalamos.

Paquete VSFTPD

Todas los demás paquetes que necesitaremos más adelante posiblemente ya han sido instalados por defecto con el sistema operativo (paquetes pam, openssl, openssl-certs, db-utils, etc.) ya que son paquetes fundamentales para otras aplicaciones básicas, no obstante, podemos verificar su instalación desde Yast.

Cuando hayamos culminado con la instalación probamos levantar el servicio abriendo una consola en la cual nos conectamos como super usuario (gabriel@superserver:~> su -) y ejecutamos el siguiente comando:

superserver:/ # service vsftpd start

si el servicio se levantó correctamente saldrá el siguiente mensaje:

Starting vsftpd done

aramos nuevamente el servicio con el comando service vsftpd stop, accedemos nuevamente al Yast y nos dirigimos a “Sistema → Editores de niveles de ejecución” donde verificamos que en modo experto estén marcadas las opciones 3 y 5 de los niveles de ejecución para el servicio vsftpd, lo que permite que el servicio se inicie automáticamente cada vez que se encienda el equipo. Concluido con estos pasos, continuamos con la configuración del servicio en sí.


CONFIGURACIÓN BÁSICA

El archivo de configuración del servidor VSFTPD 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 ;) .

Abrimos el archivo conectados como root:

superserver:/ # vi /etc/vsftpd.conf

A continuación 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 http://vsftpd.beasts.org/vsftpd_conf.html, toda línea que lleve al principio el carácter almohadilla (#) será interpretado como un simple comentario.

Configuraciones Generales:

#!/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 10.3


Configuración para usuarios Locales:

# 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
# no 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


Configuración para usuarios Anónimos:

La configuración que viene más adelante está ideada para que los usuarios que se conectan anónimamente, no puedan subir archivos, sino solamente descargar aquellos compartidos por el administrador del servicio.

Antes de comenzar con la modificación 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 10.3, 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 (/srv/ftp/anonimo) :

superserver: # cd /srv/ftp
superserver:/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.

superserver:/srv/ftp # chmod 755 anonimo/
superserver:/srv/ftp # chown root:root anonimo/

Esta carpeta (/srv/ftp/anónimo) será la que contendrá los archivos compartidos para los usuarios conectados como anónimos.

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

# 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
# Para 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
#
de transferencia de datos para los usuarios anónimos. Fui un
#
poco drástico jeje (2kb/s)
anon_max_rate=2048


Configuración de 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


Configuraciones relacionadas a Transferencias:

# 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

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:

superserver:/ #service vsftpd start

y si todo salió según lo planeado deberá aparecer una línea que indique que el servicio se inició correctamente:

Starting vsftpd done

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.

Habilitación del Servicio en el Firewall

Servicio vsftpd autorizado en el firewall.

Habilitación de los Puertos en el Firewall

Rangos de puertos para conexiones pasivas autorizados en la ventana

de Opciones Avanzadas.


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.

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”

superserver:/etc/vsftpd # touch logins.txt

le establecemos permisos de lectura y escritura solo para el usuario root con el comando:

superserver:/etc/vsftpd # chmod 600 logins.txt

y le agregamos un contenido similar a:

user_gabriel
pass_gabriel
user_jorge
pass_jorge

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 jorge y que sigue el mismo procedimiento que las 2 primeras líneas (Arriba login y abajo la contraseña). 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

le asignamos el permiso de ejecución al archivo “generar_db.sh”:

superserver:/etc/vsftpd # chmod 700 generar_db.sh

y luego ejecutamos el script:

superserver:/etc/vsftpd # ./generar_db.sh

Con esto creamos el archivo “vsftpd_login.db” en el directorio /etc/vsftpd/, listo para ser utilizado.

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. OBS: 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.

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

Guardamos los cambios del archivo vsftpd.conf y creamos el directorio indicado en la directiva “user_config_dir” dentro de la carpeta /etc/vsftpd/:

superserver:/etc/vsftpd # mkdir config_por_usuario

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.

superserver:/etc/vsftpd/config_por_usuario # touch gabriel jorge

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
# Le damos permisos de escritura para su directorio personal.
# Edición 09/08/2009: Esta directiva 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 “jorge”, obviamente indicando otro directorio personal. Ahora solo nos resta crear los directorios personales para ambos usuarios virtuales (gabriel y jorge) en el directorio /srv/ftp/, cambiarlos de dueño y asignar los permisos correspondientes:

superserver: # cd /srv/ftp
superserver:/srv/ftp # mkdir gabriel jorge
superserver:/srv/ftp # chown -R ftp:ftp gabriel
superserver:/srv/ftp # chown -R ftp:ftp jorge
superserver:/srv/ftp # chmod -R 744 gabriel
superserver:/srv/ftp # chown -R 744 jorge

El siguiente paso es activar nuevamente el servicio (service vsftpd start) 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.

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 por personas con malas intenciones o simplemente curiosos mediante el escaneado de paquetes que circulan a través de la red. Para evitar estos casos, se puede activar la encriptación de paquetes utilizado ssl para tener un servicio ftp seguro (ftps).

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:

superserver:/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.

Para el siguiente paso paramos el service ftp en el caso de que lo tengamos corriendo (service vsftpd stop) y 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 usuarios 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
# Se especifica la ubicación del Certificado Generado.
rsa_cert_file=/etc/ssl/certs/vsftpd.pem

Por ultimo iniciamos nuevamente el servicio vsftpd (service vsftpd start) y probamos establecer conexiones seguras utilizando clientes que soportan esta funcionalidad como ser los clientes FilleZilla, gfTP, etc.

Edición 09/08/2009 OBS: 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)

ENLACES

Sitio Web de Vsftpd: http://vsftpd.beasts.org/

Completa Lista de Directivas para el archivo vsftpd.conf: http://vsftpd.beasts.org/vsftpd_conf.html

Pueden descargar el manual en formato PDF AQUI!
Espero que sea de su agrado y a la vez de mucha utilidad.

Saludos.

47 comentarios para "Manual para configurar un Servidor FTP con Vsftpd en openSUSE"

[...] vsftpd |   Para todos aquellos que leyeron el manual sobre el servicio ftp del post anterior, en este post voy a anexar una configuración que me habían consultado, que consiste en cambiar el [...]

Magnífico manual !!!

Una pregunta … cómo podría separar los logs por usuarios ??
De forma que se genere un fichero log por cada usuario que acceda al sistema.

Muchas gracias y enhorabuena.

Hola, antes que nada te agradezco por visitar mi bitácora, con respecto a tu pregunta, la realidad es que yo particularmente no tengo idea de como hacer eso, pero te cuento que el archivo log que se genera contiene toda esa información, si miramos el contenido del archivo /var/log/vsftpd.log tenemos lo siguiente:

Fri Apr 11 17:25:45 2008 [pid 13539] [gabriel] OK LOGIN: Client "127.0.0.1"
Fri Apr 11 17:25:31 2008 [pid 13536] [ygkw] FAIL LOGIN: Client "127.0.0.1"
Wed Apr 23 07:40:09 2008 [pid 3102] [es] FTP response: Client "127.0.0.1", "331 Please specify the password."
etc. etc.

Tanto “gabriel”, “ygkw” y “es” son usuarios que operaron con el servicio ftp y son perfectamente identificables, solo es necesario filtrar el archivo vsftpd.log, si queremos saber por ejemplo las operaciones del usuario gabriel, podemos ejecutar el siguiente comando:
superserver:/var/log # cat vsftpd.log | grep gabriel

Un problema: Ya lo instale y configure pero quiero conectarme a el servidor desde otra maquina (especificamente Windows XP) conectadas, pero me dice que no se puede conectar… que puede ser? o como hago esto?
Gracias por tu tiempo.

Hola Joha, mmm, la verdad es que has dado poca información, como primer dato deberías saber si tu servidor ftp funciona y eso lo podes verificar muy fácilmente escribiendo en la barra de direcciones de konqueror o firefox de tu servidor la línea ftp://localhost o si tenes algún usuario definido sería ftp://nombre_usuario@localhost, si hubo respuesta significa que funcionó sin problemas, también deberías verificar que los puertos del servicio están abiertos en el firewall de tu server, comprueba que desde tu máquina windows ves al servidor (con el comando ping ip_servidor desde cmd) para saber si no tienes un problema con tu red. Si verificaste que tu servidor funciona y que desde windows puedes verlo, desde el Explorer de Windows deberías poder acceder colocando en la barra de direcciones la ruta ftp://ip_del_servidor, ahh, no te olvides de verificar que no te esté bloqueando algún firewall o software de seguridad instalado en windows.

Espero que te haya sido de ayuda. Saludos.

HOLA, DEJAME FELECITARTE EXCELENTE TUTORIAL…QUISIERA HACERTE UNA PREGUNTA ES Q YO QUIERO HACERLO PERO Q LOS USUARIOS SE AUTENTIQUEN EN UNA BASE DE DATOS MYSQL, Q DEBO DE INSTALAR PARA PODERLO HACER… Y LA OTRA PREGUNTA ESTOY TRBAJANDO CON LINUX SUSE 10 DONDE ENCUENTRO LOS PAQUETES ADICIONALES Q NUMBRASTE HAY COMO SON LOS db-utils y pam. MUCHAS GRACIAS POR TU APOYO

Hola Oscar, antes que nada gracias por visitar mi bitácora, con respecto al primer punto te comento que yo no he llegado a configurar el vsftp para que busque autenticar los usuarios contra una base de datos MySQL, sin embargo, como en el tutorial ya especifiqué como utilizar usuarios virtuales autenticados con una base de datos db (Berkeley Database), posiblemente lo único que va a cambiar es que vas a tener que crear tu base de datos en mysql y cambiar la cadena de conexión y autenticación especificada en el archivo /etc/pam.d/vsftpd, el resto de las configuraciones en vsftp no creo que cambien, estuve mirando en google por este caso y encontré un ejemplo interesante en esta dirección: http://www.niraj.info/vsftpd-mysql, ahora solamente no tengo tiempo para probarlo pero más adelante lo intentaré para incluirlo en le manual.

Con respecto a los paquetes, creo que esos deberían estar en los CD’s de instalación de SUSE, deberías buscar desde el Yast para ver si los tenes instalado, pero si por algún otro motivo necesitas más paquetes, en esta URL http://es.opensuse.org/Repositorios_adicionales_para_Yast encontrarás muchos repositorios online para tu Suse 10.

Espero que te sirva.
Cordiales Saludos,

Gabriel K.

Agradecimiento

al leer este manual cumpli satisfactoriamente la instalacion de mi server vsftpd en linux opensuse 10.3, en realidad solo tuve que seguir los pasos, claro habia que leer bién ya que decian por alla que estaba incompleto , pero pues todo salio bien.

gracias por la aportacion

por si quieren una copia de mi archivo de configuracion lo puedo pasar

vsftpd.conf

nirvalik-_-@..

Hola Wilbert,

Me alegra que el manual haya sido de ayuda, yo no solo lo utilizo para la versión 10.3, los pasos son los mismos (o similares) por lo menos en la versión 11.0 de openSUSE.

Saludos Cordiales..

muy buen tuto, ya lo tenia trabajando el servidor pero me sirvio para corregir un error con los usuarios virtuales que era que cuando subian un archivo ya no lo podian eliminar aun teniendo todos los permisos de escritura, era que me faltaba ponerle la opcion virtual_use_local_privs a YES en las configuraciones para cada usuario virtual. Un saludo y feliz año nuevo.

Hola Mauro, gracias por comentar y feliz año nuevo para vos también.

Saludos.

excelente manual compañero, yo estoy empezando a visualizar las opciones de Opensuse 10.1 en un AMD athlon 800 y comparandolas con las de Solaris 10 ya que trabajo es en Solaris, me parece muy comodo de trabajar y de corregir inestabilidades de los servicios al momento de bajar y subirlos. Sigue generando ideas para implementar soluciones en ambiente libres. felicitaciones y Feliz Año nuevo 2009

Hola Yexil, gracias por pasar por aquí, te recomiendo utilizar una versión más nueva de OpenSUSE ya que la 10.1 según comentarios no fue buena, además que la misma ya se encuentra des-soportada, con respecto a generar ideas me gustaría probar otros tantos servicios que tengo en mente, como el que explayo en el último artículo que escribí ya hace tiempo, pero el problema es la “disponibilidad de tiempo”, enemiga de todo investigador desinteresado jeje.

Saludos.

este manual igual me puede servir para la version 11.1 de OpenSUSE? tengo que crear un servidor ftp para esta version es un trabajo para la escuela. me podria proporcionar algunos tips gracias.

necesito ayuda para hacer un servidor ftp en OpenSUSE 11.1 me podrian ayudar? gracias

Hola Josue, debería funcionar, aunque aún no lo he probado con la versión 11.1. Con la versión 11.0 de openSuse yo no tuve ningún problema, los pasos son exactamente los mismos, y no creo que la 11.1 sea la excepción.

Primero te recomiendo probar la configuración Básica de mi tutorial, poner en funcionamiento el servidor VSFTP y utilizarlo para ver como funciona, es de lo más simple, después podes agregarle las funcionalidad de usuarios virtuales y conexiones seguras mediante SSL que son opcionales si es que las necesitas, porque como te dije con la configuración básica ya vas a tener un servidor FTP corriendo.

Saludos.

Buenas tardes Gabriel, gracias por este manual que esta buenisimos. Mira te queria consultar una caso. Me esta funcionando el Ftp, pero ala hora de querer validar un usuario no lo esta haciendo que paso estare cometiendo el error 530 login incorrect.

Te agradecere una ayuda mas…

Saludos y gracias

Ivan Rivera

Hola Gabriel gracias nuevamente por el tiempo que me ahorraste en google con este manual. Ya resolvi el problema todo esta funcionando correctamente.

Slds

Hola Ivan, que bueno que el manual te haya servido, saludos y gracias por tu comentario.

Hola. Algún manual, tutorial o algo para montar un servidor de correo electrónico en openSuSE 11.1???????
Por favor ayúdenme.

Hola Edrey, la configuración de un servidor de correo electrónico sobre Linux es algo que tengo pendiente en esta vida, en ESTE enlace (quizas ya lo conozcas) de forosuse.org, tratan acerca de ese tema y pasan algunos enlaces hacia documentos muy interesantes. Espero que haya sido de ayuda…

Saludos.

excelente how-to!!!, muchas gracias!

Hola Gabriel, me pasa el mismo problema que le pasaba a Ivan, pero no he encontrado la solución, me da un mensaje de error:

530 Login incorrect
Error al iniciar la sesión.

Alguna idea?

Muchas gracias.

Hola, lastimosamente Ivan no aclaró cual fue la solución a su problema o cual había sido su error, de todos modos me gustaría saber más datos acerca de tu configuración, ¿¿has hecho una configuración básica nada mas?? implementaste el uso de usuarios virtuales ya?? están correctamente abiertos los puertos en el firewall?? Que versión de opensuse utilizas?

Saludos…

Hola Gabriel,

Gracias por responder.
Hice una instalación standard sin usuarios virtuales, y el firewall lo tengo desactivado para hacer las pruebas, y no tengo una versión de opensuse, tengo un Red Hat 5; entendia que debia funcionar sin necesidad de utilizar los usuarios virtuales, pero voy a probar de configurarlo a ver que tal…

Saludos!!

Bueno, lo mejor es tratar de solucionar el inconveniente con la configuración básica, ya que es más fácil detectar los errores, lo más probable es que sea algún detalle en el archivo de configuración, si quieres publicar aquí el contenido del archivo vsftpd.conf (eliminando todos los comentarios, solo dejando las directivas) para analizarlo no hay ningún problema.

Por otro lado, con que usuario trataste de conectarte al servidor?

saludos..

Seguí al pie de la letra las instrucciones, y momento de hacer la prueba desde un cliente, obtento lo siguiente:

C:\>ftp 10.14.1.223
Connected to 10.14.1.223.
Connection closed by remote host

Es decir que no se conecta. Las pruebas se hacen desde un cliene con FTP, y el servidor tiene SUSE10

Hola Mario, me gustaría saber hasta que punto del manual llegaste para hacer esa prueba, ¿es solo con la configuración Básica? ¿o ya tenes configurado el servicio con usuarios virtuales? si tu configuración es la última sería interesante que pruebes solamente con la configuración básica del manual, para reducir los posibles puntos de fallo y facilitar la identificación del problema…

Saludos.

Gracias, revisé de nuevo y de acuerdo a la configuración básica funcionó perfectamente. Lo haré ahora para los usuarios virtuales, si llego a tener algún problema te lo hago saber.

Saludos,

Ok, que tengas éxito.

Saludos.

hola como estas?

Arriba vi que para probar que sii todo estaba bien poniamos en el navegador ftp://localhost verdad? tambien probe por consola y antes me pedia autetificacion pero ahora nada pongo ftp://localhost en la consola y me sale no se encuentra el archivo o directorio pero en el navegador no tengo problemas que puede ser?

Bueno gracias por tu tiempo y sigue adelante !!

Hola Pedro,

Disculpame, acabo de ver tu mensaje entre el Spam jjeje, bueno, también puedes probar con ftp://127.0.0.1 o directamente con la ip de tu server ftp://ip_servidor (con el servicio vsftpd habilitado en el firewall), sin embargo, de esta forma estás tratando de acceder al directorio dedicado a los usuarios anónimos y por ello debes tener configurado esta opción en tu vsftpd.conf, si quieres conectarte con un usuario utiliza ftp://nombre_usuario@ip_servidor, ftp://nombre_usuario@localhost, etc.

Saludos.

Saludos. Gracias por este manual. Pero tengo un problema, configure los usuarios virtuales y todo tal cual lo pusiste, al momento de hacer la prueba puedo ingresar correctamente con el primer usuario que pongo en el archivo de logins.txt, pero al momento de ingresar con otro usuario me sale:

530 Login incorrect.
Login failed.

he revisado todo y esta bien configurado, es como si no reconociera mas allá de los datos del primer usuario. Cuando cambio este usuario y modifico lo correspondiente a directorios y rutas funciona, pero jamas me toma los usuarios que estén después registrados después de este. Gracias.

Hola Felipe, la verdad que no tengo idea de porqué sucede eso, hace tiempo que no pruebo usar usuarios virtuales, cuando tenga un poco de tiempo voy a hacer la prueba en openSUSE 11.1 y te dejaré un comentario aquí al respecto.

Saludos.

Hola Gabriel,
Excelente manual, me ha sido de mucha utilidad.
Utilizo Red Hat 5 y ya configuré mi ftp con usuarios virtuales y lo hice siguiendo paso a paso el manual. Me conecto sin problemas al ftp desde cualquier PC de la red pero aún no me deja subir ni bajar archivos cuando lo intento me da el siguiente error:
a la hora de subir:
550 Permission denied.
: /test1/archivo.txt

cuando quiero bajar alguno:
550 Failed to open file.
: /test1/ftpusers

a continuación te posteo los resultados de una conect y el ls -ld para ver las propiedades de los directorios.

Connected to 192.168.132.71.
220 Bienvenido al servicio de FTP con uso de usuarios Virtuales.
User (192.168.132.71:(none)): test1
331 Please specify the password.
Password:
230 Login successful.
ftp> ls -ld
200 PORT command successful. Consider using PASV.
150 Here comes the directory listing.
drwxr-xr-x 2 0 0 4096 Jul 22 07:50 pub
drwxrwxrwx 2 501 501 4096 Jul 22 08:03 test1
drwxr–r– 2 501 501 4096 Jul 22 08:03 test2
226 Directory send OK.
ftp: 187 bytes received in 0.00Seconds 187000.00Kbytes/sec.

mis ficheros de configuracion son:

#vsftpd.conf
anonymous_enable=NO

local_enable=YES

write_enable=NO

local_umask=022

anon_upload_enable=NO

anon_other_write_enable=NO

anon_mkdir_write_enable=NO

anon_world_readable_only=NO

dirmessage_enable=YES

xferlog_enable=YES

connect_from_port_20=YES

#chown_uploads=YES

#chown_username=whoever
local_root=/var/ftp

xferlog_file=/var/log/vsftpd.log

xferlog_std_format=YES

ftpd_banner=Bienvenido al servicio de FTP con uso de usuarios Virtuales.

chroot_local_user=YES

listen=YES
guest_enable=YES

guest_username=virtual

pasv_min_port=30000

pasv_max_port=30999

user_config_dir=/etc/vsftpd/users

pam_service_name=vsftpd.pam

userlist_enable=YES

tcp_wrappers=YES

#vsftpd.pam
auth required /lib/security/pam_userdb.so db=/etc/vsftpd_login
account required /lib/security/pam_userdb.so db=/etc/vsftpd_login

#ftpusers
root

bin

daemon

adm

lp

sync

shutdown

halt

mail

news

uucp

operator

games

nobody

#user_list
root

bin

daemon

adm

lp

sync

shutdown

halt

mail

news

uucp

operator

games

nobody

Si necesitas algo más me dices… Ah lo olvidaba el firewall lo tengo detenido para las pruebas…

Mis saludos y gracias de antemano…

Me faltó poner el archivo de configuración del usuario en cuestión (test1) que se encuentra en el directorio /etc/vsftpd/users con el nombre del usuario.

#test1.txt
dirlist_enable=YES

download_enable=YES

local_root=/var/ftp/test1

write_enable=YES

anon_world_readable_only=NO

Hola Yoelkys, me estuve fijando en tus configuraciones, si bien no he controlado todo por la falta de tiempo, te recomiendo probar de cambiar la directiva write_enable=YES en el vsftpd.conf, por otro lado me estuve fijando en la directiva guest_username=virtual también del vsftpd.conf, ¿este usuario virtual es un usuario de sistema o un usuario normal? ¿es dueño o tiene los permisos adecuados de los directorio de cada usuario virtual en /var/ftp/? en mi tutorial yo tenía asignado a esa directiva el usuario de sistema ftp que es dueño del directorio /var/ftp y al parecer, según estuve verificando en uno de los servers con RedHat 4 U6 que administro tiene el mismo usuario ftp también.

Por otro lado veo en tu archivo test1.txt varias lineas que no aparecían en mi manual (las desconozco totalmente y ahora lamentablemente no tengo tiempo para investigar), la directiva virtual_use_local_privs=YES tampoco la veo en ese archivo.

Una duda que tengo es si ya has probado configurar el servicio lo más parecido posible a mi manual para verificar que funcione en RedHat al igual que en openSUSE, a veces las configuraciones varían un poco de una distro a la otra, pero supongo que debería funcionar igual, quizás así podrías hacer que funcione correctamente y luego realizar las modificaciones y/o ajustes que necesites.

Saludos.

Gracias por resonder tan rápido. Cambié la directiva write_enable=YES en vsftpd.conf tal como me dijiste. El usuario virtual es usuario del sistema que tiene como home directory /var/ftp con sus permisos, lo cree con el proposito de usarlo para los usuarios virtuales, no obstante voy a cambiarlo y pongo el resultado. Gracias por el consejo voy a comentar las directivas que no están en tu manual y luego comento el resultado.
Bueno, saludos en un rato estoy de vuelta por tu bitácora.

Hola otra vez, Aqui te dejo mi configuración:

#vsftpd.conf

write_enable=YES
dirmessage_enable=YES

ftpd_banner=Bienvenido al servicio de FTP con uso de usuarios Virtuales.

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

anonymous_enable=NO
anon_world_readable_only=YES
anon_upload_enable=NO
anon_mkdir_write_enable=NO
anon_other_write_enable=NO
anon_max_rate=5120

xferlog_enable=YES
xferlog_file=/var/log/vsftpd.log
log_ftp_protocol=YES

connect_from_port_20=YES
idle_session_timeout=600
data_connection_timeout=120
pasv_enable=YES

pam_service_name=vsftpd.pam
listen=YES

max_clients=5
max_per_ip=3

pasv_min_port=40000
pasv_max_port=40020

guest_enable=YES
guest_username=ftp
user_config_dir=/etc/vsftpd/users

#vsftpd.chroot_list

root
bin
daemon
adm
lp
sync
shutdown
halt
mail
news
uucp
operator
games
nobody

#test1.txt que se encuentra en /etc/vsftpd/users

local_root=/var/ftp/test1
write_enable=YES
virtual_use_local_privs=YES

#vsftpd.pam en /etc/pam.d

auth required /lib/security/pam_userdb.so db=/etc/vsftpd_login
account required /lib/security/pam_userdb.so db=/etc/vsftpd_login

Sigue sin dejarme bajar ni subir archivos. Cambié para el usuario ftp y cree los directorios de los usuarios virtuales y le dí los permisos segun el manual. Además de organizar los ficheros de configuración según el orden del manual para mejor entendimiento. Te agradezco el esfuerzo que haces y te doy muchas gracias por todo. Aunque no encuentres que es lo que estoy haciendo mal he aprendido mucho de tu trabajo.
Saludos y hasta pronto.

Lamento la tardanza, me parece raro que te permita conectarte con un usuario pero que no permita descargar ni subir archivos, eso suele pasar cuando en el firewall no se habilitan los puertos para el servicio pasivo (puerto 40000 al 40020 según tu configuración), fijate que tus directorios testn tengan como permisos 755.

Por otro lado que cliente utilizaste para conectarte? el cliente ftp filezilla te da buena información acerca de la conexión, quizás con ella puedas detectar el problema.

En fin, por el momento no me viene nada más a la mente, ya que hace rato probé toda la configuración en un openSUSE 11.1 tal cual como está en el manual y funcionó sin problemas.

Saludos.

Hola Gabriel

yo tambien tengo problemas, pero tranquilo es normal en mi :-D

pero te comento una duda. yo tengo open suse 11.1 x64 asi que estas lienas las e cambiado como dices en el manual:

#vsftpd.pam en /etc/pam.d

auth required /lib/security/pam_userdb.so db=/etc/vsftpd_login
account required /lib/security/pam_userdb.so db=/etc/vsftpd_login

a:

#vsftpd.pam en /etc/pam.d

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

pero mi duda es si esta bien el nombre “vsftpd_login” o deberia ser “vsftpd_login.db”?

e probado de las dos formas pero aun haciendo “server vsftpd force reload” pero nada!

voy a dejar todo como estaba y a volverlo a intentar gracias!

Hola Mirasu,

Según mis pruebas se que funciona sin agregarle la extensión a la definición del archivo, ya que según tengo entendido es reconocido porque se define el tipo de base de datos antes de del símbolo igual (=) y que es “db=archivo base de datos”.

Si te interesa utilizar MySQL para almacenar las contraseñas de tus usuarios vsftpd puedes leer este artículo, claro, que lo mejor es que te quede claro este método que utiliza base de datos Berkeley.

Un abrazo.

muchas gracias por tu tiempo y dedicacion

Gracias por tu comentario. Saludos

Excelente manual, pues te comentare que mi servidor FTP, lo tengo en una IP local, y pues lo que quiero, es que equipos fuera de mi red también puedan acceder a él. ¿Como podría configurar mi Firewall para hacer el enmascaramiento o el re direccionamiento desde las IP publicas hacia la IP privada, teniendo en cuenta que no poseo una Zona Desmilitarizada aún?. Gracias

muchas gracias por tomarse el tiempo de elaborar tutoriales y tambien por responder todas las inquietudes que tenemos. Hasta la fecha configure mi server FTP me conecte desde un XP y puede entrar al directorio home con el usuario que me autentique porque solo he permitido que usuarios autenticados tengan FTP, lo que quiero hacer y no puedo es que en el mismo servidor tengo mi servidor Web y en /srv/www/htdocs tengo mis paginas web y necesito que un usurio (cmined) tenga acceso a esa carpeta para subir y bajar las paginas nuevas pero quiero que solo ese usurio tenga acceso completo a esa carpeta y los demas a las carpetas “home”, pense hacerlo con los usuarios virtuales pero no me funciono, no se si con la configuracion de los usuarios virtuales pueda resolver mi problema si asi es talves me puedes dar una idea, si necesitas el archivo de configuracion me dices y tambien me indicas cual es que quieres

Hola, excelente tu manual. Estuve haciendolo paso a paso en la version 10.2, pero cuando termino la configuración básica y voy a l firewall para autorizar el servicio vsftpd, no me aparece esta opción por ningún lado… Sale la posibilidad de habilitar servidor DNS, servidor TFTP, servidor LDAP, entre otros, pero “servidor vsftpd” no me aparece en ningún lado para habilitarlo en el firewall…

Sabes que puede estar pasando?

Escribe un comentario

cc - by cc cc

Bienvenidos!

Muchas gracias por visitar este pequeño espacio que a medida que pasa el tiempo va cobrando vida y forma, encontrarán mucha información acerca de mi pasión que es la Informática, como así también de mi trabajo y de mi vida personal, espero que les guste! Saludos.

Gabriel K.

Correo Electrónico

Para cualquier consulta, sugerencia, críticas, etc., pueden enviar un correo a:

La imágen

Ídolos: Adam y Jamie de Mythbusters

Ídolos: Adam y Jamie de Mythbusters

Calendario

Marzo 2008
D L M X J V S
    Abr »
 1
2345678
9101112131415
16171819202122
23242526272829
3031  

Categorías

Visitas

  • 34,955

Fotos Flickr

openSUSE v11.1 con KDE v4.2.4

Un fin de semana por Cnel. Oviedo

More Photos

Tira Ecol