Saltar al contenido principal
Version: 1.0.0

Guía de implementación de agentes

Esta guía le lleva paso a paso a través de la implementación de un agente de escaneo Cert-IX en su red privada. El agente se registrará automáticamente en la plataforma, comenzará a recopilar telemetría y hará visibles sus activos internos en el panel.

Requisitos previos

Antes de implementar un agente, asegúrese de tener:

  • Una cuenta Cert-IX con una suscripción activa
  • Su ID de inquilino (se encuentra en ConfiguraciónOrganizaciónID de inquilino)
  • Acceso root o de administrador en el host objetivo
  • Acceso HTTPS saliente (puerto 443) a api.cert-ix.com y downloads.cert-ix.com
Implementación rápida

La forma más rápida de implementar es desde el panel: vaya a Gestión de activosDispositivos → haga clic en el botón verde Implementar agente. El asistente genera todos los comandos prellenados con su ID de inquilino.

Paso 1: Descargar el agente

Linux (x86_64)

# Download the Bitcollector agent binary
curl -fsSL "https://downloads.cert-ix.com/bitcollector-linux-amd64" \
-o /usr/local/bin/bitcollector

# Set executable permissions
chmod +x /usr/local/bin/bitcollector

# Verify the SHA256 checksum
sha256sum /usr/local/bin/bitcollector

Linux (ARM64)

curl -fsSL "https://downloads.cert-ix.com/bitcollector-linux-arm64" \
-o /usr/local/bin/bitcollector

chmod +x /usr/local/bin/bitcollector
sha256sum /usr/local/bin/bitcollector

macOS (Apple Silicon)

curl -fsSL "https://downloads.cert-ix.com/bitcollector-darwin-arm64" \
-o /usr/local/bin/bitcollector

chmod +x /usr/local/bin/bitcollector
shasum -a 256 /usr/local/bin/bitcollector

macOS (Intel)

curl -fsSL "https://downloads.cert-ix.com/bitcollector-darwin-amd64" \
-o /usr/local/bin/bitcollector

chmod +x /usr/local/bin/bitcollector
shasum -a 256 /usr/local/bin/bitcollector

Windows (x86_64)

# PowerShell — Run as Administrator
Invoke-WebRequest -Uri "https://downloads.cert-ix.com/bitcollector-windows-amd64.exe" `
-OutFile "C:\Program Files\Cert-IX\bitcollector.exe"

# Verify checksum
Get-FileHash "C:\Program Files\Cert-IX\bitcollector.exe" -Algorithm SHA256
Seguridad

Siempre verifique el checksum SHA256 después de la descarga. Los checksums esperados se publican en https://downloads.cert-ix.com/checksums.txt y están firmados con la clave de lanzamiento de Cert-IX.

Paso 2: Crear el archivo de configuración

Cree el directorio de configuración del agente y el archivo.

Linux / macOS

# Create config and data directories
sudo mkdir -p /etc/bitcollector
sudo mkdir -p /var/lib/bitcollector

Cree /etc/bitcollector/config.yaml con el siguiente contenido:

# Bitcollector Configuration — Cert-IX Platform
# Replace <YOUR_TENANT_ID> with your actual Tenant ID

control_plane:
gateway_url: https://api.cert-ix.com/api/v1/agents
ingest_url: https://api.cert-ix.com/api/v1/ingest
tenant_id: "<YOUR_TENANT_ID>"
heartbeat_interval: 60s
token_path: /var/lib/bitcollector/.agent-token
retry_max_attempts: 5
retry_base_delay: 2s
# Uncomment for mTLS (recommended for production)
# tls:
# ca_cert: /etc/bitcollector/certs/ca.crt
# client_cert: /etc/bitcollector/certs/client.crt
# client_key: /etc/bitcollector/certs/client.key

agent:
data_dir: /var/lib/bitcollector
collection_interval: 60s
startup_delay: 5s
max_memory_mb: 50
graceful_shutdown: 30s

collectors:
process:
enabled: true
interval: 60s
port:
enabled: true
interval: 60s
software:
enabled: true
interval: 300s
system:
enabled: true
interval: 300s
metrics:
enabled: true
interval: 30s
network:
enabled: false # Enable if elevated privileges available

logging:
level: info
format: json
output: stdout

Windows

Cree C:\ProgramData\Cert-IX\bitcollector\config.yaml con el mismo contenido, ajustando las rutas:

control_plane:
gateway_url: https://api.cert-ix.com/api/v1/agents
ingest_url: https://api.cert-ix.com/api/v1/ingest
tenant_id: "<YOUR_TENANT_ID>"
heartbeat_interval: 60s
token_path: "C:\\ProgramData\\Cert-IX\\bitcollector\\.agent-token"
retry_max_attempts: 5
retry_base_delay: 2s

agent:
data_dir: "C:\\ProgramData\\Cert-IX\\bitcollector"
collection_interval: 60s
startup_delay: 5s
max_memory_mb: 50
graceful_shutdown: 30s

collectors:
process:
enabled: true
interval: 60s
port:
enabled: true
interval: 60s
software:
enabled: true
interval: 300s
system:
enabled: true
interval: 300s
metrics:
enabled: true
interval: 30s
network:
enabled: false

logging:
level: info
format: json
output: stdout
Variables de entorno

También puede establecer la configuración mediante variables de entorno en lugar de editar el archivo YAML:

VariableDescripción
CERTIX_TENANT_IDSu ID de inquilino (obligatorio)
CERTIX_GATEWAY_URLURL del Gateway de agentes
CERTIX_INGEST_URLURL del Gateway de ingestión
CERTIX_TLS_CA_CERTRuta del certificado CA
CERTIX_TLS_CLIENT_CERTRuta del certificado del cliente
CERTIX_TLS_CLIENT_KEYRuta de la clave del cliente

Las variables de entorno tienen precedencia sobre los valores del archivo de configuración.

Paso 3: Ejecutar el agente

Opción A: Servicio systemd (recomendado para Linux)

Cree un usuario de servicio dedicado:

sudo useradd --system --no-create-home --shell /usr/sbin/nologin bitcollector
sudo chown -R bitcollector:bitcollector /var/lib/bitcollector

Cree el archivo de unidad systemd en /etc/systemd/system/bitcollector.service:

[Unit]
Description=Cert-IX Bitcollector Agent
Documentation=https://docs.cert-ix.com/agents
After=network-online.target
Wants=network-online.target

[Service]
Type=simple
User=bitcollector
Group=bitcollector
ExecStart=/usr/local/bin/bitcollector -config /etc/bitcollector/config.yaml
Restart=always
RestartSec=10
Environment=CERTIX_TENANT_ID=<YOUR_TENANT_ID>
Environment=CERTIX_GATEWAY_URL=https://api.cert-ix.com/api/v1/agents
Environment=CERTIX_INGEST_URL=https://api.cert-ix.com/api/v1/ingest

# Security hardening
NoNewPrivileges=true
ProtectSystem=strict
ProtectHome=true
ReadWritePaths=/var/lib/bitcollector
PrivateTmp=true

[Install]
WantedBy=multi-user.target

Habilite e inicie el servicio:

sudo systemctl daemon-reload
sudo systemctl enable bitcollector
sudo systemctl start bitcollector

Opción B: Contenedor Docker

docker run -d \
--name bitcollector \
--restart unless-stopped \
-e CERTIX_TENANT_ID="<YOUR_TENANT_ID>" \
-e CERTIX_GATEWAY_URL="https://api.cert-ix.com/api/v1/agents" \
-e CERTIX_INGEST_URL="https://api.cert-ix.com/api/v1/ingest" \
-v /var/lib/bitcollector:/var/lib/bitcollector \
--pid=host \
--net=host \
registry.cert-ix.com/bitcollector:latest
Nota sobre Docker

Los flags --pid=host y --net=host son necesarios para que el agente pueda ver los procesos del host y las conexiones de red. Sin ellos, el agente solo verá datos a nivel de contenedor.

Opción C: Manual / Primer plano

export CERTIX_TENANT_ID="<YOUR_TENANT_ID>"
/usr/local/bin/bitcollector -config /etc/bitcollector/config.yaml -log-level debug

Opción D: Servicio de Windows

# Register as a Windows service
sc.exe create bitcollector binPath= "\"C:\Program Files\Cert-IX\bitcollector.exe\" -config \"C:\ProgramData\Cert-IX\bitcollector\config.yaml\"" start= auto

# Set environment variables for the service
[System.Environment]::SetEnvironmentVariable("CERTIX_TENANT_ID", "<YOUR_TENANT_ID>", "Machine")

# Start the service
sc.exe start bitcollector

Paso 4: Verificar la implementación

Verificar el estado del servicio

# Linux (systemd)
sudo systemctl status bitcollector

# View recent logs
journalctl -u bitcollector -n 50 --no-pager
# Windows
Get-Service bitcollector | Format-List
Get-EventLog -LogName Application -Source bitcollector -Newest 20

Qué buscar

En los registros del agente, debería ver estos mensajes en orden:

  1. Agent identity loaded — El agente generó o cargó su par de claves ECDSA
  2. Registering with control plane — Conectándose al servicio de Gateway de agentes
  3. Agent registered successfully — Registro completado, token JWT recibido
  4. Starting heartbeat loop — Latidos periódicos al gateway de ingestión
  5. Collection cycle complete — Primeros datos de telemetría recopilados y enviados

Verificar en el panel

Dentro de los 60 segundos posteriores al registro exitoso:

  1. Vaya a Gestión de activosDispositivos
  2. El nuevo dispositivo debería aparecer con una insignia verde En línea
  3. Haga clic en el dispositivo para ver los datos recopilados:
    • Información del sistema — SO, kernel, CPU, memoria, disco
    • Procesos — Procesos en ejecución con uso de recursos
    • Puertos — Puertos abiertos y servicios en escucha
    • Software — Paquetes instalados
    • Métricas — Gráficos en tiempo real de CPU, memoria, carga

Solución de problemas

El agente no inicia

SíntomaCausaSolución
permission deniedBinario no ejecutablechmod +x /usr/local/bin/bitcollector
config file not foundRuta de configuración incorrectaVerifique que el flag -config coincida con la ubicación real del archivo
tenant_id is requiredID de inquilino faltanteEstablezca la variable CERTIX_TENANT_ID o tenant_id en la configuración

El agente no se registra

SíntomaCausaSolución
connection refusedFirewall bloqueando salidaPermita HTTPS (443) hacia api.cert-ix.com
certificate verify failedProxy corporativo/MITMAgregue el CA del proxy al almacén de confianza del sistema
401 UnauthorizedID de inquilino inválidoVerifique el ID en Configuración → Organización
timeoutFallo en la resolución DNSVerifique que DNS resuelva api.cert-ix.com

Agente registrado pero sin datos

SíntomaCausaSolución
No se muestran procesosPermisos insuficientesEjecute como root o con CAP_SYS_PTRACE
No se muestran puertosPermisos insuficientesEjecute como root o con CAP_NET_ADMIN
Sin datos de redColector de red deshabilitadoEstablezca collectors.network.enabled: true
Datos obsoletosRecopilación no ejecutándoseVerifique los registros en busca de errores de recopilación

Mensajes de registro comunes

# Healthy operation
INFO Agent registered successfully agent_id=abc123 tenant=your-tenant
INFO Heartbeat sent status=200 next_in=60s
INFO Collection cycle complete collectors=5 duration=2.3s
INFO Telemetry batch sent payloads=5 status=202

# Warning signs
WARN Heartbeat failed, retrying status=503 retry_in=5s
WARN Token expired, refreshing expires_at=2025-01-01T00:00:00Z

# Errors requiring attention
ERROR Registration failed error="tenant not found"
ERROR Collection failed collector=network error="permission denied"

Desinstalación

Linux (systemd)

sudo systemctl stop bitcollector
sudo systemctl disable bitcollector
sudo rm /etc/systemd/system/bitcollector.service
sudo systemctl daemon-reload
sudo rm /usr/local/bin/bitcollector
sudo rm -rf /etc/bitcollector
sudo rm -rf /var/lib/bitcollector
sudo userdel bitcollector

Docker

docker stop bitcollector
docker rm bitcollector
sudo rm -rf /var/lib/bitcollector

Windows

sc.exe stop bitcollector
sc.exe delete bitcollector
Remove-Item "C:\Program Files\Cert-IX\bitcollector.exe" -Force
Remove-Item "C:\ProgramData\Cert-IX\bitcollector" -Recurse -Force
precaución

Después de la desinstalación, el dispositivo aparecerá como Fuera de línea en el panel después del siguiente latido perdido (por defecto: 2 minutos). Puede eliminarlo manualmente de la lista de dispositivos.

Implementación de múltiples agentes

Para implementaciones a gran escala, use herramientas de gestión de configuración:

Ejemplo con Ansible

- name: Deploy Bitcollector agent
hosts: all_servers
become: true
vars:
certix_tenant_id: "your-tenant-id"
bitcollector_version: "1.0.0"
tasks:
- name: Download agent binary
get_url:
url: "https://downloads.cert-ix.com/bitcollector-linux-{{ ansible_architecture }}"
dest: /usr/local/bin/bitcollector
mode: '0755'
checksum: "sha256:https://downloads.cert-ix.com/checksums.txt"

- name: Create config directory
file:
path: /etc/bitcollector
state: directory
mode: '0755'

- name: Deploy configuration
template:
src: bitcollector.yaml.j2
dest: /etc/bitcollector/config.yaml
mode: '0644'

- name: Deploy systemd service
template:
src: bitcollector.service.j2
dest: /etc/systemd/system/bitcollector.service
notify: restart bitcollector

- name: Enable and start service
systemd:
name: bitcollector
enabled: true
state: started
daemon_reload: true

handlers:
- name: restart bitcollector
systemd:
name: bitcollector
state: restarted

Ejemplo con Terraform (AWS EC2 User Data)

resource "aws_instance" "server" {
ami = "ami-0abcdef1234567890"
instance_type = "t3.micro"

user_data = <<-EOF
#!/bin/bash
curl -fsSL "https://downloads.cert-ix.com/bitcollector-linux-amd64" \
-o /usr/local/bin/bitcollector
chmod +x /usr/local/bin/bitcollector
mkdir -p /etc/bitcollector /var/lib/bitcollector

cat > /etc/bitcollector/config.yaml <<CONFIG
control_plane:
gateway_url: https://api.cert-ix.com/api/v1/agents
ingest_url: https://api.cert-ix.com/api/v1/ingest
tenant_id: "${var.certix_tenant_id}"
heartbeat_interval: 60s
token_path: /var/lib/bitcollector/.agent-token
agent:
data_dir: /var/lib/bitcollector
collection_interval: 60s
collectors:
process: { enabled: true, interval: 60s }
port: { enabled: true, interval: 60s }
system: { enabled: true, interval: 300s }
metrics: { enabled: true, interval: 30s }
logging:
level: info
format: json
CONFIG

useradd --system --no-create-home bitcollector
chown -R bitcollector:bitcollector /var/lib/bitcollector

# Create and start systemd service
cat > /etc/systemd/system/bitcollector.service <<SERVICE
[Unit]
Description=Cert-IX Bitcollector Agent
After=network-online.target
[Service]
Type=simple
User=bitcollector
ExecStart=/usr/local/bin/bitcollector -config /etc/bitcollector/config.yaml
Restart=always
RestartSec=10
NoNewPrivileges=true
ProtectSystem=strict
ReadWritePaths=/var/lib/bitcollector
[Install]
WantedBy=multi-user.target
SERVICE

systemctl daemon-reload
systemctl enable --now bitcollector
EOF
}

Relacionado: