Configurar VSFTPD en Ubuntu 12.04

Publicado: 7 febrero, 2013 en General

¿Problemas para configurar el servidor vsftpd? bueno aquí los pasos para lograrlo con cifrado TLS y enjaulando usuarios locales de la máquina, primero instalar lo necesario: sudo apt-get install vsftpd, para luego crear un grupo, permisos y usuarios para nuestro FTP con los siguientes comandos (ejecutar como root):

# groupadd ftp-users
# mkdir /home/ftp
# chmod 755 /home/ftp
# chown root:ftp-users /home/ftp
# useradd -g ftp-users -d /home/ftp -s /bin/false usuariovirtual1
# useradd -g ftp-users -d /home/ftp -s /bin/false usuariovirtual2
# passwd usuariovirtual1
# passwd usuariovirtual2

Con estos comandos ya tenemos a nuestros usuarios con shell falsos, esto para evitar de que puedan tener acceso a una consola. Luego editar el archivo de configuración: sudo nano /etc/vsftpd.conf (nunca es malo crear un respaldo de este antes de editar).


listen=YES # -> Escucha el FTP?
anonymous_enable=NO # -> Los anónimos están permitidos?
local_enable=YES # -> Los usuarios locales pueden acceder?
write_enable=YES # -> Pueden escribir en mi FTP?
local_umask=022 # -> Buscar info :D
anon_upload_enable=NO # -> Permito subidas anónimas?
anon_mkdir_write_enable=NO # -> Permitido crear carpetas a los anónimos?
dirmessage_enable=YES # -> Muestro los mensajes a los usuarios cuando acceden a las carpetas?
use_localtime=YES # -> Muestro fecha-hora local de los usuarios?
xferlog_enable=YES # -> Activo o no el log de subidas y bajadas?
connect_from_port_20=NO # -> Conecta el FTP al puerto 20?
xferlog_file=/var/log/vsftpd.log # -> Donde guardo el log de subidas y bajadas?
idle_session_timeout=600 # -> Cuento dura la sesión idle? (segundos)
data_connection_timeout=120 # -> Cuento dura la sesión antes de que se cierre la sesión si no hay movimiento? (segundos)
ftpd_banner=Mensaje de Bienvenida # -> El mensaje de bienvenida del FTP
# chroot_local_user=YES # -> Linea a proposito comentada, ya que se rooteas a los usuarios con esta linea les muestra TODO el servidor y no su carpeta del Home.
chroot_list_enable=YES # -> Lista de usuarios enjaulados, ok!
chroot_list_file=/etc/vsftpd.chroot_list # -> Cuales son los usuarios que van acceder al FTP, locales! hay que crear este archivo y poner el nombre del usuario dentro (usuariovirtual1).
secure_chroot_dir=/var/run/vsftpd/empty # -> Buscar info :D
pam_service_name=vsftpd # -> Usa usted el servicio PAM?
# rsa_cert_file=/etc/ssl/private/vsftpd.pem # -> Usa usted SSL?, si es así donde esta el key .pem?
listen_port=8052 # -> Porque pueto me conecto al FTP? yo lo cambie si quieres que sea por los puertos 20 - 21 (ida y vuelta) comenta esta línea.
pasv_min_port=40001 # -> Cuando entra en modo pasivo puede tomar desde el puerto 1024 hasta el 65535, con este especificas un rango de puestos solamente y no TODA la gama!
pasv_max_port=40021 # -> El tope!
ssl_enable=YES # -> Habilita el soporte de TLS/SSL
allow_anon_ssl=NO # -> Deshabilita o habilita utilizar TLS/SSL con usuarios anónimos.

# Obliga a utilizar TLS/SSL para todas las operaciones, es decir,
# transferencia de datos y autenticación de usuarios locales.
# Establecer el valor NO, hace que sea opcional utilizar TLS/SSL.
force_local_data_ssl=YES
force_local_logins_ssl=YES

# Se prefiere TLSv1 sobre SSLv2 y SSLv3
ssl_tlsv1=YES
ssl_sslv2=NO
ssl_sslv3=NO

# Rutas del certificado y firma digital, pero que es esto! ya lo veremos como crear un certificado.
rsa_cert_file=/home/miuser/micarpeta/vsftpd.crt
rsa_private_key_file=/home/miuser/micarpeta/vsftpd.key

# Los desarrolladores de FileZilla decidieron con la versión 3.5.3 que
# eliminar el soporte para el algoritmo de cifrado 3DES-CBC-SHA,
# con el argumento de que este algoritmo es una de los mas lentos.
# Sin embargo con esto rompieron compatibilidad con miles de
# servidores FTP que utilizan FTPES. La solución temporal, mientras
# los desarrolladores de FileZilla razonan lo absurdo de su
# decisión, es utilizar la siguiente opción:
ssl_ciphers=HIGH

local_max_rate=1048576 # -> Tasas de transferencia para usuarios locales, actual 1MB/s
max_clients=5 # -> Conexiones máximas al mismo tiempo
max_per_ip=5 # -> Conexiones máximas desde una misma IP

Ahora para crear los certificados (.crt y .key) el siguiente comando:

openssl req -x509 -nodes -days 1825 -newkey rsa:1024 \
-keyout private/vsftpd.key \
-out certs/vsftpd.crt

Tal cual esto generara un certificado que te pedirá algunos datos para completarlo


Código de dos letras para el país.
Estado o provincia.
Ciudad.
Nombre de la empresa o bien la razón social.
Unidad o sección responsable del certificado.
Nombre del anfitrión (FQDN) o bien dominio con comodín.
Dirección de correo electrónico de la persona responsable del certificado.

Con esto ya nuestro FTP estaría arriba, ahora recuerda que los puertos a utilizar deben estar abiertos en la máquina que tiene el FTP (20, 21, 22, 8052, 40001-40020). Además recuerda crear el archivo /etc/vsftpd.chroot_list que tiene a los usuarios locales que podrán acceder desde el FTP.

Solucionando Errores (copio textual)

500 OOPS: vsftpd: refusing to run with writable root inside chroot ()
Your root directory is writable, this is not allowed. Check part 7 for more information, you need to create a 555 root and 755 subfolders

vsftpd restart or stop error: “restart: Unknown instance“
This means you can’t start the deamon even if you have success message with /etc/init.d/vsftpd start. It doesn’t start because your configuration is wrong. Start over this tutorial

Fuentes:
http://sigerr.org/linux/setup-vsftpd-custom-multiple-directories-users-accounts-ubuntu-step-by-step
http://superahacker.blogspot.com/2010/03/instalacion-configuracion-vsftp.html
http://www.alcancelibre.org/staticpages/index.php/09-como-vsftpd
http://preguntaslinux.org/enjaular-usuarios-de-vsftp-t-5329.html

comentarios
  1. Enrique dice:

    no me deja crear las claves rsa me manda este error…

    writing new private key to ‘private/vsftpd.key’
    private/vsftpd.key: No such file or directory
    7935:error:02001002:system library:fopen:No such file or directory:bss_file.c:356:fopen(‘private/vsftpd.key’,’w’)
    7935:error:20074002:BIO routines:FILE_CTRL:system lib:bss_file.c:358:

    Espero puedas apoyarme..

  2. porque razon solo me deja ingresar con el último usuario que creo

  3. goreOTR dice:

    Me parece raro, ya si agregaste a los dos usuarios donde corresponde no debiese de tener problema, ahora los usuarios deben estar uno por lnea, revisa eso y corrobora que las credenciales de cada usuario sean las correctas (password).

  4. Jhon dice:

    Enrique, debes de ejecutar los comandos como root, para esto primero inicia como root con: sudo su

  5. Jose dice:

    Esto es SIDA ¿Cómo puedes poner en un tutorial que busquemos información sobre algo del mismo? UN tutorial deberia de ponerlo TODO detallado y no esta MIERDA de niños chicos qeu NI FUNCIONA

  6. goreOTR dice:

    En algn lado del paso dice que es un tutorial?….

  7. Sergio dice:

    para crear la key rsa es:

    directorio = ya tiene que estar creado el directorio donde va a poner la .key y la .crt

    # Rutas del certificado y firma digital, pero que es esto! ya lo veremos como crear un certificado.
    rsa_cert_file=/directorio/vsftpd.crt
    rsa_private_key_file=/directorio/vsftpd.key

    openssl req -x509 -nodes -days 1825 -newkey rsa:1024 -keyout directorio/vsftpd.key -out directorio/vsftpd.crt

    y ya crea su certificado.

    Funciona 100% comprobado!!!

  8. Jose dice:

    Hola hago una conuslta intento instalar un ubuntu server 12.04 en una vm de virtual box ya se instalo tiene ssh andando me conecto con putty al server y al intentar instalar el servidor ftp que se llama vsftpd con el comando sudo apt-get install vsftpd me dice

    Leyendo lista de paquetes… Hecho
    Creando árbol de dependencias
    Leyendo la información de estado… Hecho
    El paquete vsftpd no está disponible, pero algún otro paquete hace referencia
    a él. Esto puede significar que el paquete falta, está obsoleto o sólo se
    encuentra disponible desde alguna otra fuente

    entiendo que como dice falta el paquete o no esta disponible tengo coneccion a internet ya comprobada hay alguna forma de forzar a que se instale ese paquete es por que estoy haciendo un curso y lo hacen con el. Desde ya muchas gracias por cualquier respuesta.

  9. goreOTR dice:

    Hola José, efectivamente falta el paquete debes agregar el repositorio a los orígenes de softwate que contenga una versión actualizada del VSFTPD, luego debes actualizar la lista de paquetes e intentar instalar nuevamente el paquete, suerte!

Responder

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

Logo de WordPress.com

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

Imagen de Twitter

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

Foto de Facebook

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

Google+ photo

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

Conectando a %s