5. Servicio de Transferencia de Archivos#

5.1. ¿De qué va este tema?#

Se trata de intercambiar archivos entre equipos. Es decir, resolver las siguientes cuestiones:

  1. ¿Cómo pongo disponibles un conjunto de archivos para cualquier usuario?

  2. ¿Cómo envío y/o descargo archivos entre usuarios?

  3. ¿Cómo reviso quien, cuando y qué archivo se descarga un usuario?

5.2. Clases#

Le dedicaremos unas 12 sesiones de clase.

5.2.1. Servicios de Transferencia de Archivos#

  • ¿ Qué es ?

    • Arquitectura: C/S y P2P

    • Sistemas Pull vs Sistema Push

    • Sistemas NAS

  • Autenticación: anónimo vs autenticado

  • Protocolos:

  • Opción devops: uso de sistemas de control de versiones (git)

Actividad: Leer e investigar

  1. Lee los enlaces anteriores

  2. ¿En qué puertos (predeterminados) escuchan estos protocolos?

  3. ¿Me puedes dar algún ejemplo de servidor FTP?

  4. ¿Y de cliente FTP?

  5. ¿Y para qué usar TFTP?

  6. ¿Qué protocolo/s crees que usa Google Drive (o similar) para comunicarse con tu cliente?

  7. Haz una captura de tráfico (para explicarlo)

5.2.2. Usar SSH#

El comando scp(1) / scp

  1. Uso Básico

  2. Copia Recursiva

  3. Limitar Velocidad

  4. Y más: Comando SCP: ejemplos de uso

Actividad: Usa SSH para enviar archivos

  1. Crea el archivo local prueba.txt

  2. Envíalo a otro equipo

  3. Crea el directorio prueba y pon el archivo prueba.txt en él. Ahora creas dos directorios (dir1 y dir2) y añades 3 archivos en cada uno

  4. Copia todos esos archivos a la vez, con un solo comando. ¿Qué opción tuviste que utilizar? ¿Cuántos archivos prueba.txt hay en tu servidor?

  5. Haz una copia de seguridad del directorio /etc de tu servidor público. Ojo a usar bien el sentido de la copia (si no quieres quedarte sin servidor).

  6. Usa una opción poco habitual en el compando scp

  7. Crea un script que se llame «copia.sh» que haga una copia de seguridad de la configuración de tu servidor (directorio /etc)

5.2.3. Usar rsync#

La super herramienta rsync

  • Diferencia entre enviar y sincronizar (delta)

  • Copia Local o Copia Remota

  • Arquitectura de la Aplicación

El comando rsync(1)/ rsync

Actividad: Usa rsync

  1. Instala rsync en las máquinas que vayas a usar

  2. Repite las tareas anteriores de scp, pero usando rsync

  3. Haz una copia de seguridad de /etc cada día a las 23h

  4. Haz una copia de seguridad de los usuarios /home , cada día a las 5h

5.2.4. El protocolo FTP#

¿Qué es FTP?

  • Protocolo Estándar Internet (RFC 959)

  • Ventajas: Repositorio de Archivos (sitio de descarga)

  • Desventajas: Algunas

Tipos de Transferencia: ASCII vs Binario

Tipos de acceso: anónimo y autenticado

Modos de Conexión :

  • Activo

  • Pasivo

Puertos de Acceso

  • Dependen del modo

  • Complican las reglas de los firewall

El problema de los puertos (firewall)

Actividad: ver puertos abiertos

  1. Repasar la utilidad nmap(1) / nmap para escanear puertos y servicios

  2. Repasar la utilidad netstat para ver puertos y procesos en la máquina local

5.2.5. El cliente FTP#

Actividad: uso de cliente ftp

Conéctate al servidor público de Red Iris : ftp.rediris.es (o ftp.osuosl.org). Siempre desde la consola. Tienes que instalar el cliente ftp en tu sistema operativo.

  1. Abre una conexión remota en el servidor ftp (user anonymous / password tu email)

  2. Activa el modo de conexión a pasivo (o activo) para ver los archivos

  3. ¿Qué archivos hay en el directorio raíz remoto?

  4. Muévete por el árbol de directorios remoto

  5. ¿En qué directorio local estás? Muévete por tu directorio local

  6. Cambia el modo de transferencia de archivos a texto (si es que ya no está) ¿Para qué necesitas cambiar el modo?

  7. Activa la barra de progreso para ver cómo va la descarga

  8. Descarga el archivo welcome.msg que está en el raíz. ¿Qué pone?

  9. Revisa un conjunto de archivos, en vez de uno solo (usa patrones)

  10. Sube un archivo de texto al servidor. ¿Puedes hacerlo? ¿Porqué?

5.2.6. El servidor FTP#

Actividad: Instalar un servidor FTP (acceso anónimo)

Lo probaremos en local, hasta asegurar el servicio ftp

  1. Instala el servidor que hayas escogido

  2. Revisa el ejecutable y el archivo de configuración

  3. ¿Cómo arrancas/paras/revisas el servicio vsftpd?

  4. ¿Donde están los archivos del servicio ftp?

  5. Configura el acceso anónimo (y desactiva conexión con usuarios locales)

  6. Conéctate con un cliente en consola, ¿Puedes navegar por el repositorio?

  7. ¿Puedes descargar algún archivo?

  8. ¿Puedes subir algún archivo?

  9. ¿En qué puertos está funcionando? (Activa modo pasivo en unos puertos concretos)

  10. ¿Es accesible públicamente?

5.2.7. Configurando un Servidor FTP#

  • Un servidor ftp permite muchas posibilidades

  • Archivos y Usuarios

    • ¿Qué usuarios pueden usar el ftp?

      • Locales (necesita autenticación)

      • Anónimo (cualquiera)

    • Sistema de autenticación:

      • Local. Usa el que tiene el SO

      • Externo. Usa un servicio externo (hay que configurar un intermediario)

    • ¿Qué directorios pueden utilizar? Concepto chroot

Actividad: Configuración Avanzada del servidor FTP

Revisa ya con detalle los diferentes parámetros de configuración (por ejemplo /etc/vsftpd.conf) . Ya depende de lo que quieras hacer, pero por ejemplo algunas propuestas:

  1. Desactiva el acceso de usuarios locales, y deja sólo el acceso anónimo

  2. Configura el archivo de log (revisa cual es)

  3. Crea un mensaje de bienvenida a tu servicio (banner)

  4. Los usuarios pueden ver el contenido de los directorios (activar / desactivar)

  5. Permite la escritura de archivos (activar/desactivar)

  6. Activa el acceso a algunos usuarios (crea usuarios sólo ftp)

  7. Restringe el acceso a usuarios sólo en sus directorios

  8. Crea usuarios sólo para ftp (aunque sean locales, que non tengan capacidad de ejecutar shell)

  9. Limita la transferencia de datos a un valor concreto (15 kbps, por ejemplo)

  10. Limita el máximo número de conexiones desde una IP concreta

5.2.8. Monitoreo del servicio#

Requisitos previos:

  1. ¿Funciona bien el servicio en local?

  2. Puedes revisar los logs del servicio

Actividad: Revisar logs

  1. Revisar los logs con un editor de texto

  2. ¿Cuántas conexiones hubo en la última hora?

  3. ¿Quien se conectó y para qué?

  4. Interpreta las líneas de log

  5. Comprueba los accesos públicos al servicio

5.2.9. Acceso Público#

Configuración para acceso público (opcional):

  1. ¿Está escuchando en la interfaz de red pública?

  2. ¿Están los puertos correspondientes abiertos en el firewall?

  3. Activa el modo pasivo y define acceso a los puertos

Configuración de los puertos (opcional)

Dependiendo del proveedor cloud e incluso de la configuración cliente (terminal), puede ser complejo de configurar. Por eso vamos a recomendar otros sistemas de transferencia de archivos cuando tengamos que Asegurar Servicios

Actividad: Comprueba el acceso público (opcional)

  1. ¿Puedes conectarte a tu servidor, desde fuera de su red?

  2. Haz algún cambio de configuración (Por ejemplo prohibe la subida de archivos) y vuelve a probar

  3. Comprueba los logs (no tengas un servicio público sin supervisar los logs)

5.2.10. Práctica Final#

Actividad: Práctica final

Instalar un servicio FTP