Zum Inhalt

Agent Lock — den Server vor Vesana schützen

Früher „Lokale Freigabe“

Die Funktion heißt jetzt Agent Lock. Befehle, Dateien und Verhalten sind unverändert.

Vesana verteilt Scripts, Befehle und Log-Quellen zentral an Agents und Collectors. Das ist bequem, heißt aber auch: wer Vesana übernimmt (gestohlenes Admin-Konto, kompromittierter Vesana-Server), kann auf jedem überwachten Server Code ausführen.

Mit Agent Lock entscheidet der Server selbst, was bei ihm laufen darf. Vom Server gelieferter Code läuft nur noch, wenn er am Host freigegeben wurde. Die Überwachung läuft weiter.

  • Nur am Host: Ein- und Ausschalten und Freigeben geht ausschließlich mit einem Befehl auf dem Server selbst. Vesana zeigt den Stand nur an.
  • Freigabe per Fingerabdruck: Jede Freigabe gilt für genau einen Inhalt (SHA-256 über Art, Interpreter und Inhalt). Ändert jemand in Vesana ein Zeichen, läuft die geänderte Fassung erst nach erneuter Freigabe.
  • Nichts bricht: Bei einer Änderung läuft die zuletzt freigegebene Fassung weiter, bis die neue freigegeben ist.

Was gesperrt wird — und was weiterläuft

Freigabepflichtig Läuft ohne Freigabe weiter
Agent: Script-Checks (agent_script, auch „Lokaler Pfad"), Befehls-Checks (agent_custom) Alle eingebauten Checks: CPU, RAM, Disk, Dienste, Prozesse, Eventlog-/journald-Checks, Container, Ping, Zertifikat, Tiefenanalyse
Agent: Log-Quellen (Datei, journald, Windows-Eventlog, auditd)
Collector: API-Scripts (Art „Collector-Script", laufen auf der Collector-Maschine), SSH-Scripts und SSH-Befehle auf Geräten, Plugins Collector: Ping, Port, HTTP, SNMP, SSL, die festen SSH-Checks (CPU/RAM/Disk/Prozess/Dienst), Discovery

Außerdem gilt immer (auch ohne Sperre): Einstellbare Script-Werte kommen nur als VESANA_*-Variablen beim Script an.

Einschalten

Bei der Installation: Im Installationsdialog den Haken „Diesen Server vor Vesana schützen" setzen. Der Befehl bekommt dann VESANA_LOCK=1 (Linux) bzw. -Lock (Windows); die Sperre ist ab dem ersten Start aktiv, freigegeben ist noch nichts.

Nachträglich (als root bzw. in einer Administrator-PowerShell):

sudo vesana-agent lock
& 'C:\Program Files\Vesana Agent\vesana-agent.exe' lock
sudo /opt/vesana-collector/vesana-collector lock
sudo /opt/vesana-active-collector/vesana-active-collector lock

Collector und Aktiver Collector laufen aus der root-eigenen Datei unter /opt; das Dienstkonto, unter dem auch Scripts aus Vesana laufen, kann sie nicht ersetzen. Ältere Installationen liefen noch aus einer Datei unter /var/lib/…, die dem Dienstkonto gehört — dort einmal den Installer erneut ausführen, er stellt um und entfernt die alte Datei. Aus einer vom Dienstkonto ersetzbaren Datei verweigert der Collector lock als root.

lock zeigt, was Vesana gerade auf dem Host laufen lässt, und fragt, ob das übernommen werden soll. Mit J läuft danach alles wie bisher weiter — nur Neues oder Geändertes wartet auf Freigabe. lock status --show zeigt die Inhalte vorher an. Die Sperre wirkt nach wenigen Sekunden, ohne Neustart.

Freigeben

Wenn in Vesana ein Check dazukommt oder ein Script geändert wird, steht am Check „Wartet auf Freigabe am Host" (bzw. am Host-Kopf der Chip Agent Lock mit der Zahl wartender Einträge).

sudo vesana-agent lock approve

approve zeigt jeden wartenden Eintrag — bei einer neuen Fassung den Unterschied zur freigegebenen — und fragt einzeln nach (j, a = alle übrigen, q = abbrechen).

Was angezeigt wird, ist genau das, was freigegeben wird:

  • Steuerzeichen, Terminal-Sequenzen und Leserichtungs-Umkehrer werden sichtbar ausgeschrieben (lock status --show und lock approve); enthält ein Eintrag solche Zeichen, steht darüber eine Warnung. Namen bleiben einzeilig.
  • Unterscheiden sich zwei Fassungen nur in Leerraum oder Zeilenenden, sagt der Unterschied das nicht als „gleich", sondern markiert die Zeichen (␠ Leerzeichen, ⇥ Tab, ␍ Wagenrücklauf).

Weitere Befehle:

Befehl Wirkung
lock status Stand, Zahl der Freigaben, wartende Einträge
lock approve --all alle wartenden Einträge auf einmal (zeigt sie vorher, fragt einmal)
lock approve --all --yes ohne Rückfrage — für eigene Automatisierung
lock approve --sha256 <fp>[,<fp>…] genau diese Inhalte freigeben
lock prune Freigaben entfernen, die nichts mehr verwendet
unlock Sperre ausschalten (Freigaben bleiben gespeichert)

Pauschal freigeben

approve --all --yes gibt frei, was Vesana gerade schickt — ungesehen. Wer das regelmäßig automatisch laufen lässt (z. B. per cron), hat die Sperre praktisch ausgeschaltet. Jede Pauschal-Freigabe steht im Host-Verlauf in Vesana.

Viele Server auf einmal

Ändert sich ein Script, das auf vielen gesperrten Servern läuft:

  1. Auf einem Server lock approve ausführen und den Unterschied prüfen.
  2. approve gibt am Ende eine Zeile aus, z. B. vesana-agent lock approve --sha256 3f9a….
  3. Diese Zeile auf den übrigen Servern ausführen — per SSH-Schleife, Ansible, GPO oder PowerShell-Remoting. Sie gibt nur exakt diesen Inhalt frei. Hat Vesana auf einem Server etwas anderes geliefert, passt der Fingerabdruck nicht und es wird nichts freigegeben.

Die Übersicht unter Admin → Agents & Collectors → Agent Lock zeigt, welche Fassung auf welchen Servern wartet.

Eigene Scripts am Host

Scripts, die nur auf dem Server liegen, bindest du wie bisher über den Script-Modus „Lokaler Pfad" ein. Bei aktiver Sperre gilt zusätzlich:

  • Pfad und Interpreter brauchen eine Freigabe (sonst könnte Vesana den Pfad auf eine beliebige Datei zeigen lassen).
  • Die Datei und ihre Verzeichnisse dürfen nur für root bzw. Administratoren beschreibbar sein — der Agent führt sie als root/SYSTEM aus. Sonst meldet der Check, was zu tun ist (z. B. chmod go-w …).

Plugins und Collector-Scripts

  • Plugins (plugin_local) laufen bei aktiver Sperre nur mit absolutem Pfad. Freigegeben werden Programm und Argumente; bei Plugins, die Vesana in den Plugin-Ordner des Collectors synchronisiert, zusätzlich der Inhalt der Datei — auch dann, wenn ein solches Plugin nur als Argument eines anderen Plugins übergeben wird (z. B. negate <plugin>). Ausgeführt wird dann eine private Kopie genau der geprüften Bytes — ein Austausch zwischen Prüfung und Start führt nichts Ungeprüftes aus.
  • API-Scripts laufen lokal auf der Collector-Maschine und haben deshalb eine eigene Art („Collector-Script"). Eine Freigabe desselben Scripts für SSH gilt dafür nicht.

Log-Quellen und Verknüpfungen

Eine freigegebene journald- oder Eventlog-Quelle liest genau die freigegebenen Units bzw. Kanäle — egal, in welcher Schreibweise der Server sie schickt. Eine Freigabe für einen einzelnen Dienst lässt sich nicht nutzen, um das ganze System-Journal oder andere Eventlog-Kanäle zu lesen.

Der Agent liest Log-Dateien als root. Eine symbolische Verknüpfung im Log-Pfad (auch ein verlinktes Verzeichnis) folgt er nur, wenn sie root gehört oder wenn ihr Ziel demselben Benutzer gehört wie die Verknüpfung. Sonst liest er die Datei nicht und schreibt eine Meldung mit Pfad und Grund ins Agent-Log. Unter Windows ändert sich nichts.

Grenzen

Agent Lock verhindert, dass ein übernommenes Vesana Code auf dem Server ausführt. Sie verhindert nicht:

  • dass Messwerte und freigegebene Logs mitgelesen werden,
  • dass Checks abgeschaltet oder Alarme verfälscht werden,
  • dass freigegebene Scripts mit anderen Werten (VESANA_*) oder in anderem Takt laufen. Scripts sollten Werte deshalb nie als Code ausführen (kein eval, kein Invoke-Expression).

Die Agent- bzw. Collector-Binary selbst kann ein übernommenes Vesana nicht austauschen: Selbst-Updates sind vom Hersteller signiert und werden vor dem Einspielen geprüft (siehe Signierte Updates). Beim Collector gehört die Binary unter /opt root; ein Update ersetzt sie nur über einen root-Helfer, der die Signatur erneut prüft.

In Vesana selbst gibt es eine zweite, vorgelagerte Hürde: Wer Scripts oder Kommandos ändert, muss standardmäßig vorher seine Identität bestätigen (siehe Script-Änderungen bestätigen). Das schützt vor einer übernommenen Anmeldesitzung. Gegen einen übernommenen Server hilft nur Agent Lock.

Wo die Freigaben liegen

Ort
Agent (Linux) /var/lib/vesana-agent/lock/
Agent (Windows) C:\ProgramData\Vesana\Agent\lock\ (nur SYSTEM + Administratoren)
Collector /etc/vesana-lock/collector/
Aktiver Collector /etc/vesana-lock/active-collector/

Ist die Freigabe-Datei beschädigt, bleibt die Sperre aktiv und nichts Freigabepflichtiges läuft; lock status zeigt den Grund, lock reset --yes legt sie neu an.