Rebelión en la granja — investigación y laboratorio de dispositivos
Investigación sobre granjas de dispositivos y automatización completa para levantar un laboratorio Android sobre un chasis de blades Debian. Conclusión que ordena el repositorio: el cuello de botella nunca fue el cómputo sino la identidad. Desde que la atestación de dispositivo pasó de estadística a criptográfica, un servidor no puede hacerse pasar por un teléfono — le falta una clave grabada en fábrica que ningún software produce. Contenido: - 01_investigacion/ — capa de identidad (verificación telefónica, eSIM, reputación de IP, atestación por hardware, correlación entre cuentas), mercado y players, stack técnico, marco legal en la UE - 02_device_lab/ansible/ — Ansible para 16 blades: preflight de solo lectura que identifica el hardware por DMI, despliegue de redroid en Docker y control de flota por adb. Solo ansible.builtin, sin colecciones externas - docs/ — requisitos, costes y repaso de seguridad con 11 hallazgos - 03_charla/ — guion para HackMadrid / Hackmeeting València Estado: la automatización está escrita pero SIN ejecutar contra hardware. YAML validado, plantillas renderizadas en ambos modos de red y fleet.sh comprobado con bash -n. El modelo de blade sigue sin confirmar.
This commit is contained in:
commit
74bfbe9437
42 changed files with 2989 additions and 0 deletions
80
02_device_lab/ansible/group_vars/all.yml
Normal file
80
02_device_lab/ansible/group_vars/all.yml
Normal file
|
|
@ -0,0 +1,80 @@
|
|||
# ---------------------------------------------------------------------------
|
||||
# Mandos del operador. Lo que se toca normalmente está aquí.
|
||||
# Los defaults internos de cada rol están en roles/<rol>/defaults/main.yml
|
||||
# ---------------------------------------------------------------------------
|
||||
|
||||
# --- Android ---------------------------------------------------------------
|
||||
|
||||
# Imagen de redroid. Tags: 11.0.0-latest, 12.0.0-latest, 13.0.0-latest, 14.0.0-latest
|
||||
# Android 13 es el punto dulce: memfd en vez de ashmem (un módulo de kernel menos)
|
||||
# y todavía ligero.
|
||||
redroid_image: "redroid/redroid:13.0.0-latest"
|
||||
|
||||
# RAM por instancia. 2 GB es el mínimo cómodo para Android 13.
|
||||
redroid_mem_mb: 2048
|
||||
|
||||
# RAM que se le deja al anfitrión (Debian + Docker + margen).
|
||||
redroid_host_reserve_mb: 1500
|
||||
|
||||
# Instancias por nodo. 0 = automático a partir de la RAM real del blade:
|
||||
# (RAM_total - reserva) / redroid_mem_mb
|
||||
# Con 8 GB por blade eso da 3. Súbelo a mano solo si sabes lo que haces.
|
||||
redroid_instances: 0
|
||||
|
||||
# Tope duro por si un blade tiene mucha RAM y te comes los cores.
|
||||
redroid_max_instances: 8
|
||||
|
||||
# Pantalla de las instancias.
|
||||
redroid_width: 720
|
||||
redroid_height: 1280
|
||||
redroid_dpi: 320
|
||||
|
||||
# Sin GPU en los blades -> render por software. Con GPU pasable: "host".
|
||||
redroid_gpu_mode: guest
|
||||
|
||||
|
||||
# --- Red -------------------------------------------------------------------
|
||||
|
||||
# portmap -> cada Android detrás de NAT, adb en <ip_blade>:<puerto>
|
||||
# Funciona en cualquier sitio. Es el default sensato.
|
||||
#
|
||||
# macvlan -> cada Android coge una IP REAL de la LAN a través del switch
|
||||
# FlexIO del chasis. Los APKs se ven como pares de red de verdad.
|
||||
# Es lo que quieres para el caso de los dos APKs de oasis_mobile.
|
||||
# Ojo al gotcha documentado en el README.
|
||||
redroid_network_mode: portmap
|
||||
|
||||
# --- solo si redroid_network_mode == macvlan ---
|
||||
redroid_macvlan_network: redroid-lan
|
||||
redroid_macvlan_parent: "" # p.ej. eno1 (interfaz física del blade)
|
||||
redroid_macvlan_subnet: "" # p.ej. 10.0.0.0/24
|
||||
redroid_macvlan_gateway: "" # p.ej. 10.0.0.1
|
||||
redroid_macvlan_ip_prefix: "" # p.ej. "10.0.0." (el offset va por host en el inventario)
|
||||
|
||||
# --- solo si redroid_network_mode == portmap ---
|
||||
# Primer puerto adb en el blade. Las instancias ocupan base, base+1, base+2...
|
||||
redroid_adb_base_port: 5555
|
||||
|
||||
# A qué interfaz se ata adb. 0.0.0.0 = TODAS, y adb no tiene autenticación:
|
||||
# quien llegue al puerto es root en el Android, y desde un contenedor privilegiado
|
||||
# eso es una vía hacia el anfitrión. Ver docs/seguridad.md (hallazgo S1).
|
||||
#
|
||||
# Pon aquí la IP interna del blade en la red del chasis para que adb no escuche
|
||||
# en nada más. Por host, en el inventario:
|
||||
# blade-02: { ansible_host: 10.0.0.12, redroid_adb_bind_ip: 10.0.0.12 }
|
||||
redroid_adb_bind_ip: "0.0.0.0"
|
||||
|
||||
|
||||
# --- Rutas -----------------------------------------------------------------
|
||||
|
||||
redroid_base_dir: /opt/redroid
|
||||
|
||||
|
||||
# --- Preflight -------------------------------------------------------------
|
||||
|
||||
# Flags de CPU que Android x86_64 necesita. Si un blade no las tiene,
|
||||
# preflight lo marca como NO APTO en vez de dejarte descubrirlo a medio despliegue.
|
||||
preflight_required_cpu_flags:
|
||||
- sse4_2
|
||||
- ssse3
|
||||
- popcnt
|
||||
Loading…
Add table
Add a link
Reference in a new issue