Servidor FTP en Ubuntu (¿Y para qué?)

16 - noviembre - 2008

(Tener un Servidor FTP puede significar que la seguridad del PC podría ser vulnerada mucho más fácilmente que si no lo tuvieran. Instálenlo bajo su propia responsabilidad.)

VSFTPD

Un Servidor FTP (sigla cuyo significado es “File Transfer Protocol”) es un programa que hace que desde un computador se puedan bajar (y/o subir) archivos de todo tipo, a través del “Protocolo de Transferencia de Archivos”… en español.
En general, en un servidor FTP se pueden hacer varias configuraciones, como: ponerle password, crear usuarios, crear usuarios que sólo puedan bajar ciertos archivos, etc., etc…

En este artículo nos concentraremos en un servidor FTP desde el cual solamente se puedan bajar archivos (por motivos de seguridad).
Además, cualquiera que se conecte al servidor podrá bajar esos archivos (por motivos de facilidad).
Para los servidores FTP, ese “usuario cualquiera” que se conecte al servidor es denominado “anonymous”. Este dato será importante para lo que vendrá posteriormente.

+++++++ ¿PARA QUE? +++++++
El primer objetivo obviamente es compartir archivos… pero existen situaciones más específicas en las que un servidor FTP se hace extremadamente útil, por ejemplo:
¿Qué pasa si necesitamos enviar un archivo enorme (ej: 1GB)?
Por mail sería imposible, pues habría que partirlo en 100 pedazos de 10MB…
¿Y podríamos hacer lo mismo con un servidor web?
Sí, pero el protocolo FTP tiene la gran ventaja de ser mucho (realmente muuuucho) más rápido que el protocolo HTTP, pues está menos congestionado. Esto mismo hace que la probabilidad de que ocurra un error durante la transferencia sea mucho menor.

+++++++ INSTALANDO EL SERVIDOR. +++++++
Ok, lo primero que se debe hacer es instalar vsftpd (“Very Secure FTP Daemon”), así:
sudo apt-get install vsftpd

Al hacer esto, se generará una carpeta llamada “ftp” en /home.
Es en esta carpeta en donde debemos dejar los archivos que queremos que puedan bajar los que se conecten a nuestro servidor.

+++++++ CONFIGURANDO EL SERVIDOR. +++++++
Luego, debemos abrir el archivo de configuración de vsftpd, así:
sudo gedit /etc/vsftpd.conf
En ese archivo, debemos “des-comentar” o borrar el símbolo “#” y cambiar “NO” por “YES” en la línea donde dice:
#anonymous_enable=NO
y convertirla en:
anonymous_enable=YES
Haciendo esto, permitimos que el exista el usuario “anonymous”, o dicho de otra manera, permitimos que cualquiera se pueda conectar a nuestro servidor FTP. Esto suena bastante inseguro, pero el hecho de que ningún usuario pueda “escribir” (o subir archivos y tener la capacidad de borrar archivos) lo hace relativamente seguro.

Reiniciamos el servidor, así:
sudo /etc/init.d/vsftpd restart
Listo! Ya tenemos un servidor FTP en nuestro PC.

+++++++ MANEJANDO EL SERVIDOR. +++++++
Vsftpd es un “Daemon” y se activa automáticamente al iniciar el SO.
¿Cómo hacer que esto NO ocurra?
Instalamos BUM: sudo apt-get install bum
Sistema -> Administración -> BootUp-Manager -> Desactivamos la casilla de “vsftpd”.

Comando para iniciarlo: sudo /etc/init.d/vsftpd start
Comando para detenerlo: sudo /etc/init.d/vsftpd stop
Comando para Reiniciarlo: sudo /etc/init.d/vsftpd restart
Comando para configurarlo: sudo gedit /etc/vsftpd.conf
Esta última acción debe hacerse siempre con sumo cuidado.

+++++++ CONECTANDOSE AL SERVIDOR. +++++++
¿Pero cómo hacemos para que alguien se conecte a nuestro Servidor?
Primero que nada, nuestro “anonymous” debe conocer nuestra IP.
(¿Cómo conocer mi IP? Así: http://ip.interchile.com/ )
Segundo, debe disponer de un Cliente FTP, pero no os preocupeis, pues cualquier browser como firefox, explorer, etc., es un cliente FTP de sólo lectura, que es todo lo que se necesita.
Finalmente, para conectarse, en el browser debe colocar la IP de nuestro servidor, así (ejemplo):
ftp://111.222.333.444
Ojo con que en lugar del famoso “http://”, debe decir “ftp://” antes de la IP.
Todo usuario que se conecte a nuestro servidor desde un browser es automáticamente considerado “anonymous” por el servidor.
Si nuestro usuario quisiera usar un verdadero cliente FTP (como Filezilla, gFTP, Putty, etc.), en donde dice Usuario debe colocar “anonymous”, y la IP debe escribirla en donde dice Servidor. La casilla de Contraseña simplemente se deja vacía.

Una consideración importante:
Para que los usuarios puedan conectarse a nuestro servidor, la carpeta /ftp debe tener los permisos 755 (para que no permitamos “escribir” en ella):
sudo chmod 755 /home/ftp
Pero no podremos copiar archivos normalmente hacia la carpeta /ftp.
Si deseamos copiar archivos a esa carpeta, debemos setear los permisos a 777:
sudo chmod 777 /home/ftp
…o de manera más simple, podemos copiarlos mediante el comando “cp”, así:
sudo cp [nombre_archivo] /home/ftp

…otro comando MUY UTIL para copiar carpetas hacia /home/ftp es:
sudo cp -r [nombre_carpeta] /home/ftp

+++++++ OTRAS PREGUNTAS +++++++
¿Es posible que nuestro servidor dé una “bienvenida” a los usuarios?
Claro, des-comentando (borrando el “#”) la línea del archivo de configuración que dice:
#ftpd_banner=
…y escribiendo nuestro propio mensaje de bienvenida, ejemplo:
ftpd_banner=Bienvenido a mi increible Server FTP… xD
(Sólo es posible dar la bienvenida a un usuario que acceda mediante Cliente FTP.)
¿Es posible que nuestro servidor FTP tenga un dominio (para no acceder mediante la IP)?
Claro que sí. En lugar de escribir “ftp://111.222.333.444”, se podría escribir “ftp://nombreserver.algo.com” sin ningún problema.
¿Es posible tener un servidor web y un servidor FTP en el mismo PC y activados al mismo tiempo?
Así es. Y también es posible utilizar el mismo dominio tanto para el server web como para el FTP.

Que se diviertan!!! xD

Saludooos 😛

(Servidor web en Ubuntu)

18 Responses to “Servidor FTP en Ubuntu (¿Y para qué?)”


  1. Uno de los problemas mas frecuentes que tiene el medio obsoleto protocolo FTP, es que el nuestra información de login, viaja en texto plano sin encripatción alguna, lo cual representa un problema de seguridad muy grande, ya que cualquiera con capacidad para snifear nuestra red o alguno de los routers/gateways x los que pasa nuestro “paquete”, puede hacerse con esta información.
    Por eso como configuración adicional es recomendable:
    *Utilizar algún tipo de cifrado asimetrico entre ambos pares.
    *Utilizar directivas PAM para la autentificación y autorización
    *Tener una base de datos encriptada con los usuarios/passwords.
    *Utilizar whitelist para permitir el acceso a los clientes
    *Una buena medida seria utilizar port-knocking

    Saludos!


  2. Holap:

    Tienes toda la razón, el FTP es relativamente obsoletillo e inseguro…

    De ahí la advertencia:
    Tener un Servidor FTP puede significar que la seguridad del PC podría ser vulnerada mucho más fácilmente que si no lo tuvieran. Instálenlo bajo su propia responsabilidad.

    Agrego aquí entonces:
    Además, la información que se transmita a través de este protocolo puede ser vulnerada.

    Saludooos 😛


  3. Si, claro que lo lei, por eso contribui con algunas líneas mas para ilustrar el post 🙂

  4. Rodrigo Says:

    Conoces la aplicacion sftp?
    Te permite hacer lo mismo, pero usando ssh, lo que lo hace mucho mas seguro, además no necesitas instalar un servidor ftp solo el de ssh.
    Suerte.

  5. novatillaenapuros Says:

    Hola!,he seguido toda tus indicaciones y al querer entrar para asegurarme de que se ven los documentos en el ftp me pide usuario y contraseña y en usuario pongo anonymous y en contraseña nada y que no me deja!jajjaja..
    Aisss,si es que que dificil se me pone todo,algo tan simple que tenia que ser..
    Tendria que ver algo que estoy intentandolo desde mi propio ordenador?
    Un saludo!


  6. Holap:

    @novatillaenapuros:
    LO TENGO!!
    Lo de la contraseña ocurre por los permisos de la carpeta /ftp.
    Te recomiendo que hagas:
    sudo chmod 755 /home/ftp

    …con eso se solucionará.

    Saludooos 😛

    P.D:
    Ojo con la seguridad de tu PC.

  7. novatillaenapuros Says:

    Un poco larga..bueno ahi va.
    ———-
    # Example config file /etc/vsftpd.conf
    #
    # The default compiled in settings are fairly paranoid. This sample file
    # loosens things up a bit, to make the ftp daemon more usable.
    # Please see vsftpd.conf.5 for all compiled in defaults.
    #
    # READ THIS: This example file is NOT an exhaustive list of vsftpd options.
    # Please read the vsftpd.conf.5 manual page to get a full idea of vsftpd’s
    # capabilities.
    #
    #
    # Run standalone? vsftpd can run either from an inetd or as a standalone
    # daemon started from an initscript.
    listen=YES
    #
    # Run standalone with IPv6?
    # Like the listen parameter, except vsftpd will listen on an IPv6 socket
    # instead of an IPv4 one. This parameter and the listen parameter are mutually
    # exclusive.
    #listen_ipv6=YES
    #
    # Allow anonymous FTP? (Beware – allowed by default if you comment this out).
    anonymous_enable=YES
    #
    # Uncomment this to allow local users to log in.
    #local_enable=YES
    #
    # Uncomment this to enable any form of FTP write command.
    #write_enable=YES
    #
    # Default umask for local users is 077. You may wish to change this to 022,
    # if your users expect that (022 is used by most other ftpd’s)
    #local_umask=022
    #
    # Uncomment this to allow the anonymous FTP user to upload files. This only
    # has an effect if the above global write enable is activated. Also, you will
    # obviously need to create a directory writable by the FTP user.
    #anon_upload_enable=YES
    #
    # Uncomment this if you want the anonymous FTP user to be able to create
    # new directories.
    #anon_mkdir_write_enable=YES
    #
    # Activate directory messages – messages given to remote users when they
    # go into a certain directory.
    dirmessage_enable=YES
    #
    # Activate logging of uploads/downloads.
    xferlog_enable=YES
    #
    # Make sure PORT transfer connections originate from port 20 (ftp-data).
    connect_from_port_20=YES
    #
    # If you want, you can arrange for uploaded anonymous files to be owned by
    # a different user. Note! Using “root” for uploaded files is not
    # recommended!
    #chown_uploads=YES
    #chown_username=whoever
    #
    # You may override where the log file goes if you like. The default is shown
    # below.
    #xferlog_file=/var/log/vsftpd.log
    #
    # If you want, you can have your log file in standard ftpd xferlog format
    #xferlog_std_format=YES
    #
    # You may change the default value for timing out an idle session.
    #idle_session_timeout=600
    #
    # You may change the default value for timing out a data connection.
    #data_connection_timeout=120
    #
    # It is recommended that you define on your system a unique user which the
    # ftp server can use as a totally isolated and unprivileged user.
    #nopriv_user=ftpsecure
    #
    # Enable this and the server will recognise asynchronous ABOR requests. Not
    # recommended for security (the code is non-trivial). Not enabling it,
    # however, may confuse older FTP clients.
    #async_abor_enable=YES
    #
    # By default the server will pretend to allow ASCII mode but in fact ignore
    # the request. Turn on the below options to have the server actually do ASCII
    # mangling on files when in ASCII mode.
    # Beware that on some FTP servers, ASCII support allows a denial of service
    # attack (DoS) via the command “SIZE /big/file” in ASCII mode. vsftpd
    # predicted this attack and has always been safe, reporting the size of the
    # raw file.
    # ASCII mangling is a horrible feature of the protocol.
    #ascii_upload_enable=YES
    #ascii_download_enable=YES
    #
    # You may fully customise the login banner string:
    ftpd_banner=Bienvenido a mi supermegaFTP!
    #
    # You may specify a file of disallowed anonymous e-mail addresses. Apparently
    # useful for combatting certain DoS attacks.
    #deny_email_enable=YES
    # (default follows)
    #banned_email_file=/etc/vsftpd.banned_emails
    #
    # You may restrict local users to their home directories. See the FAQ for
    # the possible risks in this before using chroot_local_user or
    # chroot_list_enable below.
    #chroot_local_user=YES
    #
    # You may specify an explicit list of local users to chroot() to their home
    # directory. If chroot_local_user is YES, then this list becomes a list of
    # users to NOT chroot().
    #chroot_list_enable=YES
    # (default follows)
    #chroot_list_file=/etc/vsftpd.chroot_list
    #
    # You may activate the “-R” option to the builtin ls. This is disabled by
    # default to avoid remote users being able to cause excessive I/O on large
    # sites. However, some broken FTP clients such as “ncftp” and “mirror” assume
    # the presence of the “-R” option, so there is a strong case for enabling it.
    #ls_recurse_enable=YES
    #
    #
    # Debian customization
    #
    # Some of vsftpd’s settings don’t fit the Debian filesystem layout by
    # default. These settings are more Debian-friendly.
    #
    # This option should be the name of a directory which is empty. Also, the
    # directory should not be writable by the ftp user. This directory is used
    # as a secure chroot() jail at times vsftpd does not require filesystem
    # access.
    secure_chroot_dir=/var/run/vsftpd
    #
    # This string is the name of the PAM service vsftpd will use.
    pam_service_name=vsftpd
    #
    # This option specifies the location of the RSA certificate to use for SSL
    # encrypted connections.
    rsa_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
    # This option specifies the location of the RSA key to use for SSL
    # encrypted connections.
    rsa_private_key_file=/etc/ssl/private/ssl-cert-snakeoil.key

  8. novatillaenapuros Says:

    Dios!y si era larga taza y media!jaja,,borra,borra,porfa!..
    No me funciona,solo sale la pagina y pone:
    indice de ftp:192.168.1.??
    Subir al directorio superior.
    Nombre Tamaño Ultima modificacion.

    Y me sigue pidiendo usuario y contraseña. ;-(

  9. Carlos Ruiz Says:

    Holap:

    El archivo se perfecto y no parece tener ningún problema…

    Si tampoco te ha resultado cambiando los permisos de la carpeta /ftp a 755 (sudo chmod 755 /home/ftp)… entonces la verdad es que no sé cuál es el problema… I’m sorry…

    Saludooos 😦

  10. novatillaenapuros Says:

    No te preocupes,,seguiré mirando y si encuentro solucion te la pongo por si a alguien le pasa.Es que a mi me pasa de todo para que aprenda más,jajaja.
    Un saludito y muchas gracias,Carlos!

  11. ktostereo Says:

    diablos, que buen tip!, gracias.

    salu2

  12. Carlos Ruiz Says:

    Holap:

    De nada, estimado Ktostereo…
    Pero dime, te funcionó todo bien?

    Saludooos 😛

  13. Rodrigo Says:

    Hasta donde tengo entendido, el password del usuario anonymous por defecto es tu direccion de email, cualquiera que ella sea.


  14. Holap:

    o_O????????????
    Nunca había escuchado algo así… (y con todo respeto, me parece que no tiene el menor sentido que así sea… xD)
    Además, yo mismo he implementado un Server FTP en mi PC y he probado distintos clientes FTP (como Filezilla y gFTP), y en todos los casos, funciona como lo explicaba en el post:
    usuario “anonymous” => contraseña vacía.

    Saludooos 😛

  15. moFeta Says:

    Parece entonces que has escuchado poco. 🙂
    Porque desde que hago uso de redes, desde los BBS, pasando por la era pre-web, culaquier conexion ftp anonima uno se identificaba como password con la direción de e-mail.
    De cualquier modo, si lo que te interesa es la seguridad, dale un vistazo a este how-to que acabo de descubrir: http://www.howtoforge.com/setting-up-proftpd-tls-on-ubuntu-8.10


  16. Holap:

    Pero, estimado MoFeta… ¿Cómo es posible que un password sea “una dirección de e-mail”?
    Es como que alguien dijera: “Mira el password que pide tal aplicación a ciertos usuarios, es la fecha de nacimiento… xD ”
    Eso simplemente no puede ser, los passwords predeterminados (o cualesquiera) deben estar almacenados en alguna parte…
    ¿O es que acaso dices que el password que piden los servers FTP a los anonymous, es la expresión regular de un e-mail?

    Saludooos 😛

  17. moFeta Says:

    Mira lo que pone el FAQ acerca de “Anonymous FTP”
    Anonymous FTP is a facility offered by many machines on the
    Internet. This permits you to log in with the user name ‘anonymous’
    or the user name ‘ftp’. When prompted for a password, type your e-mail
    address — it’s not necessary, but it’s a courtesy for those
    sites that like to know who is making use of their facility. Be
    courteous. Some sites require a valid e-mail address, others don’t.

    Está en: http://www.faqs.org/faqs/ftp-list/faq/

    Por último el que usen su e-mail te sirve para llevar un registro de quién accede a tu sistema, y eventualmente banearlo, aunque pueden usar cualquier cosa que parezca un e-mail.


  18. Holap:

    Entonces ambos tenemos razón, estimado MoFeta… xD

    Es verdad que algunos servers ftp te piden contraseña al conectarte como cliente, la cual efectivamente es tu e-mail, pero es una “contraseña opcional” y cuyo único fin es el de llevar un registro.
    Por lo tanto, tienes razón al decir que la contraseña es tu mail… y yo tengo razón al decir que puedes dejar en blanco el campo de la contraseña.

    En este caso, y por la manera en que propongo configurar vsftpd, la contraseña es innecesaria.

    No tenía la menor idea de las contraseñas en servers ftp, cada día se aprende algo nuevo… gracias por el dato… xD

    Saludooos 😛


Responder

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

Logo de WordPress.com

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

Imagen de Twitter

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

Foto de Facebook

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

Google+ photo

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

Conectando a %s

A %d blogueros les gusta esto: