# 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 ### 1. Repo klonen und Plugin bauen (auf dem Backend-Server) ```bash git clone https://git.cynfo.net/christian/rmm2.git /opt/rmm cd /opt/rmm make agent # Baut das FreeBSD-Binary make plugin # Paketiert das OPNsense-Plugin (.pkg) ``` ### 2. Installer-ZIP im Frontend hochladen **Frontend → Firmware → Installer-Pakete → freebsd → ZIP hochladen** Das ZIP enthält: `rmm-agent` + `rmm-updater-freebsd` + `install.sh` ```bash # ZIP bauen (auf dem Build-Server) cd /opt/rmm make release VERSION=1.0.3 # → build/release/rmm-freebsd-1.0.3.zip ``` ### 3. Installer auf der Firewall ausführen Das Frontend zeigt nach dem Upload den fertigen Befehl mit Copy-Button. Auf der OPNsense-Firewall (SSH als root): ```bash fetch --no-verify-peer --no-verify-hostname \ -o /tmp/installer.zip \ "https://BACKEND_IP:8443/api/v1/installer/download?platform=freebsd&api_key=DEIN_API_KEY" \ && cd /tmp && unzip -o installer.zip && sh /tmp/install.sh ``` ### 3. Im WebGUI konfigurieren **Services → RMM Agent** öffnen und eintragen: | Feld | Beschreibung | |------|-------------| | Backend URL | `https://BACKEND_IP:8443` | | API Key | API-Key aus `backend/config.yaml` | | Agent Name | Anzeigename im RMM-Frontend | ## 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`