Docker
Den InfraFence-Agenten als Docker-Container betreiben, der seinen Host schützt: das Image, die nötigen Rechte und Mounts und jede Umgebungsvariable.
Zuletzt aktualisiert:
Der Agent läuft auch als Container, der seinen Host schützt. Das Image ist Multi-Architektur (amd64 und arm64), wird mit jedem Release veröffentlicht und mit cosign signiert.
ghcr.io/infrafence/infrafence-agent:latestoder ein Versions-Tag wieghcr.io/infrafence/infrafence-agent:<version>- dasselbe Image auf Docker Hub als
infrafence/infrafence-agent
docker run
docker run -d --name infrafence-agent --restart unless-stopped \
--privileged --network host --pid host \
-v /var/log:/var/log:ro \
-v /var/run/docker.sock:/var/run/docker.sock:ro \
-v infrafence-config:/etc/infrafence \
-e INFRAFENCE_TOKEN=<YOUR_TOKEN> \
ghcr.io/infrafence/infrafence-agent:latestWozu jeder Teil nötig ist:
--privileged,--network host: Der Agent verwaltet die Firewall des Hosts (iptables und ipset) und liest den Netzwerkzustand des Hosts.--pid host: Er sieht die Prozesse des Hosts, für die Erkennung von Malware-Prozessen und die Zuordnung von DNS-Anfragen./var/logschreibgeschützt: die Logs, die er analysiert.- der Docker-Socket schreibgeschützt: um die Container zu finden, deren Ports und Logs er schützen soll.
/etc/infrafencein einem benannten Volume: Die Registrierung übersteht Upgrades des Containers. Das Token wird einmal verwendet; spätere Starts nutzen die gespeicherte Registrierung.
Umgebungsvariablen
| Variable | Standard | Wirkung |
|---|---|---|
INFRAFENCE_TOKEN |
Das Installations-Token, für die erste Registrierung. | |
INFRAFENCE_TOKEN_FILE |
Eine Datei mit dem Token, für Docker Secrets. | |
INFRAFENCE_AGENT_NAME |
der kurze Hostname | Der Name im Dashboard. |
INFRAFENCE_SERVER_URL |
https://infrafence.com |
Das Dashboard, bei dem registriert wird. |
Auch jede der eigenen Variablen des Agenten (siehe Konfiguration), etwa WEB_LOG_PATH, lässt sich mit -e übergeben.
Ohne Token, Token-Datei oder Cluster-Schlüssel beim ersten Start bricht der Container mit [infrafence] ERROR: No credentials provided for registration. ab.
Docker Compose
Jeder Host braucht sein eigenes Installations-Token, wie jeder andere Server.
services:
infrafence-agent:
image: ghcr.io/infrafence/infrafence-agent:latest
container_name: infrafence-agent
restart: unless-stopped
privileged: true
network_mode: host
pid: host
environment:
- INFRAFENCE_TOKEN=${INFRAFENCE_TOKEN}
volumes:
- /var/log:/var/log:ro
- /var/run/docker.sock:/var/run/docker.sock:ro
- infrafence-config:/etc/infrafence
volumes:
infrafence-config:INFRAFENCE_TOKEN=<YOUR_TOKEN> docker compose up -dContainer auf dem Host
Auf einem Host, auf dem Docker läuft, springt der Agent auch von DOCKER-USER in seine Firewall-Chain, sodass die Sperren auch die Ports abdecken, die deine Container veröffentlichen. Ein mit install.sh auf dem Host installierter Agent findet außerdem die Zugriffslogs von Web-Containern (Images von nginx, Apache und OpenResty; zu Traefik und Caddy siehe unten) und liest diese Labels an deinen Containern:
| Label | Wirkung |
|---|---|
infrafence.monitor |
true, um die Logs des Containers immer zu überwachen, false, um ihn auszulassen. |
infrafence.log-path |
Host-Pfade seiner Zugriffslogs, durch Kommas getrennt. |
infrafence.domain |
Seine Domains, durch Kommas getrennt. |
Die Erkennung der Container nutzt das Kommandozeilen-Tool docker, das im Image des Agenten nicht enthalten ist: Im Container zeigst du dem Agenten die Logs stattdessen mit WEB_LOG_PATH.
Domains hinter einem Reverse Proxy
Ab Agent 1.0.35 listet der Agent auch die Domains deiner laufenden Container aus den Labels auf, die ihr Reverse Proxy liest, über den Docker- oder Podman-Socket (nur lesend, alle 2 Minuten aktualisiert, auch im Container des Agenten):
- Traefik-Router-Regeln,
traefik.http.routers.<name>.rule: jedesHost(...)der Regel.HostRegexpund Pfadregeln werden übersprungen. - Caddy-Site-Adressen,
caddyundcaddy_0,caddy_1... infrafence.domain.
Genau das schreibt Coolify für seinen Proxy (coolify-proxy, Traefik oder Caddy), ein Coolify-Server braucht also kein Label. Die Domains erscheinen unter Überwachen › Monitoring-Badge, wo sie über einen DNS-TXT-Eintrag verifiziert werden, da die Website keinen Document Root auf dem Host hat: siehe Monitoring-Badge. Der Agent führt im Proxy-Container nie etwas aus; die JSON-Zugriffslogs von Traefik oder Caddy liest er nicht.
Weitere Befehle
Das Image führt jeden Befehl des Agenten aus, den du ihm gibst, zum Beispiel die rein lesende Prüfung:
docker run --rm --privileged --network host --pid host ghcr.io/infrafence/infrafence-agent:latest preflight