222 lines
5.5 KiB
Plaintext
222 lines
5.5 KiB
Plaintext
# Lastenheft – OPNsense Zentralmanagement Agent
|
||
|
||
## 1. Zielsetzung
|
||
|
||
Ziel dieses Projektes ist die Entwicklung eines **OPNsense Zentralmanagement-Agents**, der es einer externen Management‑ und Monitoring‑Plattform ermöglicht, weitreichende Systeminformationen auszulesen sowie definierte Systemaktionen und Änderungen auf OPNsense‑Firewalls durchzuführen.
|
||
|
||
Da die bestehende OPNsense‑API für den vorgesehenen Funktionsumfang nicht ausreichend ist, soll ein **Agent-basiertes Architekturmodell** umgesetzt werden. Der Agent stellt eine sichere, persistente Verbindung zu einem zentralen Backend her und fungiert als Kontroll‑, Informations‑ und Tunnel‑Endpunkt.
|
||
|
||
im Ordner beispielbilder sind vergleichbare Portale
|
||
|
||
## 2. Ausgangssituation
|
||
|
||
* Mehrere OPNsense‑Firewalls (verschiedene Versionen, Standorte, Kunden)
|
||
* Zentrale Verwaltungsoberfläche (ähnlich den gezeigten UI‑Mockups)
|
||
* Bestehende OPNsense‑API liefert nicht alle benötigten Informationen
|
||
* Bedarf an:
|
||
|
||
* System‑Transparenz
|
||
* Fernzugriff (SSH / WebUI)
|
||
* Zentralem Backup‑ und Zertifikatsmanagement
|
||
|
||
## 3. Gesamtarchitektur
|
||
|
||
### 3.1 Komponenten
|
||
|
||
#### 3.1.1 OPNsense Agent (pro Firewall)
|
||
|
||
* Läuft lokal auf der OPNsense (Plugin oder Service)
|
||
* Baut **initiativ** eine Verbindung zum Backend auf (Outbound only)
|
||
* Liefert Systemdaten
|
||
* Führt Kommandos und Aktionen kontrolliert aus
|
||
|
||
#### 3.1.2 Backend Server (Control Plane)
|
||
|
||
* Zentrale Kommunikations‑ und Steuerinstanz
|
||
* Hält persistente Agent‑Verbindungen
|
||
* Stellt APIs für das Frontend bereit
|
||
* Baut Tunnel (SSH / HTTPS) zu den Firewalls über den Agent auf
|
||
|
||
#### 3.1.3 Frontend Server (UI / Webinterface)
|
||
|
||
* Web‑UI für Administratoren
|
||
* Darstellung der Firewalls (Übersichten, Details, Status)
|
||
* Steuerung von Aktionen (Tunnel, Backups, Reloads)
|
||
|
||
## 4. Funktionale Anforderungen – Agent
|
||
|
||
### 4.1 Hardware‑ und Systeminformationen
|
||
|
||
Der Agent muss folgende Informationen bereitstellen:
|
||
|
||
* Hersteller
|
||
* Modell
|
||
* Seriennummer
|
||
* BIOS‑Version
|
||
* CPU (Typ, Kerne, Threads, Takt)
|
||
* RAM (gesamt, frei)
|
||
* Massenspeicher (Typ, Kapazität, Belegung)
|
||
* OPNsense‑Version
|
||
* Uptime
|
||
|
||
### 4.2 Dienste und Status
|
||
|
||
Der Agent muss:
|
||
|
||
* Alle Systemdienste auflisten
|
||
* Status je Dienst liefern (running / stopped)
|
||
* Dienst neu starten / stoppen / starten können (optional konfigurierbar)
|
||
|
||
Beispiele:
|
||
|
||
* configd
|
||
* dhcpd / kea
|
||
* unbound
|
||
* openvpn
|
||
* wireguard
|
||
* cron
|
||
|
||
### 4.3 Netzwerk‑Interfaces
|
||
|
||
Der Agent muss:
|
||
|
||
* Alle Interfaces anzeigen
|
||
* Rolle (WAN / LAN / OPT)
|
||
* IP‑Adresse(n)
|
||
* MAC‑Adresse
|
||
* RX/TX‑Traffic
|
||
* Status (up/down)
|
||
|
||
### 4.4 VPN‑Informationen
|
||
|
||
#### 4.4.1 WireGuard
|
||
|
||
* Tunnelname
|
||
* Peers
|
||
* Status (up/down)
|
||
* Transferstatistiken
|
||
|
||
#### 4.4.2 OpenVPN
|
||
|
||
* Server / Client‑Instanzen
|
||
* Verbindungsstatus
|
||
* Road‑Warrior‑Sessions
|
||
|
||
### 4.5 Routing
|
||
|
||
* Anzeige der Routing‑Tabelle
|
||
* Zielnetz
|
||
* Gateway
|
||
* Interface
|
||
* Typ (statisch / dynamisch)
|
||
|
||
### 4.6 DHCP (KEA)
|
||
|
||
* Aktive DHCP‑Instanzen
|
||
* Pools
|
||
* Leases (IPv4 / IPv6)
|
||
* Lease‑Status
|
||
* Zuordnung MAC ↔ IP
|
||
|
||
### 4.7 Zertifikate
|
||
|
||
* Auflistung aller Zertifikate
|
||
* Typ (CA, Server, User, ACME)
|
||
* Gültigkeitszeitraum
|
||
* Ablaufwarnungen
|
||
* Zertifikat neu laden / erneuern (optional)
|
||
|
||
### 4.8 Backups
|
||
|
||
Der Agent muss:
|
||
|
||
* Konfigurations‑Backups erstellen können
|
||
* Backup lokal zwischenspeichern
|
||
* Backup an Backend übertragen
|
||
* Metadaten liefern (Größe, Zeitstempel)
|
||
|
||
## 5. Tunnel‑Funktionalität
|
||
|
||
### 5.1 Ziel
|
||
|
||
Das Backend soll on‑demand Tunnel zu einer Firewall aufbauen können, ohne dass direkte eingehende Verbindungen zur Firewall notwendig sind.
|
||
|
||
### 5.2 Tunnelarten
|
||
|
||
* SSH‑Tunnel
|
||
* HTTPS‑Tunnel (WebUI)
|
||
|
||
### 5.3 Funktionsweise
|
||
|
||
* Agent hält persistente Verbindung zum Backend
|
||
* Backend fordert Tunnel an
|
||
* Agent öffnet lokalen Zielport (z. B. 127.0.0.1:22 oder 443)
|
||
* Agent erstellt Reverse‑Tunnel
|
||
* Backend stellt öffentlichen / internen Zugriffspunkt bereit
|
||
|
||
### 5.4 Anforderungen an Tunnel
|
||
|
||
* Vergleichbar mit **stunnel**
|
||
* Konfigurierbar:
|
||
|
||
* Zielport
|
||
* Protokoll
|
||
* Laufzeit
|
||
* Zugriffsbeschränkung
|
||
* Frontend zeigt klickbaren Link zum Tunnel
|
||
|
||
## 6. Sicherheit & Compliance
|
||
|
||
### 6.1 Kommunikation
|
||
|
||
* TLS‑verschlüsselt (mTLS bevorzugt)
|
||
* Agent authentifiziert sich eindeutig
|
||
* Zertifikatsbasierte Identität
|
||
|
||
### 6.2 Rechte & Rollen
|
||
|
||
* Agent darf nur explizit erlaubte Aktionen ausführen
|
||
* Rollenmodell im Backend (Admin, Read‑Only, Operator)
|
||
|
||
### 6.3 Logging & Audit
|
||
|
||
* Alle Aktionen werden protokolliert
|
||
* Tunnel‑Nutzung wird geloggt
|
||
* Konfigurationsänderungen nachvollziehbar
|
||
|
||
## 7. Nicht‑funktionale Anforderungen
|
||
|
||
### 7.1 Performance
|
||
|
||
* Geringe Last auf OPNsense
|
||
* Asynchrone Abfragen
|
||
|
||
### 7.2 Stabilität
|
||
|
||
* Agent überlebt OPNsense‑Updates
|
||
* Automatische Reconnect‑Logik
|
||
|
||
### 7.3 Skalierbarkeit
|
||
|
||
* Unterstützung für viele hundert Firewalls
|
||
* Mandantenfähigkeit (Kunden / Standorte)
|
||
|
||
## 8. Abgrenzung
|
||
|
||
Nicht Bestandteil dieses Lastenhefts:
|
||
|
||
* Vollständige Firewall‑Rule‑Bearbeitung
|
||
* Deep Packet Inspection
|
||
* IDS/IPS‑Regelverwaltung
|
||
|
||
## 9. Abnahmekriterien
|
||
|
||
* Alle genannten Informationspunkte sind im Frontend sichtbar
|
||
* Tunnel können on‑demand aufgebaut und beendet werden
|
||
* Backups sind abrufbar und wiederherstellbar
|
||
* Agent funktioniert mit mehreren OPNsense‑Versionen
|
||
|
||
---
|
||
|
||
*Dieses Lastenheft basiert auf den bereitgestellten Screenshots, der beschriebenen Zielarchitektur und den funktionalen Anforderungen des Auftraggebers.*
|