Servidor de archivos FTP en Linux
FTP (File Transfer Protocol, Protocolo de Transferencia de Archivos) es un protocolo de red que permite transferir archivos de forma rápida y sencilla entre ordenadores. Se utiliza para compartir archivos y directorios, pudiendo establecer autentificación de usuarios (con nombre y contraseña) y permisos sobre los elementos compartidos. Los servidores FTP se usan principalmente para tres cosas:
- subir las páginas web al hosting.
- como servidor de archivos de libre acceso (denominado FTP anónimo). Los FTP anónimos son servidores FTP a los que puede conectarse cualquiera empleando como usuario anonymous y como password cualquier dirección de correo (servirá cualquier secuencia de caracteres que incluya "@").
- hacer backup (copia de seguridad).
Este protocolo se implementa con arquitectura cliente-servidor, por lo que necesita:
- un servidor FTP que se esté ejecutando en la máquina remota, y que por defecto, estará escuchando en los puertos 20 y 21 TCP (el puerto 20 se utiliza para la transmisión de datos y el puerto 21 para los comandos de control).
- un cliente FTP para conectarnos al servidor.
Un problema del protocolo FTP es que no cifra los datos, por lo que es vulnerable a la captura de la información transmitida, especialmente las contraseñas de acceso. Si necesitamos conexiones FTP seguras disponemos de servidores FTP encriptados, como SFTP (FTP sobre SSH) o FTPS (FTP sobre SSL).
En Linux hay muchos servidores FTP, vamos a ver un par de ellos:
- VS-FTPd: ligero y fácil de configurar, es considerado el servidor FTP más rápido y seguro.
- ProFTPd: muy configurable y bien documentado.
Equivalencias en Windows: MS-FTP.
Servidor FTP VS-FTPd
VS-FTPd (Very Secure FTP Daemon, vsftpd.beasts.org, paquete vsftpd), ligero y fácil de configurar, es considerado el servidor FTP más rápido y seguro.
El archivo de configuración de VS-FTPd es /etc/vsftpd.conf. Veamos algunas de sus principales directivas, por ejemplo, para el caso de un servidor web que da hosting a varios sitios web:
- no permitir acceso anónimo al servidor:
anonymous_enable=NO
- permitimos acceso a los usuarios locales (excepto los que figuren en /etc/ftpusers):
local_enable=YES
- damos permisos de escritura a los usuarios:
write_enable=YES
- impedimos a los usuarios locales salir de su directorio personal:
chroot_local_user=YES
Grabamos los cambios y reiniciamos el demonio vsftpd:
# /etc/init.d/vsftpd restart
Por último, tenemos que crear y securizar los usuarios que usarán el servidor FTP para que tengan los mínimos permisos. En nuestro ejemplo los usuarios son los webmaster de los sitios web alojados:
- crearemos el grupo ftp al cual asociaremos los usuarios del servidor FTP:
# groupadd ftp
- creamos los usuarios del servidor FTP (el shell /bin/false debe existir y figurar
en /etc/shells):
# useradd -g ftp -d /var/www/domain1 -c user1 -s /bin/false user1
- y asignamos password a los usuarios:
# passwd user1
Probaremos a conectarnos desde un cliente FTP (por ejemplo con un navegador, con ftp://<IP_del_servidor>). Introduciremos el usuario y su contraseña y comprobaremos que nos redirige al directorio de su web, que podemos subir y bajar archivos al servidor y que no podemos subir de nivel en el árbol de directorios.
Servidor FTP ProFTPd
ProFTPd (proftpd.org, paquete proftpd), es uno de los servidores más utilizados en Linux, es muy configurable y está bien documentado.
Durante la instalación nos preguntará si queremos ejecutar ProFTPd como demonio independiente o mediante inetd (escogeremos standalone) y se creará el usuario ftp, con directorio personal /home/ftp, shell /bin/false y sin contraseña. El directorio /home/ftp sólo contiene el archivo welcome.msg, cuyo contenido se muestra al conectarse.
El archivo de configuración de ProFTPd es /etc/proftpd/proftpd.conf. Veamos algunas de sus principales directivas:
- directorio al que entrará el usuario (por defecto es su directorio
personal "~"):
DefaultChdir ~
- directorio donde se encierra el servidor, de modo que no se pueda
acceder a directorios superiores. Esto equivale a chrootear el server. Nunca
debemos poner el directorio raíz ("/"), ya que los usuarios
tendrán acceso a todo el sistema.
DefaultRoot ~
- mostrar o no los links (off/on).
ShowSymlinks off
- si queremos aplicar directivas sólo a un directorio, las pondremos dentro de
un bloque Directory:
<Directory [directorio]> directivas... </Directory>
- para indicarle a ProFTPd que un directorio debe ser tratado como un directorio
de acceso anónimo y aplicarle directivas específicas, usaremos:
<Anonymous [directorio]> directivas... </Anonymous>
- podemos especificar quién puede hacer qué:
<Limit [LOGIN] [READ] [WRITE] [STOR] [ALL]> quien... </Limit>
- para limitar el acceso usaremos:
<Limit LOGIN> quien... </Limit>
Grabamos los cambios y reiniciamos el demonio proftpd:
# /etc/init.d/proftpd restart
Para probar el servidor nos conectaremos con un cliente FTP (ftp://<IP_del_servidor>), nos loguearemos con usuario y contraseña y comprobaremos que accedemos a la carpeta personal, que podemos subir y bajar archivos al servidor y que no podemos escalar en el árbol de directorios.
Comandos de ProFTPd
ProFTPd proporciona varios comandos útiles.
- El comando ftpwho nos permite ver qué usuarios están conectados en un
momento dado, qué están haciendo y desde cuándo están conectados:
$ ftpwho standalone FTP daemon [2178], up for 2 hrs 22 min 2420 francis [2m 36s] 2m 01s idle Service class - 1 user
- El comando ftptop monitoriza ProFTPd en tiempo real:
$ ftptop
- Para expulsar a un usuario del servidor FTP, miraremos el ID de su proceso
con cualquiera de los dos comandos anteriores (ftpwho o ftptop)
y mataremos el proceso. Por ejemplo, para tirar al usuario francis, cuyo ID
es 2420, haremos:
# kill -9 2420
Frontales gráficos para configurar ProFTPd
- GProFTPd (gadmintools.org, paquete gproftpd): frontal para configurar ProFTPd escrito en GTK.
4 Comentarios en “Servidor de archivos FTP en Linux”
Deja un comentario
estupendo tutorial. Gracias
Hola, quisiera saber como puedo listar varios directorios que se encuentran en discos diferents, probe hacer un enlace y no funciono, si me pudieras decir o indicar como agregar varios directorios estaria muy agradecido.
hola como estan!!!
alquien me podria decir como hacer que un servidor aqui en mi empresa fuera un ftp servidor y que las maquinas que estan en la red puedan copiar del servidor archivos a su maquina ???
el sistema operativo es linux red hat
gracias
Hola amigos quiero ayuda para una pratica, tengo que crear un servidor de archivos y no se que SO utilizar para ello por favor alguno que me pueda ayudar para solucionar esto, de ante mano agradezco la ayuda.
estas son caracteristicas del pc que tengo
modelo: OptiPlex GX240
Procesador: Intel(R) Pentium(R) 4 CPU 1.50GHz
Velocidad reloj: 1500 MHz
Fabricante del procesador: Intel
Fabricante de la BIOS: Dell Computer Corporation
Versión de la BIOS: A01
Número de serie de la BIOS: D27Y111
Fecha de instalación de la BIOS: 08/27/2001
Fabricante de la placa base: Dell Computer Corporation
Modelo de placa base: OptiPlex GX240
Ranura de memoria 0: DIMM_A
Capacidad: 256 Mb
adaptador de red
Adaptador de red 1: Controlador Fast Ethernet integrado 3Com 3C920 (compatible 3C905C-TX) – Minipuerto del administrador de paquetes
Tipo de adaptador: Ethernet
Almacenamiento
Disco físico 1: WDC WD2500BB-98GUA0
Capacidad: 232.89 Gb
otros
Teclado: Mejorado (clave 101 o clave 102)
Tarjeta de sonido 1: Controlador de audio de Intel(r) 82801BA/BAM AC’97
Puntero 1: Mouse compatible PS/2
Interfaz USB 1: Controladora de host universal USB Intel(R) 82801BA/BAM – 2442
Interfaz USB 2: Controladora de host universal USB Intel (R) 82801BA/BAM – 2444
[email protected]