# Kit del curso 7 · Hardening de sistemas, endpoints y contenedores

## Qué es

Ficheros mínimos para repetir las dos terminales de contenedores: tres `Dockerfile` que construyen las imágenes **ficticias** `web:1.0`, `api:1.0` y `job:1.0` (con `busybox`), un script para construirlas y el espacio de nombres `tienda` de Kubernetes.

Ficheros: `Dockerfile.api` (252 bytes), `Dockerfile.job` (170 bytes), `Dockerfile.web` (347 bytes), `construir.sh` (462 bytes), `tienda-namespace.yaml` (236 bytes).

Todo es ficticio: empresas, personas, dominios `.example`/`example.com` y direcciones de documentación (RFC 5737). No hay datos reales ni personales.

## Requisitos

Docker (o Podman) para la primera terminal; `kubectl` y un clúster de pruebas (kind, minikube…) para la segunda.

## Cómo usarlo

Ejecuta `sh construir.sh` y después las órdenes `docker run` de la diapositiva. Para la segunda: `kubectl apply -f tienda-namespace.yaml` y las órdenes `kubectl label` de la diapositiva.

## Qué terminales cubre

Con ficheros de este kit:

| Terminal (diapositiva) | Ficheros del kit | Qué usa y qué variará |
|---|---|---|
| Terminal: docker run con privilegios mínimos («Ejecución endurecida de contenedores») | `Dockerfile.web`, `Dockerfile.api`, `Dockerfile.job`, `construir.sh` | Docker y las tres imágenes ficticias `web:1.0`, `api:1.0`, `job:1.0`. **Qué variará:** Nada: la diapositiva no muestra salida (cada `docker run -d` imprime un identificador de contenedor, que será distinto). Los Dockerfile del kit no se pudieron ejecutar donde se preparó (sin Docker) |
| Terminal: perfil Restricted por etiquetas («Kubernetes: Pod Security Standards») | `tienda-namespace.yaml` | Un clúster de pruebas y el espacio de nombres `tienda`. **Qué variará:** La salida de la diapositiva es la del formato de la documentación de `kubectl`. No se pudo ejecutar donde se preparó el kit (sin `kubectl` ni clúster) |

Otras terminales del curso, que **no necesitan ficheros** del kit:

| Terminal (diapositiva) | Qué usa | Qué variará |
|---|---|---|
| Práctica: qué escucha un servidor Linux y cómo está su SSH («Reducir la superficie del sistema operativo») | Datos de tu propio servidor Linux (`ss` y `sudo sshd -T`) | Tus puertos y tu configuración; el orden de las líneas de `ss` puede variar |
| Práctica: comparar el sistema con una línea base mínima («Verificar la línea base: auditoría automática y desvíos») | Crea `base.txt`; lee los `sysctl` de tu propio Linux | Los valores reales de tu núcleo |

## Avisos

- **Sin verificar:** donde se preparó el kit no había Docker, `kubectl` ni clúster, así que estos ficheros no se ejecutaron. Son mínimos y usan solo opciones documentadas.
- La salida de `kubectl` de la diapositiva es la del formato de su documentación; la tuya dependerá de tu clúster.
- Verificación: las órdenes de cada terminal reproducible se ejecutaron el 10 y 11-10-2026 en Ubuntu 26.04 (WSL2), Git Bash y Windows PowerShell 5.1 (las pruebas de red, siempre dentro de `ip netns` y de 127.0.0.1), y la salida coincide con la diapositiva salvo lo indicado en «Qué variará». Las terminales marcadas «sin verificar» o «no reproducible» se indican aparte, con su motivo.
