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:
¿Cómo pongo disponibles un conjunto de archivos para cualquier usuario?
¿Cómo envío y/o descargo archivos entre usuarios?
¿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
Autenticación: anónimo vs autenticado
Protocolos:
HTTP, SSH y más
Servicio SMB/CIFS
Opción devops: uso de sistemas de control de versiones (git)
Actividad: Leer e investigar
Lee los enlaces anteriores
¿En qué puertos (predeterminados) escuchan estos protocolos?
¿Me puedes dar algún ejemplo de servidor FTP?
¿Y de cliente FTP?
¿Y para qué usar TFTP?
¿Qué protocolo/s crees que usa Google Drive (o similar) para comunicarse con tu cliente?
Haz una captura de tráfico (para explicarlo)
5.2.2. Usar SSH¶
Uso Básico
Copia Recursiva
Limitar Velocidad
Y más: Comando SCP: ejemplos de uso
Actividad: Usa SSH para enviar archivos
Crea el archivo local prueba.txt
Envíalo a otro equipo
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
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?
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).
Usa una opción poco habitual en el compando scp
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
Actividad: Usa rsync
Instala rsync en las máquinas que vayas a usar
Repite las tareas anteriores de scp, pero usando rsync
Haz una copia de seguridad de /etc cada día a las 23h
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
Activo
Pasivo
Puertos de Acceso
Dependen del modo
Complican las reglas de los firewall
El problema de los puertos (firewall)
5.2.5. El cliente FTP¶
El comando ftp
Usar un cliente FTP: Comandos CLI
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.
Abre una conexión remota en el servidor ftp (user anonymous / password tu email)
Activa el modo de conexión a pasivo (o activo) para ver los archivos
¿Qué archivos hay en el directorio raíz remoto?
Muévete por el árbol de directorios remoto
¿En qué directorio local estás? Muévete por tu directorio local
Cambia el modo de transferencia de archivos a texto (si es que ya no está) ¿Para qué necesitas cambiar el modo?
Activa la barra de progreso para ver cómo va la descarga
Descarga el archivo welcome.msg que está en el raíz. ¿Qué pone?
Revisa un conjunto de archivos, en vez de uno solo (usa patrones)
Sube un archivo de texto al servidor. ¿Puedes hacerlo? ¿Porqué?
5.2.6. El servidor FTP¶
Varios Clientes y Servidores FTP
Revisar los códigos de estado (en la RFC 959)
Usar un servidor ftp (por ejemplo Instalar VSFTP), pero valen otros.
Instalar el software
Configurarlo: Archivo /etc/vsftpd.conf
Probar la configuración
Actividad: Instalar un servidor FTP (acceso anónimo)
Lo probaremos en local, hasta asegurar el servicio ftp
Instala el servidor que hayas escogido
Revisa el ejecutable y el archivo de configuración
¿Cómo arrancas/paras/revisas el servicio vsftpd?
¿Donde están los archivos del servicio ftp?
Configura el acceso anónimo (y desactiva conexión con usuarios locales)
Conéctate con un cliente en consola, ¿Puedes navegar por el repositorio?
¿Puedes descargar algún archivo?
¿Puedes subir algún archivo?
¿En qué puertos está funcionando? (Activa modo pasivo en unos puertos concretos)
¿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:
Desactiva el acceso de usuarios locales, y deja sólo el acceso anónimo
Configura el archivo de log (revisa cual es)
Crea un mensaje de bienvenida a tu servicio (banner)
Los usuarios pueden ver el contenido de los directorios (activar / desactivar)
Permite la escritura de archivos (activar/desactivar)
Activa el acceso a algunos usuarios (crea usuarios sólo ftp)
Restringe el acceso a usuarios sólo en sus directorios
Crea usuarios sólo para ftp (aunque sean locales, que non tengan capacidad de ejecutar shell)
Limita la transferencia de datos a un valor concreto (15 kbps, por ejemplo)
Limita el máximo número de conexiones desde una IP concreta
5.2.8. Monitoreo del servicio¶
Requisitos previos:
¿Funciona bien el servicio en local?
Puedes revisar los logs del servicio
Actividad: Revisar logs
Revisar los logs con un editor de texto
¿Cuántas conexiones hubo en la última hora?
¿Quien se conectó y para qué?
Interpreta las líneas de log
Comprueba los accesos públicos al servicio
5.2.9. Acceso Público¶
Configuración para acceso público (opcional):
¿Está escuchando en la interfaz de red pública?
¿Están los puertos correspondientes abiertos en el firewall?
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)
¿Puedes conectarte a tu servidor, desde fuera de su red?
Haz algún cambio de configuración (Por ejemplo prohibe la subida de archivos) y vuelve a probar
Comprueba los logs (no tengas un servicio público sin supervisar los logs)
5.2.10. Práctica Final¶
Actividad: Práctica final