[Agent] Dienste- und Rollen-Inventar erfassen (Windows + Linux) — Grundlage für Funktionserkennung #215
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Voraussetzung fuer die Funktions-/Rollen-Ableitung in der Doku. Heute erfasst kein Agent ein Dienste- oder Software-Inventar — weder Windows noch Linux. Damit laesst sich auf Windows praktisch nichts ueber den Zweck einer VM aussagen: die Ableitung in #209 stuetzt sich auf Docker-Images, und Docker ist auf Windows-Servern faktisch nicht im Einsatz.
Was heute schon da ist
collect_ports()erfasst pro lauschendem Port bereits den Prozessnamen (Get-Process -Id $_.OwningProcess). Das ist auf Windows ein brauchbares Signal (sqlservr,w3wp,dns,Microsoft.Exchange.*) und wird bisher nur als Beiwerk in der Port-Tabelle angezeigt.Die Zuordnungstabellen
icon_slug()undname_for_port()(collect.rs:724/755) sind rein Linux-/Homelab-orientiert — Grafana, Jellyfin, Pi-hole, Portainer. Kein einziger Eintrag fuer Windows-Serversoftware.Warum keine Positivliste gepflegter Dienste
Es ist nicht praktikabel, jede Branchensoftware der Welt im Agent zu hinterlegen. Zwei generische Filter erledigen aber fast die ganze Arbeit, ohne dass irgendetwas gepflegt werden muss:
Filter 1 —
Get-WindowsFeature. Liefert ausschliesslich die installierten Rollen, typisch 15–25 von rund 250. Das ist die autoritative Antwort auf "was ist dieser Server": AD-DS, DNS, DHCP, Web-Server (IIS), FS-FileServer, RDS. Kein Rauschen.Filter 2 — Dienste, deren Binary nicht unter
C:\Windows\liegt. Diese eine Regel entfernt praktisch alle Bordmittel (Spooler, WSearch, BITS, …). Uebrig bleibt genau das Interessante:C:\Program Files\Microsoft\Exchange Server\C:\Program Files (x86)\DATEV\C:\Program Files\Microsoft SQL Server\Auf einem RDS-Host mit 250 Diensten bleiben so etwa 15–25 uebrig.
Die beiden sind komplementaer, nicht redundant. Windows-Rollen liegen sehr wohl in System32 (
dns.exe, DHCP,w3wp.exeunterinetsrv) — Filter 2 wuerde sie verwerfen. Exchange wiederum taucht inGet-WindowsFeaturenicht auf. Beide Quellen sind noetig.Performance
Get-Service/Get-CimInstance Win32_Serviceist ein Aufruf an den Service Control Manager, der alle Dienste auf einmal liefert. Es gibt keine Abfrage pro Dienst; 100 oder 400 Dienste kosten praktisch dasselbe. Der Kostenfaktor ist derpowershell.exe-Start (~300–800 ms), und davon laufen incollect_scan()bereits sieben parallel. Ein achtes Skript ist marginal.Eine agentseitige Ausschlussliste wuerde daher nichts einsparen — man muesste ohnehin erst alles enumerieren und dann filtern.
Filterung gehoert auf den Server, nicht in den Agent
Der Agent meldet Fakten, das Filtern ist eine Anzeigeentscheidung (Details in #216). Gruende gegen agentseitiges Filtern:
admin_router.py:221, #30: display-time gating, no data loss).Prompt fuer Claude Code
Definition of Done
servicesundrolesservicesin identischer Strukturvendor_scopetrennt Bordmittel von FremdsoftwareKette: #214 (Timeout) → #215 (Erfassung) → #216 (Filterung/Ableitung) → #217 (UI) → #209 (Doku).