From f3b052e2c792988a588b33b5bc8074f8cde8deeb Mon Sep 17 00:00:00 2001 From: cynfo3000 Date: Fri, 6 Mar 2026 09:48:05 +0100 Subject: [PATCH] =?UTF-8?q?refactor:=20agent/=20=E2=86=92=20agent-bsd/,=20?= =?UTF-8?q?README.md=20f=C3=BCr=20BSD-Agent=20erstellt,=20Referenzen=20akt?= =?UTF-8?q?ualisiert?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 4 +- README.md | 2 +- agent-bsd/README.md | 108 ++++++++++++++++++ {agent => agent-bsd}/client/client.go | 0 {agent => agent-bsd}/collector/caddy.go | 0 .../collector/certificates.go | 0 {agent => agent-bsd}/collector/cpu.go | 0 {agent => agent-bsd}/collector/cron.go | 0 {agent => agent-bsd}/collector/dhcp.go | 0 {agent => agent-bsd}/collector/disk.go | 0 {agent => agent-bsd}/collector/gateways.go | 0 {agent => agent-bsd}/collector/haproxy.go | 0 {agent => agent-bsd}/collector/hardware.go | 0 {agent => agent-bsd}/collector/memory.go | 0 {agent => agent-bsd}/collector/network.go | 0 {agent => agent-bsd}/collector/opnsense.go | 0 {agent => agent-bsd}/collector/pfstates.go | 0 {agent => agent-bsd}/collector/plugins.go | 0 {agent => agent-bsd}/collector/routing.go | 0 {agent => agent-bsd}/collector/security.go | 0 {agent => agent-bsd}/collector/services.go | 0 {agent => agent-bsd}/collector/updates.go | 0 {agent => agent-bsd}/collector/wireguard.go | 0 {agent => agent-bsd}/config.yaml.example | 0 {agent => agent-bsd}/config/config.go | 0 {agent => agent-bsd}/go.mod | 0 {agent => agent-bsd}/go.sum | 0 {agent => agent-bsd}/main.go | 0 {agent => agent-bsd}/ws/client.go | 0 {agent => agent-bsd}/ws/handler.go | 0 {agent => agent-bsd}/ws/tunnel.go | 0 {agent => agent-bsd}/ws/wireguard.go | 0 32 files changed, 111 insertions(+), 3 deletions(-) create mode 100644 agent-bsd/README.md rename {agent => agent-bsd}/client/client.go (100%) rename {agent => agent-bsd}/collector/caddy.go (100%) rename {agent => agent-bsd}/collector/certificates.go (100%) rename {agent => agent-bsd}/collector/cpu.go (100%) rename {agent => agent-bsd}/collector/cron.go (100%) rename {agent => agent-bsd}/collector/dhcp.go (100%) rename {agent => agent-bsd}/collector/disk.go (100%) rename {agent => agent-bsd}/collector/gateways.go (100%) rename {agent => agent-bsd}/collector/haproxy.go (100%) rename {agent => agent-bsd}/collector/hardware.go (100%) rename {agent => agent-bsd}/collector/memory.go (100%) rename {agent => agent-bsd}/collector/network.go (100%) rename {agent => agent-bsd}/collector/opnsense.go (100%) rename {agent => agent-bsd}/collector/pfstates.go (100%) rename {agent => agent-bsd}/collector/plugins.go (100%) rename {agent => agent-bsd}/collector/routing.go (100%) rename {agent => agent-bsd}/collector/security.go (100%) rename {agent => agent-bsd}/collector/services.go (100%) rename {agent => agent-bsd}/collector/updates.go (100%) rename {agent => agent-bsd}/collector/wireguard.go (100%) rename {agent => agent-bsd}/config.yaml.example (100%) rename {agent => agent-bsd}/config/config.go (100%) rename {agent => agent-bsd}/go.mod (100%) rename {agent => agent-bsd}/go.sum (100%) rename {agent => agent-bsd}/main.go (100%) rename {agent => agent-bsd}/ws/client.go (100%) rename {agent => agent-bsd}/ws/handler.go (100%) rename {agent => agent-bsd}/ws/tunnel.go (100%) rename {agent => agent-bsd}/ws/wireguard.go (100%) diff --git a/.gitignore b/.gitignore index b006251..b66dfa4 100644 --- a/.gitignore +++ b/.gitignore @@ -2,7 +2,7 @@ # Konfigurationen mit Passwörtern — NIEMALS einchecken # ======================== config.yaml -agent/config.yaml +agent-bsd/config.yaml backend/config.yaml opnsense-plugin/src/opnsense/service/templates/OPNsense/RMMAgent/config.yaml @@ -23,7 +23,7 @@ certs/ # Kompilierte Binaries # ======================== backend/rmm-backend -agent/rmm-agent +agent-bsd/rmm-agent agent-linux/rmm-agent build/ updater/rmm-updater diff --git a/README.md b/README.md index 7e256fe..242bed7 100644 --- a/README.md +++ b/README.md @@ -136,7 +136,7 @@ rmm/ │ ├── BACKEND.md # Backend Installation + Konfiguration │ ├── FRONTEND.md # Frontend Build + Deploy │ └── FIRMWARE.md # Firmware-Management + Update-Prozess -├── agent/ # Agent-Quellcode (FreeBSD/OPNsense) +├── agent-bsd/ # Agent-Quellcode (FreeBSD/OPNsense) │ ├── main.go │ ├── config/config.go │ ├── client/client.go diff --git a/agent-bsd/README.md b/agent-bsd/README.md new file mode 100644 index 0000000..017ca91 --- /dev/null +++ b/agent-bsd/README.md @@ -0,0 +1,108 @@ +# RMM Agent BSD (OPNsense) + +FreeBSD/OPNsense Agent für das RMM-System. Läuft als OPNsense-Plugin und liefert +Systemdaten via Heartbeat sowie Remote-Commands über WebSocket. + +## Unterstützte Systeme + +- OPNsense (FreeBSD, amd64) + +## Installation via OPNsense Plugin + +Das Plugin (`os-rmm-agent-*.pkg`) wird über das OPNsense-Paketmanagement installiert: + +```bash +# Auf der OPNsense-Firewall (SSH) +git clone https://git.cynfo.net/christian/rmm2.git /tmp/rmm +cd /tmp/rmm +scp opnsense-plugin/install.sh root@FIREWALL_IP:/tmp/ +ssh root@FIREWALL_IP "/bin/sh /tmp/install.sh" +``` + +Anschliessend im OPNsense WebGUI unter **Services → RMM Agent** konfigurieren. + +## Konfiguration (WebGUI) + +| Feld | Beschreibung | +|------|-------------| +| Backend URL | `https://BACKEND_IP:8443` | +| API Key | API-Key aus `backend/config.yaml` | +| Agent Name | Anzeigename im RMM-Frontend | + +## Manuell kompilieren & deployen + +```bash +# Auf dem Entwicklungsrechner (mit Go 1.24+) +cd /opt/rmm +make agent + +# Binary auf Firewall kopieren und installieren +scp build/rmm-agent root@FIREWALL_IP:/tmp/ +scp agent-bsd/install.sh root@FIREWALL_IP:/tmp/ +ssh root@FIREWALL_IP "/bin/sh /tmp/install.sh" +``` + +## Konfigurationsdatei + +```yaml +# /usr/local/etc/rmm-agent/config.yaml +backend_url: "https://BACKEND_IP:8443" +api_key: "DEIN_API_KEY" +agent_name: "OPN.intra.kunde.de" +insecure: true # false wenn gültiges TLS-Zertifikat vorhanden +``` + +## Service-Management (FreeBSD) + +```bash +# Status +service rmm-agent status + +# Start / Stop / Restart +service rmm-agent start +service rmm-agent stop +service rmm-agent restart + +# Logs +tail -f /var/log/rmm-agent.log +``` + +## Gesammelte Daten (Heartbeat alle 60s) + +| Collector | Daten | +|-----------|-------| +| Hardware | Hersteller, Modell, Seriennummer, BIOS | +| CPU | Modell, Cores, Threads, Auslastung | +| Memory | Total, Used, Free | +| Disks | ZFS Datasets, Belegung, Mountpoints | +| Network | Interfaces, IPs, Status, MAC, Statistiken | +| Services | Laufende OPNsense-Dienste | +| WireGuard | Tunnel, Peers, Transfer, Handshake | +| DHCP | Aktive Leases (KEA/ISC/dnsmasq) | +| Routing | Routing-Tabelle | +| Gateways | Status, RTT, Loss | +| Zertifikate | Ablaufdatum, Aussteller | +| Plugins | Installierte OPNsense-Plugins | +| Updates | Verfügbare Core + Package Updates | +| Cron | System-Crontab + OPNsense Jobs | + +## Remote-Commands (via WebSocket) + +| Command | Beschreibung | +|---------|-------------| +| `exec` | Beliebigen Shell-Befehl ausführen | +| `backup` | config.xml sichern | +| `update` | OPNsense Update (Core + Packages) | +| `major_update` | Major-Upgrade (2-Phasen) | +| `reboot` | Neustart | +| `tunnel_connect` | TCP-Tunnel öffnen (SSH, WebGUI, etc.) | +| `wg_add_peer` | WireGuard-Peer anlegen | +| `wg_delete_peer` | WireGuard-Peer löschen | + +## Hinweise (FreeBSD) + +- Volle Pfade verwenden: `/usr/local/sbin/pluginctl`, `/usr/bin/netstat` +- `daemon` statt `nohup` für Hintergrundprozesse +- `csh` hat kein `$()` — Agent verwendet `/bin/sh -c` +- OPNsense Plugin-Cache nach View-Änderungen leeren +- PHP-Fehlerlog: `/var/log/php-fpm.log` diff --git a/agent/client/client.go b/agent-bsd/client/client.go similarity index 100% rename from agent/client/client.go rename to agent-bsd/client/client.go diff --git a/agent/collector/caddy.go b/agent-bsd/collector/caddy.go similarity index 100% rename from agent/collector/caddy.go rename to agent-bsd/collector/caddy.go diff --git a/agent/collector/certificates.go b/agent-bsd/collector/certificates.go similarity index 100% rename from agent/collector/certificates.go rename to agent-bsd/collector/certificates.go diff --git a/agent/collector/cpu.go b/agent-bsd/collector/cpu.go similarity index 100% rename from agent/collector/cpu.go rename to agent-bsd/collector/cpu.go diff --git a/agent/collector/cron.go b/agent-bsd/collector/cron.go similarity index 100% rename from agent/collector/cron.go rename to agent-bsd/collector/cron.go diff --git a/agent/collector/dhcp.go b/agent-bsd/collector/dhcp.go similarity index 100% rename from agent/collector/dhcp.go rename to agent-bsd/collector/dhcp.go diff --git a/agent/collector/disk.go b/agent-bsd/collector/disk.go similarity index 100% rename from agent/collector/disk.go rename to agent-bsd/collector/disk.go diff --git a/agent/collector/gateways.go b/agent-bsd/collector/gateways.go similarity index 100% rename from agent/collector/gateways.go rename to agent-bsd/collector/gateways.go diff --git a/agent/collector/haproxy.go b/agent-bsd/collector/haproxy.go similarity index 100% rename from agent/collector/haproxy.go rename to agent-bsd/collector/haproxy.go diff --git a/agent/collector/hardware.go b/agent-bsd/collector/hardware.go similarity index 100% rename from agent/collector/hardware.go rename to agent-bsd/collector/hardware.go diff --git a/agent/collector/memory.go b/agent-bsd/collector/memory.go similarity index 100% rename from agent/collector/memory.go rename to agent-bsd/collector/memory.go diff --git a/agent/collector/network.go b/agent-bsd/collector/network.go similarity index 100% rename from agent/collector/network.go rename to agent-bsd/collector/network.go diff --git a/agent/collector/opnsense.go b/agent-bsd/collector/opnsense.go similarity index 100% rename from agent/collector/opnsense.go rename to agent-bsd/collector/opnsense.go diff --git a/agent/collector/pfstates.go b/agent-bsd/collector/pfstates.go similarity index 100% rename from agent/collector/pfstates.go rename to agent-bsd/collector/pfstates.go diff --git a/agent/collector/plugins.go b/agent-bsd/collector/plugins.go similarity index 100% rename from agent/collector/plugins.go rename to agent-bsd/collector/plugins.go diff --git a/agent/collector/routing.go b/agent-bsd/collector/routing.go similarity index 100% rename from agent/collector/routing.go rename to agent-bsd/collector/routing.go diff --git a/agent/collector/security.go b/agent-bsd/collector/security.go similarity index 100% rename from agent/collector/security.go rename to agent-bsd/collector/security.go diff --git a/agent/collector/services.go b/agent-bsd/collector/services.go similarity index 100% rename from agent/collector/services.go rename to agent-bsd/collector/services.go diff --git a/agent/collector/updates.go b/agent-bsd/collector/updates.go similarity index 100% rename from agent/collector/updates.go rename to agent-bsd/collector/updates.go diff --git a/agent/collector/wireguard.go b/agent-bsd/collector/wireguard.go similarity index 100% rename from agent/collector/wireguard.go rename to agent-bsd/collector/wireguard.go diff --git a/agent/config.yaml.example b/agent-bsd/config.yaml.example similarity index 100% rename from agent/config.yaml.example rename to agent-bsd/config.yaml.example diff --git a/agent/config/config.go b/agent-bsd/config/config.go similarity index 100% rename from agent/config/config.go rename to agent-bsd/config/config.go diff --git a/agent/go.mod b/agent-bsd/go.mod similarity index 100% rename from agent/go.mod rename to agent-bsd/go.mod diff --git a/agent/go.sum b/agent-bsd/go.sum similarity index 100% rename from agent/go.sum rename to agent-bsd/go.sum diff --git a/agent/main.go b/agent-bsd/main.go similarity index 100% rename from agent/main.go rename to agent-bsd/main.go diff --git a/agent/ws/client.go b/agent-bsd/ws/client.go similarity index 100% rename from agent/ws/client.go rename to agent-bsd/ws/client.go diff --git a/agent/ws/handler.go b/agent-bsd/ws/handler.go similarity index 100% rename from agent/ws/handler.go rename to agent-bsd/ws/handler.go diff --git a/agent/ws/tunnel.go b/agent-bsd/ws/tunnel.go similarity index 100% rename from agent/ws/tunnel.go rename to agent-bsd/ws/tunnel.go diff --git a/agent/ws/wireguard.go b/agent-bsd/ws/wireguard.go similarity index 100% rename from agent/ws/wireguard.go rename to agent-bsd/ws/wireguard.go