Guía de despliegue y administración
Colector Vantage
Equipo autónomo de ingesta de sensores y mapeo de dependencias de red.
| Aplica a la versión | v1 |
| Revisión | 1.0 |
| Actualizado | 2026-09-07 |
| Despliegue | Equipo Docker de un nodo (imagen base Ubuntu 22.04) |
| Para quién | Operadores de red y seguridad que despliegan, verifican y mantienen el Colector |
1Panorama general
El Colector Vantage es un equipo autocontenido que recibe telemetría de flujos desde sensores distribuidos, la convierte en un mapa vivo de dependencias de la red y transforma ese mapa en política de segmentación. Es el flujo de trabajo de observación pasiva de un producto de mapeo de dependencias de aplicaciones (ADM), corriendo sobre hardware que usted ya tiene.
1.1Sobre esta guía
Acá se describe cómo desplegar, configurar, verificar y operar un nodo Colector. Los comandos están escritos para un servidor Linux con Docker Compose. En todo el documento valen estas convenciones:
- El texto monoespaciado, por ejemplo
ADM_INGEST_PORT, corresponde a una variable, un archivo, un puerto o un comando literal. - El
$al comienzo de una línea marca el prompt del shell. Las líneas sin ese prefijo son la salida del comando. - Los recuadros de Nota, Cuidado y Advertencia contienen información que afecta el resultado o la seguridad.
1.2Qué es y qué no es
El Colector es un producto aparte, no un cliente del portal central de administración (Switchboard). Mantiene su propio login, su propio registro de usuarios, su propio secreto de sesión y su propia base de datos. Lo único que viaja entre ambos es una consulta periódica de máquina a máquina, la sincronización de identidades, que baja al Colector las identidades de los sensores y el paquete de confianza de la flota. El Colector nunca firma certificados y nunca abre una sesión contra el portal.
El enrolamiento de sensores y la firma de certificados se hacen en Switchboard, que es donde vive la autoridad certificadora de la flota. El Colector solo valida los certificados de los sensores durante la ingesta: se entera de cuáles son válidos a través de la sincronización de identidades.
Si el Colector se despliega sin Switchboard, vea el capítulo 7.3: puede actuar como su propia CA y firmar sus sensores, o confiar en una CA que usted aporte.
1.3Capacidades de un vistazo
Flujos por mTLS
Los sensores entregan lotes de flujos por un puerto mTLS dedicado. El certificado de cliente es la identidad del sensor.
IPFIX y NetFlow
Colector opcional para IPFIX, NetFlow v9 y v5, de modo que switches que ya están instalados alimenten el mapa sin desplegar ningún sensor.
Mapa de dependencias
Agregación por pares ordenados, ranking por capa, supresión de nodos concentradores y top-N, para que una red de 10.000 aristas siga siendo legible.
Línea base y anomalías
Las líneas base congeladas detectan qué dejó de conversar. Los z-scores móviles marcan aristas que se comportan distinto de sí mismas.
Listas de permitido
Las dependencias observadas se convierten en una lista de permitido bajo deniega por omisión, exportable a nftables o iptables.
Rescate de paquetes
Los nodos Vantage Deep toman trabajos de captura y suben el pcap correspondiente para analizarlo en Wireshark.
2Arquitectura
2.1Componentes
Un despliegue se compone del nodo Colector, uno o más sensores, y el portal central Switchboard, dueño de la autoridad certificadora. El Colector corre un solo contenedor que expone dos puertos de escucha: uno para los administradores (login y tablero) y otro para sensores (ingesta mTLS).
Dos tipos de sensor alimentan al Colector. El sensor Vantage es la fuente principal de telemetría. El nodo Vantage Deep es un acompañante opcional para rescatar paquetes. El equipamiento de red que ya está instalado también puede exportar flujos directamente, sin instalar ningún sensor.
| Rol | Nombre interno | Plataforma | Qué aporta |
|---|---|---|---|
| Sensor Vantage | flow-probe | Raspberry Pi 4/5, SPAN pasivo | Metadatos de flujo: las aristas de dependencia con que se arma el mapa. Es la fuente de datos central. |
| Vantage Deep | pcap-node | Servidor Ubuntu, anillo de captura completa | Rescate de paquetes bajo demanda, para examinar a nivel de paquete una dependencia marcada. |
| Exportador existente | ipfix:<ip> | Cualquier switch o router que exporte | Flujos IPFIX o NetFlow, etiquetados por exportador. No requiere sensor. |
Un sensor Vantage le dice que una dependencia existe. Un nodo Vantage Deep guarda los paquetes, así que responde la pregunta que un mapa de flujos por sí solo no puede: muéstreme qué cruzó realmente por el cable.
# plano de control y CA (servidor aparte)
Switchboard :8443 ──────────────┐ sincronizacion de identidades
│ (consulta, cron, cada 5 min)
│ { ca_bundle_pem, probes, probe_certs }
▼
Sensores ──mTLS :8843──► ┌───────────────────────────────────────────┐
(sensor Vantage, │ Colector Vantage │
nodo Vantage Deep, │ :443 login y tablero (administradores) │
equipos IPFIX/NetFlow) │ :8843 ingesta mTLS de flujos │
Operador ──HTTPS :443──► │ SQLite (WAL) data/adm/adm.db │
└───────────────────────────────────────────┘
2.2Camino de los datos
Los flujos en bruto nunca se guardan. En la ingesta, cada lote se pliega en aristas de dependencia, una fila por cada tupla ordenada (origen, destino, puerto, protocolo), y los flujos individuales se descartan. Eso reduce el volumen en unos cuatro órdenes de magnitud y responde derechamente lo que preguntan los operadores: qué habla con qué, por qué puerto, desde cuándo. El detalle a nivel de paquete se sirve por separado, desde el anillo de captura de un nodo Vantage Deep.
Todas las escrituras a la base pasan por un único hilo escritor. Es deliberado: SQLite en modo WAL admite muchos lectores simultáneos pero un solo escritor, y dejar que cada petición de ingesta compitiera por el candado de escritura fue la causa original de los database is locked con varios sensores en línea.
2.3Modelo de confianza
Dos puertos de escucha, dos modelos de autenticación:
| Escucha | Puerto | Se autentica con | Otorga |
|---|---|---|---|
| Tablero y API | 443 | Cookie de sesión firmada (usuario local, contraseña con bcrypt) | Acceso de operador o administrador a la interfaz y la API |
| Ingesta de flujos | 8843 | Certificado de cliente firmado por la CA de la flota (mTLS) | La identidad del propio sensor, solo para ingesta |
| IPFIX / NetFlow | 4739 | Nada. UDP sin autenticar (apagado por omisión) | Flujos etiquetados por IP del exportador, para dejar constancia del origen |
3Requisitos previos
3.1El servidor
- Un servidor Linux con Docker Engine y el complemento Compose.
- Dimensionamiento chico (hasta unos 8 sensores): 4 vCPU y 8 GB de RAM. El contenedor queda topado en 6 GB.
- Disco dimensionado para el histórico de aristas en
data/adm/adm.db(WAL). Por omisión se conservan 30 días de baldes horarios. - Salida hacia Switchboard para la sincronización de identidades, y entrada desde los sensores en el puerto de ingesta.
3.2Puertos y protocolos
| Puerto | Proto | Sentido | Para qué |
|---|---|---|---|
| 443 | TCP/TLS | Operador → Colector | Login, tablero y API REST |
| 8843 | TCP/mTLS | Sensor → Colector | Ingesta de flujos, RTT, JA3, latidos y pcap |
| 4739 | UDP | Exportador → Colector | IPFIX y NetFlow (apagado salvo que se habilite) |
| 8443 | TCP/TLS | Colector → Switchboard | Sincronización de identidades (saliente) |
3.3Certificados y paquete de confianza
El Colector necesita un par de certificado y llave de servidor para ambas escuchas, montado en solo lectura, y el paquete de CA de la flota para validar los certificados de cliente de los sensores. Ese paquete lo deja la sincronización de identidades en data/fleet-ca-bundle.pem y se referencia con la variable ADM_CA_BUNDLE_FILE.
Si el paquete de CA falta o está vacío, la escucha mTLS de ingesta no parte y los sensores no pueden entregar flujos. Confirme que la sincronización de identidades corrió al menos una vez antes de poner sensores en producción (ver el capítulo 6).
4Puesta en marcha
4.1Procedimiento
-
Dejar los certificados y la configuración
Deje el certificado y la llave de servidor bajo
certs/eingest-certs/. Creesync_config.jsoncon la URL de Switchboard y el token de sincronización.# sync_config.json (solo root: mantiene el token fuera de docker inspect) {"switchboard_url": "https://switchboard.ejemplo.net:8443", "token": "<token-de-sincronizacion>"} -
Construir y levantar el contenedor
$ docker compose build $ docker compose up -d
-
Programar la sincronización en el servidor
Corra el script de sincronización desde el cron del servidor, no dentro del contenedor, para que escriba en el directorio
data/que está montado.# /etc/cron.d: cada 5 minutos */5 * * * * cd /opt/vantage-collector && /usr/bin/python3 sync_identity.py >> /var/log/vantage-sync.log 2>&1 -
Crear el primer administrador
$ docker compose exec collector python -m backend.auth add admin '<contraseña>' admin
4.2Qué pasa en el primer arranque
En el primer arranque el contenedor genera un secreto de firma de sesión propio del despliegue y lo guarda en collector_secret.key, con permisos 0600. Ese valor es único del nodo y nunca se comparte con Switchboard, así que una cookie de sesión de uno jamás es válida en el otro.
El secreto se genera de nuevo cuando el archivo de llave falta o está vacío. Un archivo de cero bytes, por ejemplo de un montaje que quedó colgado, se trata como ausente y se reemplaza. Así el secreto de sesión nunca puede terminar siendo una cadena vacía sin que nadie se dé cuenta.
El código de la aplicación va horneado en la imagen, no montado desde el disco. Después de cambiar cualquier cosa bajo backend/ o frontend_collector/ hay que reconstruir y recrear el contenedor (docker compose build && docker compose up -d) para que el cambio tenga efecto.
5Referencia de configuración
5.1Variables de entorno
Toda la configuración de ejecución se entrega por variables de entorno en el archivo de Compose. Los valores por omisión están pensados para un despliegue chico de un solo nodo.
| Variable | Por omisión | Qué hace |
|---|---|---|
| ADM_DATA_DIR | /app/data/adm | Base SQLite y directorio de pcap |
| ADM_CA_BUNDLE_FILE | sin valor | Paquete de CA de la flota para verificar los certificados de sensor |
| ADM_INGEST_CERT_DIR | /app/certs | Certificado y llave de servidor para la escucha mTLS |
| ADM_INGEST_MTLS | 1 | Habilita la escucha mTLS de ingesta de flujos |
| ADM_INGEST_PORT | 8843 | Puerto de escucha de la ingesta mTLS |
| ADM_IPFIX | 0 | Habilita el colector IPFIX/NetFlow (sin autenticación) |
| ADM_IPFIX_PORT | 4739 | Puerto UDP de IPFIX/NetFlow |
| ADM_IPFIX_BIND | 0.0.0.0 | Dirección de escucha de IPFIX. Conviene acotarla a una interfaz de confianza |
| ADM_RETENTION_DAYS | 30 | Retención de baldes horarios antes de consolidar y podar |
| COLLECTOR_SESSION_MINUTES | 480 | Duración de la sesión del tablero |
| COLLECTOR_SECRET_FILE | collector_secret.key | Ruta del secreto de firma de sesión |
5.2Cuentas de usuario
Los usuarios se guardan localmente, con la contraseña cifrada con bcrypt. Hay dos roles: admin, con acceso completo, y operator. Las cuentas se administran desde el tablero, o por línea de comandos:
$ python -m backend.auth add <usuario> <contraseña> [admin|operator]
5.3Configuración del sensor
Un solo esquema es la fuente de verdad de todo lo que se le puede configurar a un sensor. El formulario del tablero, el instalador y el agente leen ese mismo esquema. La configuración se aplica desde la página del sensor en el tablero, o por API:
PATCH /api/adm/probes/<probe-id>/config # se valida antes de guardar POST /api/adm/probes/<probe-id>/validate # en seco: errores, avisos, dimensionamiento
La validación corre primero, así que el tablero no puede guardar una configuración que el agente después se negaría a ejecutar. Use la llamada validate para ver los errores, los avisos y la estimación de dimensionamiento antes de comprometer el cambio.
5.3.1 Modos de captura
Es la forma en que el tráfico espejado llega físicamente al sensor. Elija el modo que soporte su switch:
| Modo | Cómo llega el espejo | Interfaz que recibe |
|---|---|---|
| span | Tramas espejadas en capa 2, por cable directo desde un puerto SPAN | Interfaz de captura dedicada, en modo promiscuo y sin IP |
| rspan | Lo mismo, pero transportado por la red en una VLAN dedicada. Puede llegar etiquetado 802.1Q | Interfaz de captura dedicada. Hay que fijar capture_vlan |
| erspan | Encapsulado en GRE sobre IP. Lo desencapsula un túnel de kernel que crea el agente | Puede compartir la interfaz de gestión (necesita erspan_listen_ip) |
5.3.2 Regla de reparto de interfaces
En un sensor Vantage sobre Raspberry Pi los roles vienen fijos: la captura va en la interfaz 1 GbE integrada (eth0 o end0, por el camino nativo del RP1) y la gestión en la interfaz USB (enx<MAC> o eth1). La interfaz de captura corre en promiscuo, no lleva dirección y tiene los offloads apagados. Capturar por la interfaz USB queda rechazado salvo que se defina interfaces_override, que es la salida de emergencia para una placa cuya segunda interfaz integrada simplemente se llama parecido a una USB.
5.3.3 Variables principales
| Variable | Por omisión | Notas |
|---|---|---|
| capture_mode | span | span · rspan · erspan |
| capture_if | eth0 | La 1 GbE integrada, para span y rspan |
| mgmt_if | eth1 | Interfaz USB. Solo lleva metadatos, del orden de kilobytes |
| capture_snaplen | 128 | Solo cabeceras. Súbalo a 600 si va a clasificar con DPI |
| capture_vlan | 0 | Etiqueta de VLAN para RSPAN. 0 significa sin etiquetar |
| differentiate_vlans | true | Separa un par de equipos por identificador 802.1Q en un espejo troncal o RSPAN |
| ntp_server | obligatorio | Sin NTP las marcas de tiempo de la flota se desvían y deforman el grafo |
| mgmt_mode | dhcp | static exige mgmt_ip en formato CIDR |
| exporter | https | mTLS hacia el Colector. ipfix es el camino alternativo |
| collector_port | 8843 | La escucha mTLS de ingesta, no el 443 del tablero |
| dpi_enabled | false | Clasificación L7 con nDPI. Cuesta snaplen y CPU |
| rtt_enabled | false | Muestreo pasivo de RTT sobre el saludo TCP |
| ja3_enabled | false | Huella JA3 del ClientHello de TLS |
| pcap_enabled | false | Anillo local para bajar al detalle. pcap_ring_gb lo dimensiona |
| cert_rotation_days | 30 | Renueva el certificado de cliente esta cantidad de días antes de que expire |
5.3.4 El espejo del lado del switch (SPAN)
Un sensor Vantage es pasivo: el switch tiene que espejarle el tráfico. Conecte el puerto destino del SPAN a la interfaz de captura integrada del sensor.
Cisco IOS / IOS-XE (Catalyst)
monitor session 1 source interface GigabitEthernet1/0/1 - 24 both monitor session 1 destination interface GigabitEthernet1/0/48
Cisco NX-OS (Nexus)
monitor session 1 source interface Ethernet1/1-24 both destination interface Ethernet1/48 no shut
Arista EOS
monitor session VANTAGE source Ethernet1 - 24 monitor session VANTAGE destination Ethernet48
Las dos direcciones del espejo se suman sobre una sola interfaz. Pasado un 90% de la tasa de línea del 1 GbE, la interfaz empieza a botar tramas en silencio. El sensor marca esa condición como degradada y deja las aristas afectadas como parciales. Dimensione el espejo al enlace, o espeje solo un subconjunto de puertos.
5.3.5 Vantage Deep (pcap-node)
Un nodo Vantage Deep se configura pensando en retención, no en el reparto del espejo. Las variables que importan son pcapnode_capture_nic, pcapnode_backend (dumpcap es el motor implementado), pcapnode_retention_hours, que por omisión son 6, y pcapnode_link_gbps. No tiene ningún canal de entrada desde el Colector: consulta si hay trabajos de captura cuando manda su latido, y sube de vuelta el pcap que extrajo.
5.4Configuración de exportadores IPFIX y NetFlow
El equipamiento de red que ya exporta registros de flujo puede alimentar el mapa sin instalar ningún sensor. Habilite el colector con ADM_IPFIX=1 (revise el capítulo 9 por las implicancias de seguridad) y apunte los exportadores al UDP 4739. Los flujos quedan atribuidos a ipfix:<ip-del-exportador>, de modo que su procedencia se distingue de la de un sensor de confianza.
El colector decodifica solo IPFIX (v10), NetFlow v9 y NetFlow v5. No decodifica sFlow. Una plataforma que solo hable sFlow, por ejemplo ArubaOS-CX, o un Arista configurado para sFlow, tiene que usar su modo IPFIX/NetFlow o bien un sensor Vantage.
La plantilla del exportador debe llevar como mínimo la quíntupla (IP de origen y destino, puerto de origen y destino, protocolo), más contadores de bytes y paquetes y las marcas de tiempo del flujo. Los registros que llegan sin protocolo se cuentan y se descartan.
Cisco IOS-XE, Flexible NetFlow (Catalyst)
flow record VANTAGE-REC
match ipv4 source address
match ipv4 destination address
match transport source-port
match transport destination-port
match ipv4 protocol
collect counter bytes long
collect counter packets long
collect timestamp sys-uptime first
collect timestamp sys-uptime last
!
flow exporter VANTAGE-EXP
destination <ip-del-colector>
source Loopback0
transport udp 4739
export-protocol ipfix ! o netflow-v9
template data timeout 60
!
flow monitor VANTAGE-MON
exporter VANTAGE-EXP
record VANTAGE-REC
cache timeout active 60
!
interface GigabitEthernet1/0/1
ip flow monitor VANTAGE-MON input
ip flow monitor VANTAGE-MON output
Cisco NX-OS (Nexus)
feature netflow ! flow record VANTAGE-REC match ipv4 source address match ipv4 destination address match transport source-port match transport destination-port match ip protocol collect counter bytes collect counter packets collect timestamp sys-uptime first collect timestamp sys-uptime last ! flow exporter VANTAGE-EXP destination <ip-del-colector> use-vrf management source mgmt0 transport udp 4739 version 9 ! flow monitor VANTAGE-MON record VANTAGE-REC exporter VANTAGE-EXP ! interface Ethernet1/1 ip flow monitor VANTAGE-MON input
Arista EOS, seguimiento de flujos por hardware (IPFIX)
flow tracking hardware
tracker VANTAGE
exporter VANTAGE-EXP
collector <ip-del-colector> port 4739
local interface Management1
template interval 60000
record export on inactive timeout 15000
record export on interval 60000
no shutdown
!
interface Ethernet1
flow tracker hardware VANTAGE
Fortinet FortiGate (FortiOS, NetFlow v9)
config system netflow
set collector-ip <ip-del-colector>
set collector-port 4739
set source-ip <ip-de-gestion>
set active-flow-timeout 60
set inactive-flow-timeout 15
end
config system interface
edit "port1"
set netflow-sampler both
next
end
HPE Comware, NetStream (FlexNetwork, serie 5900)
ip netstream export version 9 ip netstream export host <ip-del-colector> 4739 ip netstream export source interface M-GigabitEthernet0/0/0 ! interface Ten-GigabitEthernet1/0/1 ip netstream inbound ip netstream outbound
HPE y Aruba, plataformas basadas en sFlow
La familia HPE Comware de arriba (FlexNetwork, series 5900 y 5940) exporta NetStream y está soportada. Los switches ArubaOS-CX y los HP ProCurve antiguos, en cambio, están construidos alrededor de sFlow, que este colector no decodifica (ver la nota sobre sFlow al comienzo del capítulo).
Para un equipo que solo hable sFlow hay tres caminos:
- Habilitar NetFlow o IPFIX si su plataforma y su versión de software lo ofrecen, y usar el patrón de record y exporter que se muestra arriba, con destino UDP 4739 y la quíntupla más los contadores.
- Desplegar un sensor Vantage sobre un espejo del segmento. Es el camino recomendado cuando solo hay sFlow.
- Poner un relay de sFlow a IPFIX entre el switch y el colector.
El muestreo por paquete que hace sFlow, además, lo vuelve una fuente más débil para mapear dependencias, que es un trabajo que quiere todos los flujos. Un sensor Vantage sobre un espejo los ve todos.
El soporte y la sintaxis de NetFlow e IPFIX cambian entre plataformas y entre versiones de software. Confirme que el record puede llevar la quíntupla y los contadores en su modelo específico. Donde el equipo exporte por una VRF de gestión, ajuste la interfaz de origen y la VRF del exportador, como se muestra para NX-OS y Comware.
6Verificación
6.1Chequeo de salud
El Colector expone un endpoint de vida sin autenticación. Devuelve HTTP 200 cuando la ingesta está escuchando, o cuando está deshabilitada a propósito, y HTTP 503 cuando la escucha mTLS está habilitada pero no logró partir, que es exactamente la condición que produce un paquete de CA faltante.
$ curl -sk https://localhost:443/healthz {"ok":true,"ingest":{"enabled":true,"listening":true,"port":8843, "client_certs_required":true}}
El servicio de Compose conecta ese endpoint al chequeo de salud del contenedor, así que el runtime reporta el contenedor como unhealthy cada vez que los sensores no pueden entregar flujos:
$ docker inspect --format '{{.State.Health.Status}}' vantage-collector healthy
6.2Ingesta de sensores
Confirme en el log del contenedor que la escucha partió y que exige certificados de cliente:
$ docker compose logs collector | grep mTLS [adm_ingest_mtls] INFO ingest mTLS listening on :8843 (client certificates required)
6.3Sincronización de identidades
Una corrida exitosa informa lo que bajó y el tamaño del paquete:
$ tail -n1 /var/log/vantage-sync.log identity-sync ok: 12 probes, 12 certs, bundle 3805 bytes
7Administración
7.1Respaldo y exportación
Un respaldo captura exactamente lo que este nodo posee: su adm.db, su registro de usuarios y el paquete de confianza que bajó por sincronización. Deja fuera, a propósito, el secreto de sesión y todo el material de llaves privadas: un respaldo robado no sirve para falsificar una sesión ni un certificado. Los respaldos se descargan, o se empujan a un servidor remoto por SCP o TFTP desde la página de respaldo.
7.2Ciclo de vida de un sensor
Los sensores se registran, se enrolan y rotan sus certificados en Switchboard, que es donde está la CA. Las identidades resultantes y el estado de revocación llegan al Colector por la sincronización de identidades. Para dar de baja un sensor, revóquelo en Switchboard: el Colector deja de aceptar su certificado después de la siguiente sincronización.
La revocación no es instantánea en el punto de ingesta. Como el Colector se entera del estado de revocación por la sincronización periódica, hay que contar con hasta un intervalo completo, cinco minutos por omisión, antes de que un sensor revocado sea rechazado en el puerto 8843.
7.3Dar de alta un sensor sin Switchboard
El enrolamiento y la firma se hacen normalmente en Switchboard (capítulo 1.2). Un Colector desplegado por su cuenta no tiene la CA de Switchboard, pero igual puede dar de alta sensores Vantage de dos maneras, las dos desde la página Onboarding del tablero, o por API. En ambas, la llave privada del sensor nunca sale del sensor: lo único que viaja es un CSR que se firma, o un certificado ya firmado que se registra.
Opción A: la CA del propio Colector (recomendada)
El Colector actúa como su propia CA y firma los CSR de los sensores directamente, sin ninguna CA externa que operar.
-
Inicializar la CA, una sola vez
Queda creada y aceptada en la ingesta de forma automática.
POST /api/ca/init -
Crear el sensor
En Sensores. Con
ADM_STANDALONE=1, que es lo que trae el equipo, los campos que solo aplican a Switchboard no son obligatorios. -
Generar el CSR en el sensor
openssl req -newkey rsa:2048 -nodes -keyout sensor.key \ -out sensor.csr -subj "/CN=<probe-id>"
-
Firmar y registrar el CSR
POST /api/sensors/<probe-id>/issue {"csr_pem": "<PEM del CSR>"}Devuelve el certificado firmado. El sensor presenta
sensor.keyjunto con ese certificado y queda aceptado en la ingesta mTLS.
Opción B: usted aporta la CA
Si ya opera una CA, firme el CSR con ella fuera de línea y registre el resultado.
-
Instalar el paquete de confianza de la CA
POST /api/ca-bundle {"bundle_pem": "<PEM del certificado de su CA>"} -
Crear el sensor y registrar el certificado firmado
Firme el CSR del sensor con su CA fuera de línea, y después:
POST /api/sensors/<probe-id>/cert {"cert_pem": "<PEM del certificado firmado>"}
En las dos opciones el número de serie del certificado se normaliza exactamente como lo lee la ingesta, así que ni las mayúsculas ni los ceros a la izquierda pueden provocar un rechazo equivocado.
Rotación y revocación
Los certificados de un sensor se administran desde el panel Onboarding → Manage sensor certificates, o por API:
GET /api/sensors/<probe-id>/certs # lista series, vencimiento y estado POST /api/sensors/<probe-id>/certs/<serial>/revoke # revoca un certificado POST /api/sensors/<probe-id>/revoke # revoca el sensor completo POST /api/sensors/<probe-id>/reactivate # devuelve al servicio un sensor revocado
Para rotar: emita un certificado nuevo, por la opción A o la B, confirme que el sensor lo está usando y recién entonces revoque la serie antigua. Mientras tanto el viejo y el nuevo son válidos a la vez, así que no hay ventana de corte. Para dar de baja: revoque el sensor completo. Para devolverlo al servicio: reactívelo y emita un certificado nuevo. La reactivación pasa el sensor de revoked a enrolled, pero deja los certificados antiguos revocados a propósito, de modo que un sensor retirado no pueda volver con una credencial vieja. Una serie revocada se rechaza en el siguiente saludo mTLS, y un sensor dado de baja se rechaza por completo. Todo esto opera únicamente sobre los registros de sensores del propio Colector.
La CA del Colector es una CA de un solo nivel cuyo único usuario es este mismo Colector: no hay punto de distribución de CRL, y la revocación se maneja con la lista de certificados denegados. Su llave privada queda accesible solo para root dentro del directorio de datos y nunca se incluye en un respaldo. Si prefiere no emitir certificados, alimente el mapa desde el equipamiento que ya tiene por IPFIX o NetFlow (capítulo 5.4).
Si además está corriendo la sincronización de identidades, en un despliegue mixto, esa sincronización sobrescribe el archivo del paquete en cada consulta. En un despliegue sin Switchboard, no ponga el cron de sincronización, o apunte ADM_CA_BUNDLE_FILE a un archivo que la sincronización no toque.
8Diagnóstico
| Síntoma | Causa probable | Qué hacer |
|---|---|---|
| El contenedor queda unhealthy y /healthz devuelve 503 | La escucha mTLS no partió: falta el paquete de CA o está vacío | Confirme que la sincronización corrió y que data/fleet-ca-bundle.pem no está vacío. Reinicie el contenedor |
| Los sensores no conectan al 8843 | Certificado de cliente desconocido, revocado, o todavía no sincronizado | Verifique que el sensor está enrolado en Switchboard y que la sincronización terminó |
| Un sensor sano parpadea como fuera de línea | La cola del escritor quedó atrapada detrás de una consulta de enriquecimiento lenta | Causa confirmada en incidentes anteriores. El enriquecimiento ya corre fuera del hilo escritor: actualice a la versión vigente |
| identity-sync failed en el log | Switchboard inalcanzable, token equivocado, o falla de verificación TLS | Revise la URL y el token en sync_config.json. Confirme que el paquete de CA encadena con el certificado de Switchboard |
| Las sesiones del tablero se rechazan después de un redespliegue | Cambió el secreto de sesión | Es lo esperado si el archivo de llave se regeneró. Los usuarios simplemente vuelven a entrar |
| El mapa carga lento con ingesta pesada | Contención de lectura y escritura sobre el escritor compartido de SQLite | Las construcciones del mapa se cachean 20 s: reabrir una vista se sirve del caché |
9Consideraciones de seguridad
- Integridad de la sesión. Las cookies se firman con un secreto propio del nodo, generado en el primer arranque. El archivo de llave queda en modo
0600y se excluye de los respaldos. - Autenticidad del sensor. La ingesta de flujos exige un certificado de cliente firmado por la CA de la flota. Es el certificado, y no el cuerpo de la petición, lo que establece la identidad del sensor. Un cuerpo que declare ser otro sensor se rechaza.
- Canal de sincronización. La sincronización verifica el certificado TLS de Switchboard contra el paquete de CA que ya bajó. Solo la primerísima sincronización de un nodo recién instalado, cuando todavía no existe ningún paquete, corre sin verificar: deja una advertencia en el log y queda superada en la corrida siguiente.
- Procedencia de IPFIX. IPFIX y NetFlow sobre UDP no llevan autenticación. Cuando se habilitan, cada arista que producen queda etiquetada como
ipfix:<ip-del-exportador>, para que lo que dijo un exportador nunca se confunda con lo que observó un sensor de confianza.
La política de segmentación que se genera es una lista de permitido bajo deniega por omisión, construida solo con tráfico observado. Cualquier camino que no se haya visto durante la ventana de captura, como un proceso mensual, una ruta de contingencia o una sesión de administración, no está en la política y quedará bloqueado si se aplica. Revísela, agregue los caminos que usted conoce y corra el análisis en seco antes de poner la política en producción.
Deje el colector IPFIX (ADM_IPFIX_BIND) escuchando en una interfaz de gestión alcanzable solo por exportadores de confianza. Nunca debe quedar expuesto a una red no confiable: con UDP falsificado se pueden inyectar flujos al mapa.
10Límites y advertencias
- Medición pasiva, nada más. Una sonda de flujos observa volumen y extremos. No puede medir latencia, pérdida de paquetes ni jitter, y el mapa reporta únicamente valores que una sonda observó de verdad. Los chequeos sintéticos son la única capacidad activa y se habilitan a pedido.
- El Colector no tiene autoridad certificadora. El nodo valida certificados, pero nunca los firma. El enrolamiento, la rotación y la revocación son funciones de Switchboard, y esos endpoints no se sirven acá de manera deliberada.
- La revocación tiene latencia. El estado de revocación se propaga a la velocidad de la sincronización de identidades, que por omisión son cinco minutos.
- La captura profunda es un rol distinto. Rescatar paquetes exige un nodo Vantage Deep. Un sensor Vantage deja constancia de que una dependencia existe, no de los paquetes que cruzaron el cable.
- Un solo nodo. Esta guía cubre un equipo autónomo. Los roles de alta disponibilidad degradan de manera ordenada a un nodo único siempre activo.
Colector Vantage · Guía de despliegue y administración · Versión v1 · Revisión 1.0 (2026-09-07). Los valores de configuración corresponden a los que trae el producto; confírmelos contra el archivo de Compose de su despliegue.