Zum Inhalt springen
SHIELDMYSERVER

Ausgehend begrenzen: die Richtung, an der ein Einbruch auffällt

Warum Egress-Regeln mehr über einen kompromittierten Server verraten als jede Eingangsfilterung und warum Port 25 fast immer gesperrt gehört.

hochDiese Woche. Deutlich erhöhtes Risiko, wenn es liegen bleibt.

veröffentlicht 03.08.2026 · 3 min

Titelbild: Ausgehend begrenzen: die Richtung, an der ein Einbruch auffällt

Eine Firewall, die nur eingehend filtert, sieht nichts von dem, was ein übernommener Server tatsächlich tut. Alle drei typischen Aktivitäten laufen nach draußen: Schadcode nachladen, Spam versenden, Kontakt zum Steuerungsserver halten.

Warum hoch

Egress-Regeln verhindern die Übernahme nicht, sie begrenzen den Schaden danach und machen ihn sichtbar. Für eine Maschine, die man nicht ständig beobachtet, ist das oft der einzige Weg, überhaupt von einem Einbruch zu erfahren, bevor der Anbieter sich meldet.

Warum das die aufschlussreichere Richtung ist#

Links Erwartungen wie Warnmeldung im Panel oder Virenscanner. Rechts die tatsächlichen Signale: ausgehender Verkehr auf Port 25, neue Cronjobs und fremde Schlüssel, nächtliche CPU-Last, Beschwerde des Anbieters.
Ein übernommener Server läuft weiter, er läuft nur zusätzlich für jemand anderen.

Eingehend blockierst du Versuche. Ausgehend blockierst du Erfolge. Der Unterschied zeigt sich an dem Tag, an dem eine Lücke in einer Anwendung ausgenutzt wurde: Eingehend war alles korrekt, der Angriff kam über Port 443 zum Webserver. Was danach passiert, entscheidet die ausgehende Seite.

Eine Positivliste, die im Alltag trägt#

Der Reflex „alles ausgehend erlauben“ hat einen echten Grund: Zu enge Regeln brechen Updates, DNS und Zertifikatsprüfungen. Die Liste unten ist deshalb bewusst kurz und deckt den Normalfall ab.

table inet filter {
    set egress_ports {
        type inet_service
        elements = { 53, 80, 123, 443 }
    }

    chain output {
        type filter hook output priority filter; policy drop;

        ct state established,related accept
        oif "lo" accept

        # DNS, HTTP(S), NTP — mehr braucht ein Webserver im Regelfall nicht.
        tcp dport @egress_ports accept
        udp dport @egress_ports accept

        # Mailversand: explizit sperren und protokollieren.
        tcp dport { 25, 465, 587 } log prefix "SMTP-EGRESS " drop

        ip protocol icmp accept
        ip6 nexthdr icmpv6 accept

        counter comment "verworfen ausgehend"
    }
}
PortWofürOhne die Regel
53DNSnichts löst mehr auf
80HTTP, ACME-PrüfungZertifikatserneuerung schlägt fehl
123NTPUhr läuft weg, TLS-Fehler folgen
443HTTPS, Paketquellen, APIskeine Updates mehr
Erst zählen, dann sperren

Bevor policy drop auf der Output-Chain scharf gestellt wird: eine Woche lang nur zählen und protokollieren, ohne zu verwerfen. Dann steht in den Protokollen, was die Maschine tatsächlich braucht, statt dass es am Sonntagabend auffällt, wenn ein Backup-Ziel auf einem ungewöhnlichen Port hängt.

# Lernmodus: nichts verwerfen, alles mitschreiben
chain output {
    type filter hook output priority filter; policy accept;
    ct state new tcp dport != { 53, 80, 123, 443 } log prefix "EGRESS-NEU " counter
}

Port 25: der eine Fall, der immer gilt#

Wenn dein Server keine Mail direkt zustellt und die meisten tun das nicht, sondern nutzen ein Relay auf Port 587, dann ist jede ausgehende Verbindung auf Port 25 verdächtig. Genau diesen Port braucht ein Spam-Skript.

Die Sperre kostet nichts und ist die zuverlässigste Einzelmaßnahme dagegen, dass die eigene IP-Adresse auf einer Blockliste landet. Steht sie erst einmal dort, dauert das Herauskommen Wochen, Zeit, in der auch legitime Mail nicht ankommt.

Wer wirklich direkt zustellt, macht die Ausnahme für genau einen Dienst:

meta skuid "postfix" tcp dport 25 accept

Auswerten, sonst bringt es nichts#

# Was wollte raus und durfte nicht?
sudo journalctl -k --since "7 days ago" | grep "SMTP-EGRESS" | tail -20

# Welche Prozesse haben offene ausgehende Verbindungen?
sudo ss -tnp state established '( dport != :22 )' | head -30

Die zweite Zeile ist der Befehl, den man kennen sollte. Ein Prozess, den man nicht zuordnen kann und der eine dauerhafte Verbindung nach außen hält, ist der Anfang einer Untersuchung, siehe Einen Einbruch erkennen.

Wo es unbequem wird#

Ehrlich benannt, damit es keine Überraschung gibt:

  • Container bauen ihre eigenen Netze und Regeln. Egress-Filterung für Container braucht eigene Ketten, sonst greift sie nicht. Siehe Docker umgeht deine Firewall.
  • Paketquellen über Spiegelserver nutzen manchmal ungewöhnliche Ports. Einmal prüfen, dann eintragen.
  • Monitoring-Agenten telefonieren nach Hause, oft auf eigenen Ports. Das ist legitim, gehört aber bewusst in die Liste.

Der Aufwand ist real. Er lohnt sich für Maschinen, die Kundendaten halten oder deren Ausfall teuer wäre und die Port-25-Sperre lohnt sich immer.

MRMedia

Geschrieben aus dem laufenden Betrieb: MRMedia betreibt eigene Hosts, Kundendienste und deren Härtung in der EU. Eine veraltete Anleitung ist hier ein Sicherheitsproblem, kein Schönheitsfehler. Korrekturen bitte über Discord.