Aller au contenu principal
Version: 1.0.0

Guide de déploiement des agents

Ce guide vous accompagne dans le déploiement d'un agent de scan Cert-IX sur votre réseau privé. L'agent s'enregistrera automatiquement auprès de la plateforme, commencera à collecter la télémétrie et rendra vos actifs internes visibles dans le tableau de bord.

Prérequis

Avant de déployer un agent, assurez-vous de disposer de :

  • Un compte Cert-IX avec un abonnement actif
  • Votre Identifiant de locataire (disponible dans ParamètresOrganisationIdentifiant de locataire)
  • Un accès root ou administrateur sur l'hôte cible
  • Un accès HTTPS sortant (port 443) vers api.cert-ix.com et downloads.cert-ix.com
Déploiement rapide

Le moyen le plus rapide de déployer est depuis le tableau de bord : allez dans Gestion des actifsAppareils → cliquez sur le bouton vert Déployer l'agent. L'assistant génère toutes les commandes pré-remplies avec votre identifiant de locataire.

Étape 1 : Télécharger l'agent

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
Sécurité

Vérifiez toujours la somme de contrôle SHA256 après le téléchargement. Les sommes de contrôle attendues sont publiées sur https://downloads.cert-ix.com/checksums.txt et signées avec la clé de publication Cert-IX.

Étape 2 : Créer le fichier de configuration

Créez le répertoire de configuration et le fichier de l'agent.

Linux / macOS

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

Créez /etc/bitcollector/config.yaml avec le contenu suivant :

# 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

Créez C:\ProgramData\Cert-IX\bitcollector\config.yaml avec le même contenu, en ajustant les chemins :

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 d'environnement

Vous pouvez également définir la configuration via des variables d'environnement au lieu de modifier le fichier YAML :

VariableDescription
CERTIX_TENANT_IDVotre identifiant de locataire (requis)
CERTIX_GATEWAY_URLURL du Agent Gateway
CERTIX_INGEST_URLURL du Ingestion Gateway
CERTIX_TLS_CA_CERTChemin du certificat CA
CERTIX_TLS_CLIENT_CERTChemin du certificat client
CERTIX_TLS_CLIENT_KEYChemin de la clé client

Les variables d'environnement ont priorité sur les valeurs du fichier de configuration.

Étape 3 : Exécuter l'agent

Option A : Service Systemd (recommandé pour Linux)

Créez un utilisateur de service dédié :

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

Créez le fichier d'unité systemd dans /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

Activez et démarrez le service :

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

Option B : Conteneur 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
Note Docker

Les options --pid=host et --net=host sont nécessaires pour que l'agent puisse voir les processus et connexions réseau de l'hôte. Sans elles, l'agent ne verra que les données au niveau du conteneur.

Option C : Manuel / Premier plan

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

Option D : Service 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

Étape 4 : Vérifier le déploiement

Vérifier le statut du service

# 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

Ce qu'il faut vérifier

Dans les journaux de l'agent, vous devriez voir ces messages dans l'ordre :

  1. Agent identity loaded — L'agent a généré ou chargé sa paire de clés ECDSA
  2. Registering with control plane — Connexion au Agent Gateway Service
  3. Agent registered successfully — Enregistrement terminé, jeton JWT reçu
  4. Starting heartbeat loop — Heartbeats périodiques vers le gateway d'ingestion
  5. Collection cycle complete — Premières données de télémétrie collectées et envoyées

Vérifier le tableau de bord

Dans les 60 secondes suivant un enregistrement réussi :

  1. Allez dans Gestion des actifsAppareils
  2. Le nouvel appareil devrait apparaître avec un badge vert En ligne
  3. Cliquez sur l'appareil pour voir les données collectées :
    • Infos système — OS, noyau, CPU, mémoire, disque
    • Processus — Processus en cours avec utilisation des ressources
    • Ports — Ports ouverts et services en écoute
    • Logiciels — Paquets installés
    • Métriques — Graphiques CPU, mémoire, charge en temps réel

Dépannage

L'agent ne démarre pas

SymptômeCauseSolution
permission deniedBinaire non exécutablechmod +x /usr/local/bin/bitcollector
config file not foundMauvais chemin de configurationVérifiez que l'option -config correspond à l'emplacement réel du fichier
tenant_id is requiredIdentifiant de locataire manquantDéfinissez la variable CERTIX_TENANT_ID ou tenant_id dans la configuration

L'agent ne s'enregistre pas

SymptômeCauseSolution
connection refusedPare-feu bloquant le sortantAutorisez HTTPS (443) vers api.cert-ix.com
certificate verify failedProxy d'entreprise/MITMAjoutez le CA du proxy au magasin de confiance système
401 UnauthorizedIdentifiant de locataire invalideVérifiez l'identifiant dans Paramètres → Organisation
timeoutÉchec de résolution DNSVérifiez que le DNS résout api.cert-ix.com

Agent enregistré mais pas de données

SymptômeCauseSolution
Pas de processus affichésPermissions insuffisantesExécutez en root ou avec CAP_SYS_PTRACE
Pas de ports affichésPermissions insuffisantesExécutez en root ou avec CAP_NET_ADMIN
Pas de données réseauCollecteur réseau désactivéDéfinissez collectors.network.enabled: true
Données obsolètesCollecte non exécutéeVérifiez les journaux pour les erreurs de collecte

Messages de journal courants

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

Désinstallation

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
attention

Après la désinstallation, l'appareil apparaîtra comme Hors ligne dans le tableau de bord après le prochain heartbeat manqué (par défaut : 2 minutes). Vous pouvez le supprimer manuellement de la liste des appareils.

Déploiement de plusieurs agents

Pour les déploiements à grande échelle, utilisez des outils de gestion de configuration :

Exemple 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

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

Connexe :