InfraGuard

Firewall (Angriffsfläche)

Eine Expositionskarte, die die Firewall-Regeln jedes Hosts mit den registrierten Diensten abgleicht und jeden offenen Port nach Risiko einfärbt.

Ü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

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

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 exposure und (sofern es kein registrierter Dienst ist) auch unter Unmanaged exposure auf — 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

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:

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

  1. 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.
  2. 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.
  3. 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.
  4. 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.
  5. 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

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

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

방화벽 — 오픈 포트 노출 지도
방화벽 — 오픈 포트 노출 지도