Entre sus características más interesantes encontramos:
- Servidor rápido, estable y seguro
- Configuración sencilla
- Soporte de usuarios anónimos, registrados y virtuales
- Soporte para virtual hosts
- Ejecución independiente o mediante (x)inetd
- Soporte IPv6 y SSL
- Límites por usuario, conexión y ancho de banda
- Instalación
$ sudo apt-get install vsftpd
El propio proceso de instalación se encarga de crear el usuario no privilegiado ftp, crear el directorio /home/ftp (donde colocaremos los archivos disponibles para el acceso anónimo) y arrancar el servicio.
Nota: En caso de tener un firewall instalado no olvides que deberás abrir el puerto 21 (si no sabes como hacerlo consulta el artículo Administración del firewall con firestarter), además si conectas a internet a través de un router y pretendes dar acceso al servidor de ficheros desde el exterior deberás redireccionar el puerto 21 en la configuración del router (revisa la documentación de tu modelo de router si no sabes como hacerlo).
Podemos comprobar que el proceso ha funcionado apuntando nuestro navegador o cliente de ftp favorito a la dirección ftp://localhost o ftp://127.0.0.1, en caso de acceder desde un ordenador remoto deberemos usar nuestra IP privada (si conectamos desde dentro de una red local) o nuestra IP pública (si conectamos desde Internet):
Firefox conectado a nuestro servidor de ftp
Nota: no muestra ningún archivo porque aun no he colocado nada en el directorio /home/ftp
- Configuración
$ sudo nano /etc/vsftpd.conf
Y una vez hechos los cambios reiniciaremos el servicio con la orden:$ sudo /etc/init.d/vsftpd restart
Veamos ahora como cambiar la configuración por defecto para dejar el servicio a nuestro gusto con algunos ejemplos.
- Acceso anónimo
Para permitir el acceso anónimo editaremos el archivo de configuración y nos aseguraremos de que contiene la linea:
anonymous_enable=YES
Para denegar el acceso anónimo editaremos el archivo de configuración
y nos aseguraremos de que contiene la linea:anonymous_enable=NO
- Acceso privado
Para permitir el acceso privado editaremos el archivo de configuración
y nos aseguraremos de que contiene la linea:local_enable=YES
Para denegar el acceso privado editaremos el archivo de configuración
y nos aseguraremos de que contiene la linea:local_enable=NO
Una vez activado el acceso privado apuntaremos nuestro navegador o cliente de ftp a la dirección ftp://usuario:clave@localhost o ftp://usuario:clave@127.0.0.1, en caso de acceder desde un ordenador remoto deberemos usar nuestra IP privada (si conectamos desde dentro de una red local) o nuestra IP pública (si conectamos desde Internet):
- Seguridad
Para evitar que los usuarios registrados puedan salir de su directorio $HOME y navegar así por todo el sistema de ficheros editaremos el archivo de configuración y nos aseguramos de que contiene la linea:
chroot_local_user=YES
Limitar el numero máximo de conexiones simultaneas (para evitar ataques DoS) editaremos el archivo de configuración y nos aseguramos de que contiene las lineas:
listen=YES
max_clients=10
Impedir que los usuarios puedan enviar archivos a nuestro servidor (opcion activada por defecto), editaremos el archivo de configuración y nos aseguramos de que contiene la linea:
write_enable=NO
Cambiar el puerto por el que escucha el servicio puede ayudar a evitar ataques automatizados e intrusos poco experimentados, para cambiarlo y usar por ejemplo el puerto 50 editamos el archivo de configuración y añadimos:
listen_port=50
- Modo de ejecución
Para establecer el servicio en modo Standalone (recomendado) editaremos el archivo de configuración y nos aseguramos de que contiene la linea:
listen=YES
Para establecer el servicio en modo xinetd comentaremos la linea anterior de manera que quede así:#listen=YES
Y crearemos el archivo de configuración de xinetd para el servicio de ftp /etc/vsftpd.xinetd con este contenido:
# Configuración para el servicio FTP
service ftp
{
disable = no
socket_type = stream
wait = no
user = root
server = /usr/sbin/vsftpd
per_source = 5
instances = 200
no_access = 192.168.1.3
banner_fail = /etc/vsftpd.busy_banner
log_on_success += PID HOST DURATION
log_on_failure += HOST
}
# Fin del servicio FTP
- Más información
http://www.guia-ubuntu.org/index.php?title=Servidor_de_FTP
- Artículos relacionados
no comentas nada sobre cambiar el puerto, creo que se puede configurar otro puerto que no sea el 21.Más que nada por seguridad.
ResponderEliminarGracias
@Cartas a Ubuntu gracias por el aporte, ahora mismo lo añado en el apartado de seguridad.
ResponderEliminarpara variar, otro post muy útil! gracias!
ResponderEliminarMuy bueno y clarificador.
ResponderEliminarGracias y un saludo
Muchas gracia muy util pero si quiero añadir un usuario y adrle su carpeta con su s archvios como lo debo hacer por que de la manera que explicas es para usuarios anonimos no ? yo quisiera tener un par de usuarios privados y darles permisos en sus propias carpetas, pero no se como debo hacerlo.
ResponderEliminarUn saludo.
@dinpel en el momento en que creas los usuarios (de manera normal) en el servidor ya tienen acceso a su home, al que pueden entrar con su nombre de usuario y contraseña.
ResponderEliminarGracias fosco. Soy un poco novato en el tema y no sabia como tenia que crear los usuarios para el server. Y que permisos aplicarles. Un saludo, Y gran Blog te sigo cada lunes.
ResponderEliminarP.D. A parte de todo esto. Te quería hacer una petición, si pudedes claro esta, seria publicar las funciones de poder descargar una web con el comando wget y maneras de poder descargar webs, que se actualizan y solo poder descargar lo que actualiza la web, cosa que no e conseguido hacer funcionar y me descarga toda la web de nuevo. Ya que últimamente me estoy descargando algunas para leerlas offline.Pienso que seria una entrada interesante. Un saludo y gran blog.
@dinpel: apunto el tema wget para un futuro artículo. Gracias por el aporte.
ResponderEliminarSería bueno recordar también que con la IP pública no se puede acceder desde las máquinas de la red privada...te redirecciona al router (tengo que investigar más :P)
ResponderEliminarGenial tuto! Mil gracias por el aporte.
la ultima parte de xinetd esta todo mal
ResponderEliminarLa parte del xinetd está bien, lo acabo de revisar, si algo no te funciona pon los errores exactos que ves o los síntomas e intentaremos arreglarlo
ResponderEliminarLo instalé y no me creó el usuario ftp ni su directorio en el home.
ResponderEliminar¿y ahora?
Seguramente si no lo hizo es porque no se instaló bien, revisa bien que el paquete está instalado y configurado completamente (te recomiendo sudo aptitude reinstall vsftpd)
ResponderEliminarSi sigue sin hacerlo puedes crear el usuario manualmente desde Sistema - Administración - Usuarios y grupos
Ya me dirás si te sirvió
@fosco_ Hola de nuevo, sabes, repentinamente mi servidor empezó a funcionar... sin embargo, me pregunto si no es una cuestión de límite de usuarios.
ResponderEliminarSi mi número de usuarios que edité en /etc/vsftpd.conf es 'max_clients=7' ¿cómo sabe el servidor que uno de ellos se desconectó y puede accesar otro en su lugar? en concreto: ¿cómo finalizo correctamente mi sesión en el servidor?
@AL-X-OR: hay dos formas de finalizar una conexion ftp:
ResponderEliminar1) si usas un cliente específico de ftp puedes enviar la orden de desconexión con lo que se cierra la sesión y se da de "baja" al usuario
2) si usas un navegador esta opción no es posible y entra en juego el timeout: pasado un tiempo estipulado en el servidor sin actividad por parte del cliente automaticamente se corta la conexion.
@fosco_ Muchas gracias, revisaré el archivo de configuración, mi idea es que todos mis usuarios puedan conectarse directamente desde una carpeta tecleando la ip en la barra de direcciones para evitar que instalen un cliente FTP; que todo sea 'Drag and Drop' ;)
ResponderEliminar1) Muy bueno y claro. Gracias por el tiempo que te tomás
ResponderEliminar2) Preguntas:
2.1) Yo quiero acceder yo (sólo) a la máq que está en la oficina, por lo que hice los sigtes cambios en el /etc/vsftpd.conf
- saqué el acceso anónimo
anonymous_enable=NO
- puse acceso privado
local_enable=YES
- chroot_local_user lo dejé comentado, como esaba
- para que no arranque solo siempre (por cuanto que es muy esporádico cuando vaya a sacar archivos)
#listen=YES
- para mayor seguridad
listen_port=51
- para que no haya nadie más que yo
max_clients=1
Resultado:
Al principio me andaba (lo probé localmente con el firefox, apuntando a ftp://localhost)
Luego hice el restart
Siguió andando como antes (yo esperaba que empiece a contestar en ftp://localhost:15)
Reinicié la PC y ahora no anda, ni en ftp://localhost, ni en ftp://localhost:51
2.2) No entiendo el archivo /etc/vsftpd.xinetd
qué es no_access = 192.168.1.3?
Muchas gracias
Sergio
@de La Pampa a Jerusalem: a ver si puedo responder a tus 2 preguntas.
ResponderEliminar1. asegurate de que el demonio xinetd está funcionando, tiene pinta de que no lo tienes.
2. no_access = 192.168.1.3
Esta linea significa que xinetd negará el acceso a la IP 192.168.1.3
@fosco_ Hola, tengo una duda, mis usuarios tienen acceso al servicio mediante la barra de direcciones de windows, pero he notado una falla de seguridad.
ResponderEliminarHay usuarios que se loguean y se mantienen logueados por tiempo indefinido, hay otros que a los 5 minutos son expulsados, ya modifiqué los valores de 'idle_session_timeout=900' (supongo que son segundos) y 'data_connection_timeout=900' después apliqué 'service vsftpd restart' y 'sudo /etc/init.d/vsftpd restart' Sin embargo el problema persiste... hay algúna manera de que el usuario haga logout??.
De antemano gracias
Muy bueno y bien explicado, el instalar y configurar un server FTP. Este Blog habrá que añadirlo a favoritos, excelente. Quizás haber profundizado un poco mas en mas detalles de la configuración y creación de usuarios.
ResponderEliminar@BRuiXo gracias, de haber profundizado más en la creación de usuarios ya no habría podido llamarse "Montar un servidor de archivos en 10 minutos: vsftpd", se llamaría "Montar un servidor de archivos en 5 o 6 días" :-)
ResponderEliminarmuy buen post viejo me sirvio mucho y en menos de 5 minutos para montarme uno de emergencia... ahora solo le me falta montarle el ssl
ResponderEliminarHola amigo, solicito su ayuda por lo siguiente, ya hice la instalación en canaima3 que es una metadistribucion basada en debian, me creó el usuario ftp pero no el directorio, ejecute el comando ftp://127.0.0.1/ en el navegador y si me aparece el ïndice vacío, mi pregunta es si no tengo el directorio /home/ftp creado en que directorio debo colocar los archivos para compartirlos, o que debo hacer? gracias de antemano!
ResponderEliminar@Pedro M Ramírez S el directorio donde van los archivos debe estar indicado en el archivo de configuración /etc/vsftpd.conf
ResponderEliminarSi debian no usa /home/ftp quizá use /var/ftp o algo parecido.
esto es una mierda que te cagas!
ResponderEliminar@Anónimo, vaya, me ha sorprendido la rotundidad de tu comentario. Ya que eres tan sincero podrías aclarar a qué te refieres exactamente? Te refieres al vsftpd? al artículo? al blog en si mismo? a la realidad socioeconómica del pais?
ResponderEliminarUna crítica de ese calibre merece al menos una explicación, un saludo.
Excelente, gracias por el aporte, tendre que probarlo.
ResponderEliminarNuevamente se Agradece el esfuerzo por compartir conocimientos
Una buena forma de hacerlo es con esta aplicación en PHP:
ResponderEliminarhttp://www.segelsoft.com/2012/07/09/crear-un-sistema-de-alojamiento-de-archivos-tipo-megaupload/
Es muy configurable, lo que desconozco es si tienes algún fallo de seguridad en el logueo y demás. Yo he probado a inyecctar SQL y no cuela. Si alguien sabe alguna similar que lo ponga porfa.
Hola. soy nuevo en esto de los servidores FTP, mi pregunta es: como agrego usuarios y sus paswords al servidor, que archivo hay que modificar para eso???
ResponderEliminar@nahual hay varias formas de tener usuarios en el servicio FTP.
ResponderEliminarUna manera es dar de alta los usuarios en el servidor de manera normal, como cualquier otro usuario. Si no se quiere que ese usuario pueda hacer login en el sistema basta con cambiar su shell por /bin/false en el archivo /etc/passwd
La otra manera es crear usuarios virtuales en el servicio FTP, esto ya depende de cada servidor de FTP, te recomiendo que leas detalladamente la documentación del servidor FTP que uses y si es posible usa mejor el otro método.
Un saludo y espero haberte ayudado.
Hola amigos les dejo el comentario porque se que siempre hay alguien que quiere saber de el tema de server ftp en ubuntu yo lo tengo me funciona perfecto y supere muchas fallas espero serles útil estoy on-line por skype agreguen:
ResponderEliminargerardohpindigo
Email: gerardonicolato@gmail.com
http://2012-server.blogspot.com/
Hola Dani Molina
ResponderEliminarcomo bien decías es muy fácil se crea usuarios de manera normal en ubuntu y luego si no quieres que se vean los archivos entre ellos la manera gráfica fácil es Terminal sudo nautilus se abre la ventana de root entras en la carpeta etc home allí estarán todos los user que has creado solo le das click derecho sobre el que quieras y propiedades de ese user le pones la de grupo solo al nombre de user de tu pc en mi caso server-2012 y al publico le pones nadie en mirar archivos nadie en escribir y modificarlos aplicar cambios y ya nadie vera los que tiene ese user dentro solo el si lo quieres dar de baja momentáneo solo entras a las cuentas donde las creaste de manera gráfica normal y le cambias la contraseña y ya el no se podrá logear mas por el momento ok así de fácil
AL-X-OR a tu pregunta del porque algunos user se loguean y no se desconectan y otros si es porque le dan en guardar contraseña al explorador que usan no es un problema de seguridad tuyo también si el programa de FTP que usan guarda user pasaría lo mismo aunque el server a determinado tiempo los desconecta si le das refrescar a el explorador automático te re-conecta sin pedir nada ok
ResponderEliminarTengo una inquietud porque debo ubicar un servidor de ficheros en una LAN privada de una empresa y no en una publica?
ResponderEliminar@Anónimo: el servidor de archivos no es necesario que esté en la red interna, pero tiene ventajas como son mayor velocidad, mayor seguridad y mayor control que si lo alojas en un servidor externo.
ResponderEliminarBuenas tardes! antes que nada quería agradecerte por la excelente información.
ResponderEliminarTengo una consulta, cómo creo usuario para que tengan acceso al FTP?
Saludos!
@Ana pues tienes varias maneras, la más sencilla es crear ese usuario en el sistema desde el gestor de usuarios de tu distribucion.
ResponderEliminar