TEMA 3 FTP (SRC)

Qué es (idea general)

  • Servicio que permite mover o copiar ficheros entre equipos en red.
  • Incluye protocolos (formas de comunicación), servidores (software que atiende peticiones) y clientes (programas que solicitan transferencias).

Protocolos y servicios más habituales (qué son y cuándo usarlos)

  • FTP (File Transfer Protocol)
    • Tradicional, usa puerto 21 (control) y 20/puertos dinámicos para datos.
    • Modo activo vs pasivo: importante para firewalls/NAT.
    • Inseguro por defecto (envía credenciales en claro).
  • FTPS (FTP over TLS/SSL)
    • FTP + cifrado TLS. Mantiene control/flujo de FTP pero con TLS.
    • Recomendado si necesitas compatibilidad con clientes FTP pero quieres cifrado.
  • SFTP (SSH File Transfer Protocol)
    • Va sobre SSH (puerto 22). No es FTP, es parte de OpenSSH.
    • Seguro por defecto y más fácil de usar tras firewalls (un único puerto).
  • SCP
    • Copia simple sobre SSH. Útil para transferencias puntuales.
  • rsync
    • Sincronización eficiente (solo copia diferencias). Puede usar SSH como transporte. Ideal para backups.
  • TFTP (Trivial FTP)
    • Muy simple, sin autenticación, usado en arranque de dispositivos (PXE). No es seguro.
  • WebDAV
    • Extiende HTTP(S) para editar/gestionar ficheros remotos; útil cuando se integra con servidores web.
  • SMB/CIFS (Samba) y NFS
    • Sistemas de archivos en red: montan carpetas remotas como si fueran locales. Más apropiados para compartición en LAN.

Componentes principales

  • Servidor: software que ofrece el servicio (ej.: vsftpd, proftpd, Pure-FTPd para FTP; OpenSSH para SFTP; vs. Samba para SMB).
  • Cliente: programas para transferir (FileZilla, lftp, ftp, sftp, scp, rsync, navegador web, montajes CIFS/NFS).
  • Autenticación: usuarios locales, bases de datos propias, certificados/TLS, llaves SSH.
  • Permisos y chroot: limitar qué directorios puede ver/usar cada usuario (importante por seguridad).

Puertos y NAT / firewalls (point-form)

  • FTP: control 21, datos en 20 o puertos dinámicos → problemas con NAT (por eso existe modo pasivo).
  • FTPS: 21 + TLS; sigue necesitando control de puertos para datos.
  • SFTP/SCP/SSH: puerto 22 (más sencillo a través de NAT).
  • TFTP: puerto 69 UDP.
  • Ajustar reglas de firewall y abrir puertos o usar pasv para FTP.

Comandos y ejemplos prácticos (rápidos)

  • FTP (cliente clásico): ftp servidor
  • SFTP: sftp usuario@servidor
  • SCP: scp fichero usuario@servidor:/ruta/destino
  • Rsync (con SSH): rsync -avz fichero usuario@servidor:/ruta/
  • Comprobación de puerto: ss -ltnp | grep :21 o ss -ltnp | grep :22

Buenas prácticas de seguridad

  • Evitar FTP sin cifrado en redes inseguras.
  • Preferir SFTP o FTPS (si necesidad de compatibilidad).
  • Usar llaves SSH en vez de contraseñas para SFTP/SSH.
  • Chroot para usuarios FTP/SFTP (encerrar al usuario en su directorio).
  • Limitar permisos (principio de mínimo privilegio).
  • Registrar auditoría y activar logs.
  • Para servicios públicos: aplicar límites de velocidad, bloquear IPs sospechosas y hacer copias de seguridad.

Casos de uso típicos

  • Administración/backup: rsync sobre SSH.
  • Intercambio de ficheros con clientes: FTPS o SFTP (seguro y compatible).
  • Arranque de dispositivos: TFTP/PXE.
  • Compartición en LAN (oficina): Samba (SMB) o NFS.

Qué comprobar cuando algo falla

  • ¿Puerto correcto abierto en servidor y firewall?
  • ¿Protocolo usado (FTP vs SFTP) coincide en cliente y servidor?
  • ¿Modo FTP activo/pasivo correcto para la red?
  • Revisar logs del servidor (vsftpd/proftpd/sshd/samba).
  • Comprobar permisos y propietarias del fichero/destino.

EJERCICIO PRACTICO

Resumen rápido de lo que haremos

  1. Instalar IIS + servicio FTP (y Telnet).
  2. Crear grupo usuariosftp y 3 usuarios (javier, apellido1, apellido2).
  3. Crear carpetas: C:\ftp\LocalUser\<usuario>\privado y C:\ftp\publico.
  4. Poner permisos NTFS correctos (cada usuario solo puede su privado).
  5. Crear sitio FTP en IIS con aislamiento de usuario.
  6. Probar con cliente línea de comandos y con FileZilla desde Linux.
  7. Ver sesiones activas, reiniciar servicio, mostrar espacio en disco, logs y restricciones IP.

Paso 1 — Instalar IIS + FTP y Telnet (PowerShell)

Abre PowerShell como administrador y ejecuta (copiar/pegar):

Install-WindowsFeature Web-Server -IncludeManagementTools
Install-WindowsFeature Web-Ftp-Server,Web-Ftp-Service,Web-Ftp-Ext
Install-WindowsFeature Telnet-Client
  • Sobre TFTP: Windows no trae cliente TFTP en todas las ediciones; si tu ejercicio lo pide y no aparece, instala una utilidad TFTP (por ejemplo Tftpd64) desde su web o pide permiso al profe.
  • Después de esto, abre IIS Manager (inetmgr).

Paso 2 — Crear grupo y usuarios (CMD/PowerShell)

En PowerShell (Admin) o CMD:

# Crear grupo local
net localgroup usuariosftp /add

# Crear usuarios (elige contraseñas seguras)
net user javier P@ssw0rd! /add
net user apellido1 P@ssw0rd! /add
net user apellido2 P@ssw0rd! /add

# Añadir usuarios al grupo
net localgroup usuariosftp javier /add
net localgroup usuariosftp apellido1 /add
net localgroup usuariosftp apellido2 /add
  • IMPORTANTE: cambia P@ssw0rd! por una contraseña que elijas (mín. 8 caracteres con mayúsculas, minúsculas y números).

Paso 3 — Crear la estructura de carpetas

En PowerShell o CMD:

mkdir C:\ftp
mkdir C:\ftp\LocalUser
mkdir C:\ftp\LocalUser\javier\privado
mkdir C:\ftp\LocalUser\apellido1\privado
mkdir C:\ftp\LocalUser\apellido2\privado
mkdir C:\ftp\publico

# Crear ficheros de ejemplo
echo "archivo de javier" > C:\ftp\LocalUser\javier\privado\leerme.txt
echo "archivo de apellido1" > C:\ftp\LocalUser\apellido1\privado\leerme.txt
echo "archivo de apellido2" > C:\ftp\LocalUser\apellido2\privado\leerme.txt
echo "ayuda publica" > C:\ftp\publico\leerme.txt

Paso 4 — Establecer permisos NTFS (cada usuario solo su carpeta)

La idea: cada usuario tendrá control total sobre su carpeta privado, y no podrá entrar en la de los demás. Ejecuta como admin:

# Asegurar permisos básicos (Administrators y SYSTEM tienen control)
icacls "C:\ftp" /grant Administrators:F /grant "NT AUTHORITY\SYSTEM":F

# Quitar herencia y dar permisos exclusivos a cada usuario en su carpeta
icacls "C:\ftp\LocalUser\javier\privado" /inheritance:r
icacls "C:\ftp\LocalUser\javier\privado" /grant javier:(OI)(CI)F

icacls "C:\ftp\LocalUser\apellido1\privado" /inheritance:r
icacls "C:\ftp\LocalUser\apellido1\privado" /grant apellido1:(OI)(CI)F

icacls "C:\ftp\LocalUser\apellido2\privado" /inheritance:r
icacls "C:\ftp\LocalUser\apellido2\privado" /grant apellido2:(OI)(CI)F

# Carpeta publica: lectura para anónimo/IUSR e IIS_IUSRS
icacls "C:\ftp\publico" /grant "IUSR":R /grant "IIS_IUSRS":R /grant Administrators:F
  • (OI)(CI)F = aplicar a objetos y subcarpetas, Full control.
  • Si IUSR no existe, usa AUTHENTICATED USERS o crea regla para IIS_IUSRS. Para acceso anónimo IIS usará la cuenta IUSR.

Paso 5 — Crear el sitio FTP en IIS (GUI paso a paso)

Abre IIS Manager → en el panel de la izquierda clic derecho en SitesAdd FTP Site…

  • FTP site name: FTP_Javier
  • Physical path: C:\ftp (o C:\ftp\LocalUser si prefieres)
  • Click Next.

Binding and SSL:

  • IP address: elige la IP de la máquina (o All Unassigned).
  • Port: 21
  • SSL: para prácticas puedes seleccionar No SSL (inseguro, pero simple). Idealmente usar FTPS en producción.

Authentication / Authorization:

  • En Authentication: activa Basic (y Anonymous si quieres carpeta pública).
  • En Authorization rules:
    • Añade regla: AllowSpecified roles or user: escribe usuariosftp (permite a ese grupo) → Check Read y Write.
    • Si activas acceso anónimo para la carpeta pública, añade regla que permita Anonymous users con Read.

Haz Finish.


Paso 6 — Configurar Aislamiento de Usuarios (User Isolation)

En IIS Manager, selecciona el sitio FTP creado → en la vista central busca FTP User Isolation → doble click → selecciona «User name directory (disable global virtual directories)».
Esto hará que, cuando un usuario javier se conecte, el servidor intente ubicar su carpeta en C:\ftp\LocalUser\javier\... (por eso la estructura). Ahora cada usuario quedará «encerrado» en su carpeta por el modelo de aislamiento.


Paso 7 — Probar acceso por línea de comandos (en Windows)

Desde otra máquina cliente (o la misma, con localhost), abre CMD y prueba:

ftp <IP_DEL_SERVIDOR>
# ejemplo: ftp 192.168.1.100
# Cuando pida usuario: javier
# cuando pida pass: (la contraseña que pusiste)
# Comandos dentro del cliente ftp:
ls
cd privado
put archivo_local.txt
get leerme.txt
bye
  • Repite con apellido1 y apellido2. Debes poder subir/descargar en su propio privado, pero no ver el contenido de otras carpetas.

Paso 8 — Ver sesiones actuales y desconectar usuarios

En IIS Manager:

  • Selecciona el sitio FTP → en la vista central abre FTP Current Sessions.
  • Verás las conexiones activas; selecciona una y clic en Disconnect para desconectarla.

Paso 9 — Reiniciar / detener el servicio FTP

Opciones:

  • Reiniciar sólo IIS/FTP:
    • En PowerShell (Admin): iisreset /restart
    • O detener/reiniciar el servicio FTP: net stop ftpsvc net start ftpsvc
  • Para detener/arrancar solo el sitio FTP: en IIS Manager -> Sites -> selecciona tu sitio -> Stop / Start.

Paso 10 — Mostrar espacio disponible en disco (en IIS)

IIS FTP tiene una opción de Directory Browsing que permite mostrar información, incluyendo espacio libre. Para activarla:

  1. En IIS Manager selecciona el sitio FTP → abre FTP Directory Browsing.
  2. Marca Enable Directory Browsing.
  3. Busca (si aparece) la opción Show available disk space y márcala.
    • Si tu versión no muestra exactamente ese texto, activa Directory Browsing; al listar carpetas vía FTP el cliente puede solicitar espacio y el servidor lo devolverá si la función está activa.
  4. Aplica cambios y prueba conectándote y listando (ls) — algunos clientes muestran la línea de espacio libre devuelta por el servidor.

(Alternativa manual: desde PowerShell en el servidor, usar Get-PSDrive -PSProvider FileSystem para ver espacio y capturarla para la práctica.)


Paso 11 — Restringir acceso por IP (para bloquear a un compañero)

En IIS Manager → selecciona el sitio FTP → abre IP Address and Domain RestrictionsAdd Deny Entry… → introduce la IP del compañero para denegar acceso.
Puedes añadir reglas inversas para permitir sólo tu red.


Paso 12 — Probar con FileZilla desde Ubuntu

En tu máquina Ubuntu (cliente):

  • Abre FileZilla → Site Manager → New Site.
    • Host: IP_DEL_SERVIDOR
    • Protocol: FTP – File Transfer Protocol (o SFTP si usaste SSH)
    • Encryption: Only use plain FTP (o Require explicit FTP over TLS si usaste FTPS)
    • Logon Type: Normal
    • User: javier
    • Password: (la contraseña)

Conecta y prueba Upload / Download. Guarda la entrada en el gestor de sitios.


Paso 13 — Consultar logs del servicio FTP

Los logs de IIS FTP por defecto están en:

%SystemDrive%\inetpub\logs\LogFiles\FTPSVCx
  • Abre el Explorador y ve a C:\inetpub\logs\LogFiles\ y localiza la carpeta FTPSVC#.
  • Abre el fichero de log con el Bloc de notas para ver las acciones (conexiones, transferencias, errores).

También puedes ver eventos en el Visor de Eventos → Windows Logs → Application o los logs del servicio en IIS.


Consejos, notas y comprobaciones finales

  • Usa contraseñas seguras y cámbialas tras la práctica.
  • Para producción, usa FTPS (requiere certificado SSL) o mejor SFTP (SSH).
  • Si los usuarios no pueden entrar, comprueba: credenciales, reglas de autorización en IIS, permisos NTFS y que el aislamiento de usuario coincide con la estructura de carpetas.
  • Si put/get fallan con errores de data connection: comprobar firewall (puerto 21 y rango de puertos pasivos si configuraste pasv).
  • Para la práctica, guarda pantallazos de:
    • creación de usuarios y grupo,
    • árbol C:\ftp\... con ficheros,
    • el sitio FTP en IIS (pantalla de binding y opciones),
    • prueba FTP por línea de comandos (comandos put/get),
    • FTP Current Sessions,
    • logs (archivo del log mostrando actividad),
    • regla IP denial aplicada.

Publicaciones Similares

  • TEMA 1 y 2 PRINCIPIOS SEG Y NORMAS

    CAPÍTULO 1 · Principios de seguridad y alta disponibilidad CAPÍTULO 2 · Normativa legal y protección de datos (resumen) Marco vigente en España/UE: el régimen actual es RGPD (UE 2016/679) + LOPDGDD (LO 3/2018). La antigua LOPD 15/1999 queda como referencia histórica. Para servicios online y comunicaciones comerciales aplica además la LSSI-CE 34/2002. Principios de…

  • | |

    T7.-Sistema Operativo Libre II

    1.1. Historia 1.2. Generalidades, introducción de comandos Sintaxis: orden [-modificadores] [argumentos] Modos de ejecución de comandos: 1.3. Directorios Comando para el uso en directorios: 1.4. Ficheros Comandos para el uso en ficheros: 1.5.-Usuarios del Sistema Los usuarios se identifican mediante una numeración, y se almacenan en /etc/passwd Comandos: 1.6.-Redireccionamiento y tuberías 2.-Comandos de permisos Representación…

  • |

    TEMA 03 (RDE)

    CONFIGURACIÓN Y ADMINISTRACIÓN DE REDES LOCALES 3.-Configuración a nivel de capa de red 3.2. Subredes (Subneting): 192.168.0 y 192.168.1 identifican la red. Por lo que el PC A y el PC B pueden comunicarse, al estar en la misma red, pero no se comunicarán con el PC C y PC D, que están en otra…

  • Curso Básico de Packet Tracer (en español)

    Curso Básico de Cisco Packet Tracer *Este curso consta con contenido oficial de CISCO. Sólo he doblado vídeos al español para complementar el fantástico curso de Netcad.com, te invito a que los hagas en su página oficial. ¿Que es Packet Tracer?: Software de emulación de redes Instalación de Packet Tracer: Introducción a CISCO PACKET TRACER…

  • | |

    T2.- Repaso

    Carcasas: Caja mini, pocas prestaciones, muy pequeñas, placas mini-ITX, máximo 3 bahías o ninguna, formatos SFF (Small Factor Form) Caja Slim: Estrechas, placas micro-ATX o Flex-ATX, 1 o 2 bahías Caja Sobremesa: Monitor encima, similar en prestaciones a las torres. Caja Microtorre: Formato vertical, placas Flex-ATX o formatos de 25 a 32 cm, Bahias internas…

  • | |

    COMANDOS CONSOLA

    1.-Configurar un Router con DHCP IP de red: 192.168.1.0 (las IPs son de ejemplo) 2.-Conexión de 2 Routers Podemos duplicar la red anterior teniendo en cuenta que debemos cambiar las ips: IP de Red: 192.168.3.0 (las IPs son de ejemplo) IP de Router A: 192.168.1.1 IP de Router B: 192.168.3.1 Configuración del enrutamiento estático: (Al…

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *