Ciclo: Sistemas Microinformáticos y Redes Módulo: Aplicaciones Web UT 2 –FTP FTP 1. Introducción FTP (sigla en inglés de File Transfer Protocol - Protocolo de Transferencia de Archivos) en informática, es un protocolo de red para la transferencia de archivos entre sistemas conectados a una red TCP (Transmission Control Protocol), basado en la arquitectura cliente-servidor. Desde un equipo cliente se puede conectar a un servidor para descargar archivos desde él o para enviarle archivos, independientemente del sistema operativo utilizado en cada equipo. Los servidores FTP se usan principalmente para tres cosas: 1. subir las páginas web al hosting. 2. 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. 3. hacer backup (copia de seguridad). El Servicio FTP es ofrecido por la capa de Aplicación del modelo de capas de red TCP/IP al usuario, utilizando normalmente el puerto de red 20 y el 21. Un problema básico de FTP es que está pensado para ofrecer la máxima velocidad en la conexión, pero no la máxima seguridad, ya que todo el intercambio de información, desde el login y password del usuario en el servidor hasta la transferencia de cualquier archivo, se realiza en texto plano sin ningún tipo de cifrado, con lo que un posible atacante puede capturar este tráfico, acceder al servidor, o apropiarse de los archivos transferidos. 2. Modos de conexión del cliente FTP FTP admite dos modos de conexión del cliente. Estos modos se denominan Activo (o Estándar, o PORT, debido a que el cliente envía comandos tipo PORT al servidor por el canal de control al establecer la conexión) y Pasivo (o PASV, porque en este caso envía comandos tipo PASV). Tanto en el modo Activo como en el modo Pasivo, el cliente establece una conexión con el servidor mediante el puerto 21, que establece el canal de control. AW – UT 2 – FTP Página 1 de 8 Ciclo: Sistemas Microinformáticos y Redes Módulo: Aplicaciones Web UT 2 –FTP 2.1. Modo Activo En modo Activo, el servidor siempre crea el canal de datos en su puerto 20, mientras que en el lado del cliente el canal de datos se asocia a un puerto aleatorio mayor que el 1024. Para ello, el cliente manda un comando PORT al servidor por el canal de control indicándole ese número de puerto, de manera que el servidor pueda abrirle una conexión de datos por donde se transferirán los archivos y los listados, en el puerto especificado. Lo anterior tiene un grave problema de seguridad, y es que la máquina cliente debe estar dispuesta a aceptar cualquier conexión de entrada en un puerto superior al 1024, con los problemas que ello implica si tenemos el equipo conectado a una red insegura como Internet. De hecho, los cortafuegos que se instalen en el equipo para evitar ataques seguramente rechazarán esas conexiones aleatorias. Para solucionar esto se desarrolló el modo Pasivo. 2.2. Modo Pasivo AW – UT 2 – FTP Página 2 de 8 Ciclo: Sistemas Microinformáticos y Redes Módulo: Aplicaciones Web UT 2 –FTP Cuando el cliente envía un comando PASV sobre el canal de control, el servidor FTP le indica por el canal de control, el puerto (mayor a 1023 del servidor. Ej:2040 ) al que debe conectarse el cliente. El cliente inicia una conexión desde el puerto siguiente al puerto de control (Ej: 1036) hacia el puerto del servidor especificado anteriormente (Ej: 2040).[1] Antes de cada nueva transferencia, tanto en el modo Activo como en el Pasivo, el cliente debe enviar otra vez un comando de control (PORT o PASV, según el modo en el que haya conectado), y el servidor recibirá esa conexión de datos en un nuevo puerto aleatorio (si está en modo pasivo) o por el puerto 20 (si está en modo activo). 3. Instalación de un servidor ftp en Linux Existen numerosos servidores de ftp, (vsftpd, ftpd, proftpd...), nosotros usaremos el último, Professinal FTP Daemon, uno de los más potentes y versátiles con licencia GPL. // Instalación de servidor ftp usuario@server:$ sudo aptitude install proftpd-basic Durante la instalación nos preguntará si queremos ejecutar ProFTPd como demonio independiente o mediante inetd (escogeremos independiente) y se creará el usuario ftp, con directorio personal /home/ftp (en las últimas versiones: Se crea el directorio personal /srv/ftp para el usuario ftp con permisos drwxr-xr-x o lo que es lo mismo 755 el usuario ftp tendría permisos de lectura, escritura y ejecución, los miembros de su grupo sólo tendrían permisos de lectura y ejecución y el resto de los usuarios solo se les permitiría la ejecución.), shell /bin/false y sin contraseña. El directorio /home/ftp directorio personal /srv/ftp sólo contiene el archivo welcome.msg, cuyo contenido se muestra al conectarse. Nada mas instalado, cada usuario del sistema podrá acceder al sistema de ficheros del servidor con su usuario y contraseña, con los mismos permisos que tendría en local. Por defecto aparece en su home. Si queremos que alguno usuario que tiene cuenta local no entre en el ftp, existe un archivo /etc/ftpusers, donde están los usuarios locales que no pueden entrar por ftp. Si queremos dar de alta nuevos usuarios, tendremos que hacerlo con adduser, pero si queremos que sólo sean usuarios para el ftp, hay que cambiarles la ruta de Shell por /bin/false. AW – UT 2 – FTP Página 3 de 8 Ciclo: Sistemas Microinformáticos y Redes Módulo: Aplicaciones Web UT 2 –FTP 4. Arranque y parada manual del servidor FTP El servidor ftp, al igual que todos los servicios en Debian, dispone de un script de arranque y parada en la carpeta /etc/init.d. // Arranque del servidor FTP # /etc/init.d/proftpd start // Parada del servidor FTP # /etc/init.d/proftpd stop // Reinicio del servidor FTP # /etc/init.d/proftpd restart 5. Configuración del servidor FTP El fichero de configuración está en /etc/proftpd/proftpd.conf Al principio del fichero encontramos un montón de directivas que configuran los aspectos generales del servidor: ServerName. Nombre del Servidor que verán los clients. Port. Establece el puerto de control, por el que se establecen las conexiones. DisplayLogin. Mensaje de bienvenida al servidor ….. otras muchas Limitando un directorio Si queremos aplicar directivas sólo a un directorio, las pondremos dentro de un bloque Directory: <Directory [directorio]> Directivas… </Directory> Una de ellas puede ser: AllowOverwrite on #Permitir sobreescritura de los ficheros. Ftp anónimo AW – UT 2 – FTP Página 4 de 8 Ciclo: Sistemas Microinformáticos y Redes Módulo: Aplicaciones Web UT 2 –FTP Existe una modalidad muy usada en los directorios de ftp, es el de acceso anónimo y que está implantada en todos los clientes ftp. Los usuarios entran al servidor con el usuario anonymous y con cualquier contraseña, normalmente una dirección de correo. Esto se usa para poner ficheros para descarga pública. 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> Al instalar ProFTPd viene ya comentada una posible configuración de un directorio anónimo por ftp. Este sería el directorio /etc/ftp, se ha creado un usuario sólo para ftp (sin acceso a Shell), con este fin y luego se le crea un alias en la configuración para que se use anonymous, una configuración simple puede ser: <Anonymous ~ftp> User ftp Group nogroup UserAlias anonymous ftp MaxClients 10 <Limit WRITE> DenyAll </Limit> </Anonymous> Limitando permisos Podemos limitar y especificar quién puede hacer qué a cualquier directorio y usuario que queramos. Esta directiva se puede poner de manear general o dentro de un directorio en particular. <Limit [LOGIN] [READ] [WRITE] [ALL]…> <Quien o quienes> </Limit> AW – UT 2 – FTP Página 5 de 8 Ciclo: Sistemas Microinformáticos y Redes Módulo: Aplicaciones Web UT 2 –FTP Limitar el acceso a 10.1.X.X y 192.168.1.7, a cualquier otra máquina se le denegará el acceso. <Limit LOGIN> Order Allow, Deny Allow from 10.1., 192.168.1.7 Deny from all </Limit> Permitir la escritura a juanito, alberto y a cualquiera que se conecte desde 10.0.0.15 a cualquier otra máquina se le denegará el acceso. <Limit WRITE> AllowUser juanito,alberto... Allow 10.0.0.15 Deny all </LIMIT> Permitir un directorio de subida pero no de lectura <Directory subida/*> <Limit READ> DenyAll </Limit> <Limit STOR> AllowAll </Limit> </Directory> Más configuración Con ProFTPd se pueden realizar muchas otras cosas, se pueden extender por medio de módulos que le permiten añadir una nueva funcionalidad, se pueden crear directorios virtuales (Virtual host) que consiste en no responder de la misma manera según quién y cómo se conecte, y también admite ficheros .ftpaccess, similares a los .htaccess de Apache, para AW – UT 2 – FTP Página 6 de 8 Ciclo: Sistemas Microinformáticos y Redes Módulo: Aplicaciones Web UT 2 –FTP que los usuarios sin tocar el fichero de configuración, puedan poner sus propias configuraciones. Más información: http://www.proftpd.org/docs/example-conf.html http://tutorialesfaciles.wordpress.com/windows/montar-servidor-ftp-con-filezilla-server/ 6. FTP Cliente 6.1. Cliente de comandos Los clientes ftp son muy bonitos, pero el protocolo ftp también se pude usar por comandos, sin mucha dificultad. En una máquina unix siempre tenemos el comando ftp. Desde el cliente tecleamos. ftp 10.0.0.2, nos autenticamos correctamente y... ya estamos dentro. Ahora, ¿qué hacemos?. Por ejemplo probamos con ls y pwd. Estos comandos los conocemos y funcionan en un ftp. Hace falta saber cómo se copia desde el cliente al servidor y viceversa. No es muy difícil. Escribimos put <fichero_local> (fichero que exista en la carpeta que estábamos cuando hayamos hecho ftp). Con esto subiremos un archivo al servidor. Si escribimos get <fichero_del_server> (alguno de los que veamos al hacer un ls). Nos descargaremos a local el fichero. Para terminar la sesión quit 6.2. Cliente gráfico FileZilla es un cliente FTP, gratuito, libre (GNU) y de código abierto. Sustenta FTP, SFTP y FTP sobre SSL. Inicialmente sólo diseñado para funcionar bajo Windows, desde la versión 3.0.0, gracias al uso de wxWidgets, es multiplaforma, estando disponible además para otros sistemas operativos, entre ellos Linux, FreeBSD y MacOS X. Las principales características son el Site Manager (Administrador de sitios), Message Log (Registro de mensajes), y Transfer Queue (Cola de transferencia). El administrador de sitios permite a un usuario crear una lista de sitios FTP con sus datos de conexión, como el número de puerto a usar, o si se utiliza inicio de sesión normal o anónima. Para el inicio normal, se guarda el usuario y opcionalmente la contraseña. El registro de mensajes se muestra en la parte de arriba de la ventana. Muestra en forma de consola los comandos enviados por FileZilla y las respuestas del servidor remoto. AW – UT 2 – FTP Página 7 de 8 Ciclo: Sistemas Microinformáticos y Redes Módulo: Aplicaciones Web UT 2 –FTP La vista de archivo y carpeta, situada debajo del registro de mensajes, proporciona una interfaz gráfica para FTP. Los usuarios pueden navegar por las carpetas y ver y alterar sus contenidos tanto en la máquina local como en la remota, utilizando una interfaz de tipo árbol de exploración. Los usuarios pueden arrastrar y soltar archivos entre los ordenadores local y remoto. La cola de transferencia, situada en la parte de abajo de la ventana, muestra en tiempo real el estado de cada transferencia activa o en cola. Manual filezilla: http://www.ujaen.es/sci/redes/ftp/Filezilla/trabajarConFZ.html AW – UT 2 – FTP Página 8 de 8