Sicherheit & Transparenz
Software auf einem Produktivserver zu installieren ist eine Vertrauensfrage. Diese Seite beantwortet sie so, dass du sie nachprüfen kannst -- nicht mit Versprechen, sondern mit Fakten, die im offenen Quellcode nachlesbar sind.
Der Agent ist Open Source
Der komplette Quellcode liegt öffentlich auf GitHub:
github.com/LIVCK/agent -- MIT-Lizenz
Du kannst ihn lesen, prüfen, selbst kompilieren und mit dem ausgelieferten Paket vergleichen. Er ist in Go geschrieben und wird als statische Datei ohne externe Abhängigkeiten und ohne Plugin-Mechanismus gebaut -- es gibt keinen Weg, zur Laufzeit fremden Code nachzuladen.
Die vier Kernzusagen
1. Nur ausgehende Verbindungen -- kein offener Port
Der Agent öffnet keinen Netzwerk-Port. Weder nach außen, noch auf localhost, noch als lokalen Socket. Es gibt im Quellcode keine einzige Stelle, die auf eingehende Verbindungen lauscht.
Alle Kommunikation geht in eine Richtung: vom Server zu LIVCK, ausschließlich über HTTPS auf Port 443.
| Ziel | Wofür | Wie oft |
|---|---|---|
app.livck.cloud | Anmeldung, Abholen der Messkonfiguration | bei der Installation, danach spätestens alle 5 Minuten |
ingest.livck.cloud | Übertragung der Messwerte und Ereignisse | im eingestellten Report-Intervall (je nach Plan ab 30 Sekunden) |
get.livck.cloud | Herunterladen neuer Agent-Versionen | nur wenn ein Update ansteht |
In deiner Firewall musst du nichts eingehend freigeben. Für ausgehende Verbindungen genügt Port 443 zu diesen drei Hosts; ein HTTP-Proxy wird unterstützt.
2. Kein Kommando-Kanal -- keine Fernsteuerung
LIVCK kann auf deinem Server nichts ausführen. Das ist keine deaktivierte Funktion, sondern eine, die es nicht gibt: Im Protokoll zwischen Agent und LIVCK existiert kein Feld für Befehle, Skripte, Pfade oder Shell-Kommandos.
Die Konfiguration, die der Agent abholt, beschreibt ausschließlich, was gemessen werden soll -- welche Messwerte, in welchem Takt, welche Erreichbarkeitsziele. Sie kann nicht beschreiben, was ausgeführt werden soll.
Der Agent startet im laufenden Betrieb genau zwei fremde Programme, und zwar nur dann, wenn sie bereits auf dem System vorhanden sind, mit fest einkompilierten Argumenten:
nvidia-smi-- zum Auslesen der GPU-Wertesmartctl-- zum Auslesen der SMART-Werte deiner Laufwerke
Keines der beiden wird vom Agenten installiert, und keines nimmt Werte aus der Konfiguration entgegen.
Und der Update-Mechanismus?
Die einzige Stelle, an der neuer Code auf deinen Server kommt, ist das Agent-Update. Dieser Weg ist bewusst eng: nur HTTPS, nur mit erzwungener SHA-256-Prüfung, keine Downgrades, ein Test der neuen Datei als unprivilegierter Benutzer -- und ein automatischer Rückfall auf die alte Version, wenn der Dienst danach nicht sauber läuft. Wenn du auch das nicht willst, deaktivierst du automatische Updates: sudo systemctl disable --now livck-agent-update.timer
3. Kein Root -- und praktisch keine Rechte
Der Dienst läuft unter dem eigens angelegten Systembenutzer livck-agent mit Shell nologin. Er läuft nicht als root.
Zusätzlich ist die systemd-Unit gehärtet. Die wichtigsten Punkte:
| Einstellung | Wirkung |
|---|---|
CapabilityBoundingSet= (leer) | Alle Linux-Capabilities entzogen -- keine einzige |
NoNewPrivileges=yes | Rechte können nicht nachträglich erlangt werden |
ProtectSystem=strict | Das gesamte Dateisystem ist schreibgeschützt; geschrieben wird nur ins eigene Verzeichnis |
ProtectHome=read-only | /home und /root sind lesbar, aber nicht beschreibbar |
MemoryDenyWriteExecute=yes | Kein Speicherbereich ist gleichzeitig beschreib- und ausführbar |
ProtectKernelTunables / ProtectKernelModules | Kernel-Parameter und -Module sind tabu |
SystemCallFilter=@system-service | Nur die Systemaufrufe eines gewöhnlichen Dienstes sind erlaubt |
RestrictAddressFamilies | Nur die Socket-Typen, die für ausgehendes HTTPS nötig sind |
Auch der Ressourcenverbrauch ist hart gedeckelt: höchstens 64 MB Arbeitsspeicher und 40 % eines einzelnen CPU-Kerns, unabhängig davon, wie groß der Server ist. Im Normalbetrieb liegt der Verbrauch weit darunter. Überschreitet der Agent das Speicherlimit, beendet ihn der Kernel -- dein Server bleibt davon unberührt.
Die vollständige Unit-Datei mit Begründung zu jeder einzelnen Zeile liegt im Repository.
4. Nur Kennzahlen -- keine Inhalte
Der Agent liest ausschließlich Kennzahlen aus den Statistik-Schnittstellen des Kernels (/proc, /sys) und die Belegung eingehängter Dateisysteme.
Was übertragen wird:
| Kategorie | Beispiele |
|---|---|
| Systemmetriken | CPU, Arbeitsspeicher, Swap, Last, Ressourcen-Druck, Prozessanzahl, Laufzeit |
| Speicher & Netzwerk | Belegung je Einhängepunkt, Durchsatz je Laufwerk, Durchsatz und Fehler je Netzwerkschnittstelle |
| Hardware | GPU-Auslastung und -Temperatur, SMART-Werte, jeweils falls verfügbar |
| Server-Steckbrief | Hostname, Betriebssystem und Version, Kernel, Architektur, CPU-Modell, Anzahl Kerne, RAM-Größe, Startzeitpunkt |
| Bezeichner | Namen von Einhängepunkten (z.B. /, /var), Netzwerkschnittstellen (z.B. eth0), Laufwerken (z.B. nvme0n1), GPU- und Laufwerksmodell |
| Ereignisse | Neustarts, saubere Abschaltungen, Out-of-Memory-Kills, volle oder schreibgeschützte Dateisysteme |
| Private IP-Adressen | einmalig bei der Anmeldung, als Inventarangabe -- danach nie wieder |
Was ausdrücklich nicht gelesen und nicht übertragen wird:
- Keine Logdateien -- weder Journald, noch
/var/log, nochdmesg - Keine Dateiinhalte deiner Anwendungen oder Nutzer
- Keine Prozessnamen, Kommandozeilen oder Umgebungsvariablen -- der Agent zählt Prozesse, mehr nicht
- Keine Benutzerkonten, Logins oder Sitzungsdaten
- Keine Verzeichnislisten deiner Daten
- Keine öffentlichen IP-Adressen, keine Nutzungstelemetrie
Einhängepunkte sind Namen
Damit LIVCK dir „/var ist zu 92 % voll" anzeigen kann, muss der Pfad des Einhängepunkts mitübertragen werden. Heißt eine Partition bei dir z.B. /srv/kunde-mueller, steht dieser Name in den Messreihen. Das ist die einzige Stelle, an der ein selbstgewählter Pfad LIVCK erreicht -- wähle Einhängepunkte entsprechend, wenn sie Kundennamen enthalten könnten.
Verschlüsselung und Zugangsdaten
- Transport: Jede Verbindung läuft über TLS. Der Update-Mechanismus verweigert nicht-verschlüsselte Downloads und nicht-verschlüsselte Weiterleitungen ausdrücklich.
- Anmeldung: Der Enrollment-Token gilt nur für die Anmeldung, ist zeitlich befristet und in der Anzahl der Verwendungen begrenzt. LIVCK speichert ihn nur als Prüfsumme.
- Laufender Betrieb: Nach der Anmeldung bekommt jeder Server seinen eigenen Zugang, der ausschließlich für diesen einen Server gilt und den der Agent selbstständig turnusmäßig erneuert. Auf dem Server liegt er nur für den Dienstbenutzer lesbar.
- Live-Ansicht: Wenn du die Detailseite eines Servers öffnest, erhält dein Browser dafür ein Einmal-Ticket mit 30 Sekunden Gültigkeit. Zugangstoken landen nie im Browser.
Herkunft der Programmdatei
Für jede veröffentlichte Version stellt LIVCK die Pakete und die statische Programmdatei zusammen mit einer SHA-256-Prüfsumme bereit.
- Der Installer vergleicht die heruntergeladene Datei mit dieser Prüfsumme und bricht bei Abweichung ab.
- Der Update-Mechanismus ist strenger: Fehlt die Prüfsumme, wird gar nicht erst aktualisiert.
- Die Programmdatei wird reproduzierbar gebaut (
CGO_ENABLED=0,-trimpath) -- du kannst sie aus dem Quellcode selbst erzeugen und vergleichen.
Prüfsumme selbst kontrollieren
Jedes Release-Artefakt hat eine passende .sha256-Datei auf get.livck.cloud bzw. auf der Releases-Seite. Vergleiche sie vor einer manuellen Installation mit sha256sum.
Datenschutz und Hosting
- Die Messwerte werden in Deutschland verarbeitet und gespeichert, wie alle anderen LIVCK-Daten auch.
- In den Messreihen landen keine IP-Adressen. Die bei der Anmeldung erfassten privaten Adressen dienen als Inventarangabe zu deinem Server und werden mit der Organisation gelöscht.
- Wie lange Server-Metriken aufbewahrt werden, richtet sich nach der Datenaufbewahrung deines Plans. Löschst du einen Server, werden seine Metriken und Ereignisse mitgelöscht.
Mehr zum Thema unter Datenschutz.
Zugriff wieder entziehen
Du kannst die Verbindung jederzeit einseitig beenden -- LIVCK kann nichts dagegen tun:
| Ziel | Vorgehen |
|---|---|
| Keine neuen Server mehr anmelden | Enrollment-Token unter Einstellungen → Organisation → Enrollment-Tokens widerrufen oder rotieren |
| Diesen Server sofort stumm schalten | sudo systemctl stop livck-agent -- die Datenübertragung endet augenblicklich |
| Automatische Updates unterbinden | sudo systemctl disable --now livck-agent-update.timer |
| Agent vollständig entfernen | sudo livck-agent uninstall -- entfernt Dienst, Dateien, Zugangsdaten und Systembenutzer |
| Ausgehend blockieren | Verbindungen zu ingest.livck.cloud und app.livck.cloud in deiner Firewall sperren |
| Daten in LIVCK löschen | Server in der Serverliste löschen -- Metriken, Ereignisse und Historie werden mitgelöscht |
Wenn dein Sicherheitsteam Fragen hat
Nützliche Einstiegspunkte im Repository:
README.md-- Aufbau und Grundsätzepackaging/systemd/livck-agent.service-- die Absicherung des Dienstes, jede Zeile kommentiertpackaging/install.sh-- was der Installer genau tutinternal/collector/-- jeder einzelne Messwert und woher er stammtpkg/wire/CONTRACT.md-- das vollständige Protokoll zwischen Agent und LIVCK
Findest du eine Sicherheitslücke, melde sie bitte über den Support statt über ein öffentliches Issue.
Weiterführende Themen
- Was gemessen wird -- jeder Messwert in Klartext
- Agent installieren -- Installation und Deinstallation
- Agent-Updates -- wie neue Versionen auf den Server kommen
- Allgemeine Fragen -- Datenschutz und Hosting