Überblick — was diese Seite leistet
Sicherheit ▸ Firewall (/security/firewall) zeichnet jeden Port, den Ihre Server offen lassen, in eine einzige Expositionskarte. Sie färbt jeden offenen Port nach Risiko ein (crit / warn / ok / unknown) und unterscheidet, ob es sich um einen registrierten Dienst (managed) oder um eine überraschende Öffnung (unmanaged) handelt — so sehen Sie sofort, „was von außen sichtbar ist und warum“.
Sie verknüpft drei Quellen:
infr_instance_firewall (per-instance firewall rules = open ports/services)
× infr_instance (host meta — public IP · criticality · env · status)
× infr_service (registered logical services — instance_id · port)
→ classified by FirewallLore → exposure map
- Dies ist eine rein lesende Konsole. Das Bearbeiten und Erfassen der Firewall-Regeln selbst ist Aufgabe von Assets ▸ Instanzen ▸ [fw]; diese Seite formt dieses Verzeichnis lediglich in eine systemweite Ansicht um.
- Da alle Quellen neue
infr_-Tabellen sind, wirdlegacy_glory(Suricata, Kitsune, …) niemals berührt — die Abfrage erfolgt direkt über Eloquent und benötigt keinSecurityRepository. - Abruf im 30-Sekunden-Takt (live). Die maßgebliche Logik der Risikoeinstufung liegt in
App\Support\FirewallLore, die erläuternden Texte inresources/lang/{ko,en}/fwlore.php.
Abgrenzung der Zuständigkeit: Diese Seite betrachtet die physische Öffnung und Exposition von Ports (Angriffsfläche). Die logische Erreichbarkeit von Diensten (Health-Checks) gehört zu Service ▸ Katalog. Derselbe Port wird an beiden Stellen unter einem anderen Blickwinkel betrachtet.
Wann Sie sie verwenden
- Um die Angriffsfläche des gesamten Serverbestands zu prüfen — „welche Ports sind gerade jetzt von außen sichtbar?“
- Um überraschende Öffnungen zu finden — ein Datenbank-, Cache- oder Fernwartungsport, der offen ist, aber keinem registrierten Dienst entspricht (nicht verwaltete Exposition).
- Um die schlimmste Exposition zuerst zu bearbeiten — Ports mit Risiko crit auf Hosts mit öffentlicher IP.
- Um auf einen Blick zu sehen, welche Hosts einen bestimmten Port öffnen (Portansicht).
- Um zu prüfen, was und wie viel eine einzelne Maschine exponiert (Hostansicht).
- Um zu erfahren, warum ein Port riskant ist und wie er einzuschränken ist (Dialog zur Port-Risikoerläuterung).
Aufbau
Kopfbereich (HERO)
Titel/Untertitel (Ports your fleet leaves open — attack-surface exposure map), Zeitstempel der letzten Erfassung, ein LIVE / PAUSED-Schalter (30-s-Abruf ein/aus) und eine Vollbildschaltfläche.
Leerer Zustand
Wenn überhaupt keine Firewall-Regeln vorhanden sind, erscheint ein Einstiegsbereich — die Schaltfläche Go to Instances führt Sie zu /asset/instances. Importieren Sie ein firewall-cmd-Ergebnis über Instanzen ▸ [fw] oder erfassen Sie offene Ports per Remote-Emulation, und die Karte füllt sich.
KPI-Band (5 Kacheln)
| KPI | Bezeichnung | Definition | Berechnet als |
|---|---|---|---|
| ports | Offene Ports | Summe der offenen Port-Einträge über alle Hosts | Anzahl der eingestuften Regeln |
| hosts | Exponierte Hosts | Maschinen, die mindestens einen Port öffnen | verschiedene instance_id |
| crit | Riskante Exposition | Als crit eingestufte Ports | risk == 'crit' |
| unmanaged | Nicht verwaltete Exposition | Ports, die KEIN registrierter Dienst sind UND deren Risiko nicht ok ist |
!managed && risk != 'ok' |
| public_crit | Öffentlich · crit | Crit-Ports, die auf einem Host mit öffentlicher IP offen sind | crit && public |
Öffentlich · crit ist eine bewusste Doppelzählung. Ein crit-Port auf einer öffentlichen IP taucht bereits unter
Risky exposureund (sofern es kein registrierter Dienst ist) auch unterUnmanaged exposureauf — weil diese Schnittmenge (public × crit) jedoch die schlimmste Exposition im gesamten Bestand darstellt, wird sie noch einmal als eigener KPI herausgestellt, damit nichts durchrutscht. Ist diese Kachel nicht null, beheben Sie sie zuerst.
Band des Expositionsrisikos
Ein vierfarbiger gestapelter Balken (crit·warn·ok·unknown) zeigt die Risikoverteilung. Die Legende darunter ist ein Klickfilter — klicken Sie auf eine Risikostufe, um nur diese Stufe zu behalten (erneuter Klick hebt die Auswahl auf). Neben dem Band gibt coverage (z. B. 7 / 12 hosts collected) die Zahl der Hosts mit Firewall-Regeln im Verhältnis zur Gesamtzahl der Instanzen an.
Werkzeugleiste · Filter
- Ansichtsumschalter: nach Port / nach Host.
- Protokoll: all / TCP / UDP.
- Risiko: all / crit / warn / ok / unknown.
- Kontrollkästchen Nur nicht verwaltete: nur Ports, die keine registrierten Dienste sind.
- Suche: trifft auf Port · Dienst · Host (einschließlich Alias) zu.
Portansicht
Ein Raster von Portkarten. Jede Karte zeigt Port/Protokoll · Dienstbezeichnung · Risikoabzeichen, die Host-Chips, die diesen Port öffnen (bis zu 8 + +N), und eine Fußzeile mit Hostanzahl · Anzahl öffentlicher Expositionen · Kategorie. Ein Klick auf eine Karte öffnet den Dialog mit Portdetails und Risikoerläuterung. Sortiert nach Risiko → Hostanzahl → Portnummer.
Hostansicht
Ein Raster von Hostkarten. Jede Karte zeigt Hostname · Alias · env · Kritikalität, ein Abzeichen für öffentlich, die Port-Chips, die diese Maschine öffnet (nach Risiko eingefärbt, mit check-decagram-Markierung bei einem registrierten Dienst), und eine Fußzeile mit den Anzahlen je Risiko · der Gesamtzahl der Ports. Ein Klick auf einen Port-Chip öffnet denselben Detaildialog. Sortiert nach Anzahl crit → Anzahl warn → Portanzahl.
Dialog mit Portdetails und Risikoerläuterung
Port/Protokoll · Dienstname · Risikoabzeichen · Kategorie, dazu die dreiteilige fwlore-Erläuterung:
- Worum es sich handelt (what) — welcher Dienst dieser Port ist.
- Warum es riskant ist (why) — zu welchen Angriffen seine Exposition führen kann.
- Empfohlene Maßnahme (best) — wie sich die Exposition einschränken lässt.
Darunter die Liste der Hosts, die diesen Port öffnen (env · Kritikalität · Zone · öffentlich/intern · Abzeichen verwaltet/nicht verwaltet) sowie ein Link Manage in Instances ▸ [fw].
Verwendung
- Ist LIVE aktiv, aktualisiert sich die Seite alle 30 Sekunden. Wenn Sie bewegte Werte während einer Untersuchung stören, schalten Sie auf PAUSED um.
- Prüfen Sie zuerst den KPI Öffentlich · crit — ist er nicht null, klicken Sie in der Risikolegende auf
crit, um die Portansicht einzugrenzen, und nehmen Sie sich zuerst die Hosts mit öffentlich-Chip (Globussymbol) vor. - Nutzen Sie Nur nicht verwaltete, um „überraschende Öffnungen“ zu isolieren. Erscheinen hier eine Datenbank (3306/5432/27017), ein Cache (6379/11211), Docker (2375) oder eine Fernwartung (23/3389/VNC), die kein registrierter Dienst sind, schränken Sie sie sofort ein.
- Klicken Sie auf eine Portkarte, lesen Sie why/best im Erläuterungsdialog und folgen Sie dann
Manage in Instances ▸ [fw], um die Regel zu verschärfen oder sie als Dienst zu registrieren. - Das tatsächliche Schließen eines Ports oder das Bearbeiten einer Regel geschieht nicht hier, sondern in der Firewall des Zielhosts sowie in Instanzen ▸ [fw]. Diese Seite ist eine Karte und ein Prüfwerkzeug.
Regeln der Risikoeinstufung (FirewallLore)
Eine Portangabe kann ein einzelner Wert (8080) oder ein Bereich (6081-6100) sein. Ein Bereich wird anhand seines Startports gegen die Tabelle der bekannten Ports abgeglichen.
| risk | rank | Bedeutung | Beispiele |
|---|---|---|---|
| crit | 3 | Unmittelbare Gefahr bei Exposition — Datenspeicher · Fernwartung · Dateifreigabe · Container | MySQL 3306, Redis 6379, RDP 3389, SMB 445, Docker 2375, k8s-api 6443 |
| warn | 2 | Beobachten — Verwaltung · Altlasten · nicht standardisiert | SSH 22, SMTP 25, 8080/8443, SNMP 161, Grafana 3000 |
| ok | 1 | Üblicher öffentlicher Dienst | HTTP 80, HTTPS 443, DNS 53, NTP 123, WireGuard 51820 |
| unknown | 0 | Nicht zugeordnet — Prüfung erforderlich | Ports/Bereiche, die nicht im Katalog stehen |
- Das VNC-Band (5900–5910) wird als Bereich statt als einzelne Einträge behandelt und gilt als
remote_admin · crit. - Ein breiter Portbereich (z. B.
6081-6100) mitunknownwird mindestens auf warn angehoben, weil ein breiter Bereich die Fläche vergrößert. - Bei einem nicht zugeordneten Port wird eine mitgelieferte Dienstbezeichnung zur Anzeige übernommen, das Risiko bleibt jedoch
unknown; fehlt eine Bezeichnung, stellt das FrontendUnknown servicedar.
Bestimmung des verwalteten Status
Die Tabelle der registrierten Dienste ist nach infr_service.instance_id : port indiziert. Besitzt die Instanz auf diesem Port einen registrierten Dienst, gilt die Regel als verwaltet (check-decagram-Markierung, managed_name). Bereichsports werden über ihren Startport (low) zugeordnet. Ohne registrierten Dienst ist die Regel nicht verwaltet — und wenn ihr Risiko nicht ok ist, fließt sie in den KPI Unmanaged exposure ein.
Datenquellen
| Tabelle / Quelle | Rolle | Befüllt durch |
|---|---|---|
infr_instance_firewall |
Regeln zu offenen Ports/Diensten je Instanz (Verzeichnis) | Assets ▸ Instanzen ▸ [fw] — manuelles CRUD / Rohtext-Import von firewall-cmd --list-all / JSON-Import aus scripts/infr_firewall_probe.cjs |
infr_instance |
Host-Metadaten — name · alias · env · criticality · status · ip_public |
Assets ▸ Instanzen |
infr_service |
Registrierte logische Dienste (instance_id · port · name · kind) → Prüfung des verwalteten Status |
Service ▸ Katalog |
App\Support\FirewallLore |
Maßgebliche Einstufung Port → {key,label,category,risk,icon} (sprachunabhängig) | Code |
resources/lang/{ko,en}/fwlore.php |
what/why/best-Erläuterungen je Risikostufe und je Kategorie | Sprachpaket |
Aufbau einer infr_instance_firewall-Regel (UNIQUE instance_id, zone, proto, port):
{
"zone": "public",
"ports": [
{ "port": "22", "proto": "tcp", "service": "ssh" },
{ "port": "443", "proto": "tcp", "service": "https" },
{ "port": "3306", "proto": "tcp", "service": "mysql" },
{ "port": "6081-6100", "proto": "tcp", "service": "" }
]
}
Der [fw]-Importer verarbeitet außerdem den Rohtext von firewall-cmd --list-all (Zonenkopf → Zuordnung von services: → ports: direkt):
public (active)
services: http https ssh
ports: 8080/tcp 6081-6100/tcp 3306/tcp
Das erzeugte Dashboard wird serverseitig 30 Sekunden lang zwischengespeichert (infr:sec:firewall:dashboard). Liegen überhaupt keine Regeln vor, liefert es eine leere Nutzlast (empty=true), die den Einstiegszustand darstellt.
Zugriff
- Ansicht: Das gesamte Präfix
/security/*ist in die Middlewareinfr.level:2eingefasst → nur Staff (5) und höher (internuser_level >= 2). Demo (1) ist von Sicherheitsdaten vollständig ausgeschlossen. - Diese Seite schreibt nichts (reines Lesen). Das Bearbeiten und Importieren von Firewall-Regeln erfolgt unter Assets ▸ Instanzen ▸ [fw] und ist über Stufe ≥ 2 + Audit-Log abgesichert.
- Stufenschema: demo=1 · staff=5 · admin=10 (in einigen Bereichen kommt eine weitere
infr.level:N-Absicherung hinzu). Siehe RBAC-Stufen.
Fehlersuche und FAQ
Ich sehe nur den leeren Bildschirm („Noch keine Firewall-Daten“).
Das bedeutet, dass infr_instance_firewall keine Regeln enthält. Fügen Sie ein Ergebnis von firewall-cmd --list-all in Assets ▸ Instanzen ▸ [fw] zum Import ein oder erfassen Sie offene Ports per Remote-Emulation.
Ein Port wird als Unknown service angezeigt.
Der Port steht nicht im FirewallLore-Katalog (Risiko unknown). Handelt es sich um einen legitimen Dienst, registrieren Sie ihn unter Service ▸ Katalog oder ergänzen Sie eine Bezeichnung in service/note der [fw]-Regel. Wird er nicht benötigt, schließen Sie ihn.
Es ist ein registrierter Dienst, wird aber als unmanaged angezeigt.
Die Prüfung des verwalteten Status setzt einen infr_service auf derselben Instanz und auf diesem Port voraus. Liegt der Dienst auf einem anderen Host oder einem anderen Port, greift die Zuordnung nicht. Bereichsports werden nur über ihren Startport zugeordnet.
Risky exposure ist nicht null, aber Public · crit ist 0.
Das bedeutet, dass alle Hosts mit offenen crit-Ports ausschließlich intern sind (keine ip_public) — ein kleiner Expositionsradius und damit vergleichsweise sicherer. Schränken Sie sie dennoch ein, um Innentäter und laterale Bewegung zu berücksichtigen.
Die Werte sind nicht in Echtzeit. Möglicherweise steht LIVE auf PAUSED oder der Tab läuft im Hintergrund. Das Dashboard wird serverseitig 30 Sekunden zwischengespeichert; bis zu 30 Sekunden nach einer Regeländerung in [fw] sehen Sie daher unter Umständen noch die alten Werte.
Kann ich hier einen Port schließen? Nein. Diese Seite ist eine rein lesende Karte. Die tatsächliche Sperrung erfolgt in der Firewall des Zielhosts, die Aktualisierung des Regelverzeichnisses unter Instanzen ▸ [fw].
Verwandte Themen
- Assets ▸ Instanzen ▸ [fw] — Verzeichnis der Firewall-Regeln · die Schreibseite dieser Karte (erfassen · bearbeiten · importieren)
- Remote-Emulation · offene Ports über die tlx.php-Sonde erfassen
- Service ▸ Katalog · registrierte Dienste (Prüfung des verwalteten Status) · logische Erreichbarkeit
- Assets ▸ Instanzen · Instanz-Metadaten (öffentliche IP · Kritikalität)
- Sicherheit ▸ Übersicht · Einstiegsseite der Sicherheitskonsole (Abwehr-Funnel)
- Verwaltung ▸ Betriebsrichtlinie · verwendet den FirewallLore-Portkatalog für die Auswahl der „überwachten Ports“ erneut
