Lafine Systems Design · Documentación técnica

Informe técnico de RoamSwitch Server Edition

Suite de seguridad de red autónoma y defensa de la integridad para infraestructuras de servidores Linux sin cabeza y en la nube

Versión v1.1.0 Alcance RoamSwitch Server Edition 1.3.2 Requisitos systemd + nftables Publicado 2026-09-07

§1Descripción general y principios básicos

RoamSwitch Server Edition es una suite de protección de integridad y seguridad de red autónoma residente y sin cabeza diseñada específicamente para infraestructuras de servidores Linux en proveedores de nube (AWS, GCP, Azure, VPS bare-metal) y centros de datos locales.

A diferencia de las ediciones de estaciones de trabajo cliente centradas en la movilidad y la adaptación del perímetro Wi-Fi, la edición Server se basa en cinco principios inflexibles: Caída predeterminada de entrada, Monitoreo de integridad de archivos de ruta crítica (FIM), LPE de kernel preventivo y refuerzo de escalada de privilegios, Telemetría de amenazas en tiempo de ejecución eBPF, y Aislamiento autónomo del host por espacio de aire con alertas de emergencia previas al despido.

Construido con una estricta garantía Zero Telemetry, el software no contiene bibliotecas de seguimiento o análisis HTTP/TLS externos. Todos los secretos administrativos y tokens están protegidos criptográficamente bajo estrictos permisos 0600.

1.1 Comparación: Edición Cliente versus Edición Servidor

Dimensión Edición de cliente (escritorio/móvil) Edición de servidor (sin cabeza/infraestructura)
Implementación Computadoras portátiles, estaciones de trabajo móviles para desarrolladores VM en la nube, nodos bare-metal, hosts de contenedores
Comportamiento de la red Cambio de perfil dinámico basado en Wi-Fi SSID/Gateway MAC Descarga predeterminada de entrada estática. Sólo se exponen los puertos permitidos explícitamente
Interfaz de usuario GUI de escritorio GTK3 + indicador de bandeja CUI puro sin cabeza. Comandos CLI + asistente interactivo
Notificaciones de incidentes Notificaciones de escritorio (libnotify) Envío directo a Telegram Bot, API de mensajería LINE y Webhooks (Slack/Discord)
Defensas Primarias Suplantación de ARP de Wi-Fi pública, BadUSB, cifrado de documentos ransomware Caída de reconocimiento externo, detección de manipulación FIM, fugas de contenedores, kernel LPE (CVE-2026-53362)

1.2 Principios arquitectónicos básicos

  • Zero Telemetry: El software nunca transmite telemetría, métricas o telemetría a servidores externos. Las llamadas a la red externa se producen estrictamente para alertas de incidentes configuradas por el usuario mediante la ejecución del subproceso curl. De forma predeterminada no incluye ninguna biblioteca de comunicación externa. La única excepción: solo si el operador activa explícitamente cve_kernel_map_updates_enabled (false por defecto), roamswitch-updater obtiene de forma anónima, una vez al día, la base de datos de CVE del kernel para la auditoría de aislamiento de contenedores desde lafine.net.
  • Descarga predeterminada entrante: los paquetes entrantes no destinados a un puerto de servicio declarado explícitamente o al puerto de mantenimiento SSH administrativo se descartan en el nivel del kernel nftables sin generar paquetes ICMP RST.
  • Contención autónoma de cierre fallido: Las reglas de espacio de aire de emergencia sobreviven a los reinicios del demonio y a las fallas del proceso. Si actores externos intentan vaciar las tablas de nftables, el demonio detecta la desviación y restaura el aislamiento en cuestión de segundos.
  • 0600 Protección de secreto criptográfico: /etc/roamswitch/server.conf aplica permisos estrictos 0600 (legibles solo por root) tras la creación y cada actualización.

§2Threat Landscape & Adversary Model

Modern internet-facing servers confront relentless automated scanning, container breakout vectors, and zero-day kernel privilege escalations.

Key Threat Vectors Addressed
  1. Reconocimiento automatizado y exposición de bases de datos: escáneres de Internet que localizan puertos de bases de datos internos expuestos involuntariamente (MySQL 3306, Redis 6379, Postgres 5432).
  2. Manipulación de ruta crítica e inserción de puerta trasera: Intrusos que establecen persistencia modificando los archivos binarios de autenticación centrales (/bin/login, /usr/bin/sudo, /etc/pam.d/*, /etc/shadow).
  3. Escalada de privilegios del kernel (CVE-2026-53362 Frag Gap): atacantes sin privilegios que utilizan espacios de nombres de usuario como armas (unshare -U -r) para desencadenar la corrupción de la memoria del kernel y escalar a la raíz.
  4. Container Socket Breakout: contenedores mal configurados con indicadores /var/run/docker.sock o --privileged montados que ejecutan acciones raíz en el sistema operativo host.
  5. Espionaje de memoria de procesos: los atacantes adjuntan ptrace o leen /proc/$pid/mem entre procesos para extraer claves privadas o credenciales.

§3System Architecture

RoamSwitch Server Edition operates as native Rust binaries designed for minimal memory and zero CPU overhead.

┌─────────────────────────────────────────────────────────────┐
│  Espacio de usuario y administrador                         │
│                                                             │
│   roamswitch (CLI)             roamswitch-mcp (AI Agent)    │
│   · server status (30 puntos)   · herramientas de auditoría │
│   · server config / setup      · stdio JSON-RPC             │
│   · fim verify / update                                     │
│        │                               │                    │
└───────┼───────────────────────────────────┼─────────────────┘
         │ (comandos CLI y config) │ (stdio)
┌───────▼───────────────────────────────────▼─────────────────┐
│  Base del sistema (systemd + privilegio root)               │
│                                                             │
│   roamswitch-server-daemon                                  │
│   ├── CriticalPathFim (barrido SHA-256 en 2º plano)         │
│   ├── módulo de integración eBPF/Falco                      │
│   ├── Notifier (alertas Telegram / LINE / Webhook)          │
│   └── Air-Gap Controller (reglas de emergencia nftables)    │
│                                                             │
│   Configuración: /etc/roamswitch/server.conf (permiso 0600) │
│   BD de integridad: /var/lib/roamswitch/fim_baseline.db     │
└─────────────────────────────────────────────────────────────┘

§4Core Defense Mechanisms

4.1 Boundary Security (Inbound Default Drop)

nftables applies policy drop on inbound traffic, permitting established connections, loopback, and explicitly configured ssh_ports and allowed_ports.

Preservation of SSH management ports prevents accidental operator lockout during emergency Air-Gap states.

4.2 Critical Path File Integrity Monitoring (FIM)

Monitors 150+ critical OS authentication and administrative files (/bin/login, /usr/sbin/sshd, /etc/pam.d/*, etc.). Calculates SHA-256 hashes against /var/lib/roamswitch/fim_baseline.db. Package manager hook /etc/apt/apt.conf.d/99roamswitch-fim automatically updates the baseline following authorized apt upgrade operations.

4.3 Kernel & Container Hardening

Frag Gap (CVE-2026-53362) Mitigation: Enforces user.max_user_namespaces = 0 via sysctl, neutralizing LPE vectors. Yama LSM Protection enforces kernel.yama.ptrace_scope = 2, preventing unauthorized memory inspection. Container workloads are audited for docker.sock exposure.

Los puertos publicados por Docker (-p) tienen un problema conocido de evasión del firewall estándar del host, por lo que protect_docker_ports=true (predeterminado) inserta permanentemente reglas de inspección en la cadena DOCKER-USER, bloqueando cualquier tráfico externo no permitido explícitamente. Además, una protección siempre activa vigila docker events en tiempo real y le notifica de inmediato cuando se inicia un contenedor --privileged o se monta /var/run/docker.sock, un riesgo de escape del contenedor (no requiere configuración; solo notifica, sin bloqueo automático). Para los hosts que gestionan archivos de terceros —un relé de correo, una carpeta compartida—, un File Scan Guard opcional (YARA integrado más ClamAV opcional) ofrece análisis periódicos y cuarentena automática.

4.4 eBPF Runtime Threat Telemetry & Anti-Bloat Tuning

Utiliza sondas eBPF modernas (CO-RE/BTF) para interceptar intentos de escalada de privilegios y ruptura de contenedores en milisegundos. Para eliminar los puntos débiles estándar de Falco ( hinchazón de registros, agotamiento del disco y sobrecarga de CPU), RoamSwitch estandariza un perfil optimizado (/etc/falco/config.d/99-roamswitch-optimized.yaml):

  • Filtrado de gravedad (priority: warning): suprime la telemetría operativa ruidosa (información/aviso) en un 95 %, lo que revela incidentes de seguridad estrictamente procesables.
  • Precaída a nivel de kernel (drop_failed_exit: true): Descarta las salidas de llamadas al sistema fallidas directamente en la sonda del kernel, lo que reduce los cambios de contexto de la CPU en más del 50 %.
  • Optimización del espacio de memoria (cpus_for_each_buffer: 2): comprime los buffers circulares de 8 MB a 2 MB, limitando estrictamente el uso de memoria a 30–50 MB.
  • Socket de dominio UNIX directo IPC: la transmisión directa a /var/run/roamswitch/events.sock elimina por completo la alteración de E/S del disco.
  • Capa de registro automatizada (/etc/logrotate.d/roamswitch-falco): la rotación diaria con maxsize 50M y 7 ciclos comprimidos evita permanentemente el agotamiento de la capacidad del disco.

4.5 Aislamiento de emergencia por espacio de aire con alertas previas al despido

Inmediatamente antes de cortar las interfaces de red ante una manipulación crítica, el demonio envía sincrónicamente alertas de emergencia a Telegram, LINE y Webhooks. Las alertas agregan automáticamente el servidor Hostname y Primary IP Address.

Formato de alerta de emergencia (JA/EN)
🚨 [RoamSwitch IMMINENT AIR-GAP] CRITICAL: IMMINENT AIR-GAP HOST ISOLATION (cve_2026_53362_lpe)
🚨 CRITICAL SECURITY INCIDENT DETECTED: cve_2026_53362_lpe
Host: production-node-01 (IP: 192.168.1.10)
Process: exploit_payload (PID: 4921)
ACTION: Initiating host Air-Gap network isolation (SSH preservation active).
WARNING: Outbound internet connectivity will be cut immediately after this message.
Timestamp: 2026-09-06 18:00:00

§5Paquete de diagnóstico de seguridad de 30 comprobaciones

Server Edition ejecuta 30 auditorías de estado de seguridad especializadas:

# Categoría Comprobar título Estándar y lógica
1Autenticación y accesoAutenticación de inicio de sesión y contraseña de raíz SSHVerifica PermitRootLogin no y autenticación de contraseña deshabilitada
2Autenticación y accesoCuentas de contraseña vacíasGarantiza que ningún usuario tenga un hash de contraseña en blanco en /etc/shadow
3Autenticación y accesoHigiene privilegiada de SudoersVerifica que no existan directivas NOPASSWD no autorizadas
4RedDenegación predeterminada entranteAuditorías nftables para la política de entrega entrante predeterminada
5Núcleo e integridadEspacios de nombres de usuarios sin privilegios (Frag Gap)Garantiza user.max_user_namespaces = 0 (CVE-2026-53362)
6Núcleo e integridadSoporte eBPF BTFValida la información del tipo BTF del kernel a través de /sys/kernel/btf/vmlinux
7Núcleo e integridadeBPF LSM activoComprueba bpf en el parámetro de arranque lsm= del kernel
8Núcleo e integridadAgente de seguridad en tiempo de ejecución eBPFValida enlace de telemetría con agentes Falco/Tetragon
9ContenedorAuditoría de montaje de zócalo DockerDetecta montajes de contenedores de /var/run/docker.sock
10ContenedorContenedores privilegiados de DockerAuditorías para cargas de trabajo de contenedores --privileged de alto riesgo
11integridadIntegridad de archivos de ruta crítica (FIM)Valida hashes SHA-256 de más de 150 binarios centrales del sistema operativo
12Núcleo e integridadProtección del proceso YamaVerifica kernel.yama.ptrace_scope = 2
13RedReenvío de IP deshabilitadoVerifica net.ipv4.ip_forward = 0
14RedProtección de cookies TCP SYNVerifica net.ipv4.tcp_syncookies = 1
15RedFiltrado de ruta inversa (rp_filter)Verifica el filtrado estricto de ruta inversa (rp_filter = 1)
16Núcleo e integridadRestricción de volcado de núcleoPreviene pérdidas de memoria de proceso a través de fs.suid_dumpable = 0
17OperacionesActualizaciones de seguridad automáticasValida la configuración de unattended-upgrades
18OperacionesSincronización de hora NTPComprueba la sincronización a través de chrony o systemd-timesyncd
19OperacionesProtección de fuerza bruta SSHVerifica el monitoreo activo a través de fail2ban o crowdsec
20Núcleo e integridadeBPF sin privilegios deshabilitadoCheques kernel.unprivileged_bpf_disabled = 1
21RedRedirecciones ICMP ignoradasPreviene el envenenamiento de ruta vía accept_redirects = 0
22RedTransmisiones de eco ICMP ignoradasMitiga los ataques DoS del amplificador Smurf
23Núcleo e integridadEndurecimiento de la memoria compartidaGarantiza que /dev/shm tenga opciones de montaje nodev,nosuid
24Autenticación y accesoProtocolos inseguros heredados ausentesVerifica la ausencia de demonios de texto sin cifrar (telnet, rsh, tftp)
25Núcleo e integridadVolcados de núcleo del proceso SUID restringidosPreviene fugas de credenciales en fallas binarias SUID

§6Autoverificación (verificación reproducible en un entorno Docker)

Los mecanismos de defensa de RoamSwitch Server Edition (Inbound Default Drop, Critical Path FIM, contención por gravedad mediante guard.yaml, el mecanismo de seguridad de procesos protegidos, el temporizador de seguridad, el endurecimiento del kernel contra LPE, entre otros) se pueden reproducir y verificar por completo en su propia máquina utilizando un contenedor Docker independiente como atacante externo contra el paquete real roamswitch-server v1.3.2 instalado desde el repositorio APT oficial (no un binario compilado localmente). A continuación se presentan los ocho escenarios de verificación y el comportamiento que debe observarse en cada uno (criterio de aprobación). Consulte la sección 6.3 más abajo para conocer los pasos y scripts exactos.

# Escenario Vector de ataque Criterio de aprobación
PENT-S1 Nmap SYN Escaneo sigiloso Sonda a través de los puertos 22, 80, 443, 3306, 8080 PASS (100% sigiloso)
PENT-S2 Sondeo de puerto no permitido conexiones curl directas al puerto 3306 y 8080 PASA
PENT-S3 Lista de bloqueo de Egress / C2 Intento de conexión saliente a una dirección registrada en el feed de IP maliciosas Superado
Solo se bloquea la dirección registrada; el tráfico hacia un host no incluido en la lista no se ve afectado (no es un bloqueo general)
PENT-S4 Ataque de manipulación FIM Inyectar carga útil de puerta trasera en /bin/login PASS (Detección instantánea)
PENT-S5 Contención basada en gravedad mediante guard.yaml Inyección de un evento Falco Critical que hace referencia a un proceso real Superado
El proceso responsable se aísla de la red y luego se termina con SIGKILL
PENT-S6 Mecanismo de seguridad para procesos protegidos Inyección de un evento del mismo tipo que hace referencia al PID real de sshd Superado
sshd sigue funcionando; solo se registra un rechazo como falso positivo
PENT-S7 Temporizador de seguridad Se dejó un incidente de Air-Gap sin confirmar (sin ACK del operador) Superado
Se restaura automáticamente si no hay confirmación; una vez confirmado (ACK), el aislamiento continúa hasta emergency-restore
PENT-S8 Brecha de fragmentación LPE del kernel Ejecutar unshare -U -r como usuario sin privilegios PASS (Rechazado)

Prevención de bloqueo de SSH

Mientras un Air-Gap a nivel de host (on_emergency) está activo, la sesión SSH del administrador no se corta, gracias a preserve_ssh_on_isolation=true (valor predeterminado). Este diseño evita estructuralmente el escenario en el que un falso positivo aísla completamente un servidor, dejándolo inaccesible sin acceso físico o a la consola. Puede verificar este comportamiento usted mismo con el paso equivalente a PENT-S7 en el conjunto de pruebas Docker anterior.

Límites del alcance de la verificación (una divulgación honesta)

Lo que esto no puede verificar

El endurecimiento del kernel (deshabilitar los espacios de nombres de usuario sin privilegios, aumentar el ptrace_scope de Yama) no se puede verificar de extremo a extremo desde dentro de un contenedor. Dado que estos sysctl no están aislados por espacio de nombres a nivel de contenedor, las escrituras desde un contenedor privilegiado (--privileged) no afectan a un entorno aislado de prueba, sino a la máquina real que ejecuta la prueba. Por lo tanto, esta verificación solo confirma que la escritura del sysctl se degrada correctamente (sin fallos) frente a un sistema de archivos de solo lectura; confirmar que el valor realmente se aplica requiere una máquina real o una VM, que es como está pensado que se ejecute el producto.

Reprodúzcalo usted mismo

Todos los resultados anteriores se pueden reproducir al 100 % en su propia máquina, utilizando únicamente el paquete de distribución oficial, mediante el conjunto de pruebas Docker publicado en el repositorio de soporte oficial (roamswitch-support); no se requiere acceso al código fuente ni confiar en nosotros.

# Obtener y reproducir la suite de verificación (instala automáticamente roamswitch-server desde el repositorio APT oficial)
git clone https://github.com/lafine1211/roamswitch-support.git
cd roamswitch-support/test/docker/server
./run.sh

Crea tres contenedores desechables (Target, Attacker y un señuelo C2) en la red bridge predeterminada de Docker y verifica automáticamente los 18 puntos, imprimiendo un informe. El resultado completo de la ejecución está publicado en RESULTS-PENTEST-SERVER-2026-09-07.md (incluyendo, por transparencia, los problemas del propio arnés de pruebas detectados y corregidos durante su construcción).

§7Operaciones, implementación y ciclo de vida

7.1 Asistente de configuración y herramientas de CUI sin cabeza

Gestión remota completa a través de CLI:

  • roamswitch server status: Salida de diagnóstico completa de 30 comprobaciones (JA/EN).
  • roamswitch server setup: Asistente de terminal interactivo para puertos y notificaciones.
  • roamswitch server config show / set <key> <val>: Automatización programable para Ansible/Terraform.
  • roamswitch server test-notify [all|telegram|line|webhook]: sondeo de notificación de un extremo a otro.

7.2 Embalaje

Distribuido a través de repositorios oficiales de Debian/Ubuntu .deb, repositorios RHEL/Fedora .rpm y Arch Linux AUR (roamswitch-server-bin).

§8Conclusión

RoamSwitch Server Edition ofrece un perímetro defensivo sin concesiones para las infraestructuras de servidores Linux: privacidad de telemetría cero, caída predeterminada de entrada, FIM de ruta crítica y mitigación proactiva de escalada de privilegios del kernel, lo que brinda una defensa autónoma unificada para los nodos de nube modernos.

Es el estándar de seguridad de servidores Linux de nueva generación que ofrece defensa en profundidad y contención autónoma (Air-Gap) en todas las etapas del vector de ataque que buscan los ciberatacantes: reconocimiento inicial, intrusión, escalada de privilegios y persistencia.

Este documento refleja la implementación tal como está en RoamSwitch Server Edition v1.3.2 (Inbound Default Drop, Critical Path FIM, motor de políticas guard.yaml, endurecimiento del kernel contra LPE, monitorización en tiempo de ejecución eBPF, temporizador de seguridad Air-Gap). Consulte el CHANGELOG de roamswitch-support para conocer el historial de cambios línea por línea. Para obtener la información más reciente, consulte lafine.net/linux.