Passa al contenuto principale
Versione: 1.0.0

Guida alla distribuzione degli agenti

Questa guida vi accompagna passo dopo passo nella distribuzione di un agente scanner Cert-IX nella vostra rete privata. L'agente si registra automaticamente sulla piattaforma, inizia la raccolta della telemetria e rende visibili i vostri asset interni nel dashboard.

Prerequisiti​

Prima di distribuire un agente, assicuratevi di avere:

  • Un account Cert-IX con abbonamento attivo
  • Il vostro ID Tenant (disponibile in Impostazioni → Organizzazione → ID Tenant)
  • Accesso root o amministratore sull'host di destinazione
  • Accesso HTTPS in uscita (porta 443) verso api.cert-ix.com e downloads.cert-ix.com
Distribuzione rapida

Il modo più veloce per distribuire è tramite il dashboard: andate su Gestione asset → Dispositivi → cliccate sul pulsante verde Distribuisci agente. La procedura guidata genera tutti i comandi precompilati con il vostro ID Tenant.

Passaggio 1: Scaricare l'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
Sicurezza

Dopo il download, verificate sempre il checksum SHA256. I checksum attesi sono pubblicati su https://downloads.cert-ix.com/checksums.txt e firmati con la chiave di rilascio Cert-IX.

Passaggio 2: Creare il file di configurazione​

Create la directory di configurazione e il file dell'agente.

Linux / macOS​

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

Create /etc/bitcollector/config.yaml con il seguente contenuto:

# 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​

Create C:\ProgramData\Cert-IX\bitcollector\config.yaml con lo stesso contenuto e percorsi adattati:

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
Variabili d'ambiente

Potete anche impostare la configurazione tramite variabili d'ambiente invece del file YAML:

VariabileDescrizione
CERTIX_TENANT_IDIl vostro ID Tenant (obbligatorio)
CERTIX_GATEWAY_URLURL del gateway agente
CERTIX_INGEST_URLURL del gateway di ingestione
CERTIX_TLS_CA_CERTPercorso del certificato CA
CERTIX_TLS_CLIENT_CERTPercorso del certificato client
CERTIX_TLS_CLIENT_KEYPercorso della chiave client

Le variabili d'ambiente hanno la precedenza sui valori del file di configurazione.

Passaggio 3: Eseguire l'agente​

Opzione A: Servizio systemd (consigliato per Linux)​

Create un utente di servizio dedicato:

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

Create il file unit systemd in /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

Abilitate e avviate il servizio:

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

Opzione B: Container 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 Docker

I flag --pid=host e --net=host sono necessari affinché l'agente possa vedere i processi e le connessioni di rete dell'host. Senza di essi, l'agente vedrà solo i dati a livello di container.

Opzione C: Manuale / Primo piano​

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

Opzione D: Servizio 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

Passaggio 4: Verificare la distribuzione​

Controllare lo stato del servizio​

# 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

Cosa cercare​

Nei log dell'agente dovreste vedere questi messaggi in questo ordine:

  1. Agent identity loaded — L'agente ha generato o caricato la sua coppia di chiavi ECDSA
  2. Registering with control plane — Connessione al servizio gateway agente
  3. Agent registered successfully — Registrazione completata, token JWT ricevuto
  4. Starting heartbeat loop — Heartbeat periodici al gateway di ingestione
  5. Collection cycle complete — Primi dati di telemetria raccolti e inviati

Verificare nel dashboard​

Entro 60 secondi dalla registrazione riuscita:

  1. Andate su Gestione asset → Dispositivi
  2. Il nuovo dispositivo dovrebbe apparire con un badge verde Online
  3. Cliccate sul dispositivo per vedere i dati raccolti:
    • Informazioni di sistema — SO, kernel, CPU, memoria, disco
    • Processi — Processi in esecuzione con utilizzo delle risorse
    • Porte — Porte aperte e servizi in ascolto
    • Software — Pacchetti installati
    • Metriche — Grafici in tempo reale per CPU, memoria, carico

Risoluzione dei problemi​

L'agente non si avvia​

SintomoCausaSoluzione
permission deniedBinario non eseguibilechmod +x /usr/local/bin/bitcollector
config file not foundPercorso di configurazione erratoVerificate che il flag -config corrisponda alla posizione effettiva del file
tenant_id is requiredID Tenant mancanteImpostate la variabile CERTIX_TENANT_ID o tenant_id nella configurazione

L'agente non si registra​

SintomoCausaSoluzione
connection refusedFirewall blocca l'uscitaConsentite HTTPS (443) verso api.cert-ix.com
certificate verify failedProxy aziendale/MITMAggiungete la CA del proxy al trust store di sistema
401 UnauthorizedID Tenant non validoVerificate l'ID Tenant in Impostazioni → Organizzazione
timeoutErrore di risoluzione DNSVerificate che il DNS risolva api.cert-ix.com

Agente registrato ma nessun dato​

SintomoCausaSoluzione
Nessun processo visualizzatoPermessi insufficientiEseguite come root o con CAP_SYS_PTRACE
Nessuna porta visualizzataPermessi insufficientiEseguite come root o con CAP_NET_ADMIN
Nessun dato di reteCollector di rete disabilitatoImpostate collectors.network.enabled: true
Dati obsoletiRaccolta non in esecuzioneControllate i log per errori di raccolta

Messaggi di log comuni​

# 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"

Disinstallazione​

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
attenzione

Dopo la disinstallazione, il dispositivo apparirà come Offline nel dashboard dopo il mancato heartbeat successivo (predefinito: 2 minuti). Potete rimuoverlo manualmente dall'elenco dei dispositivi.

Distribuzione di più agenti​

Per distribuzioni su larga scala, utilizzate strumenti di gestione della configurazione:

Esempio 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

Esempio 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
}

Correlato: