Firewalls gehören zu den am kompliziertesten zu konfigurierenden Mechanismen in einem Netzwerk. Auch das Management und das Troubleshooting der Firewalls sind nicht einfach. Jede Aktion hat Auswirkungen auf das gesamte Netzwerk, dessen Sicherheit und alle Prozesse. Eine Firewall definiert die Sicherheit eines Unternehmens auf dem Perimeter-Level. Daher müssen Netzwerkadministratoren in der Lage sein, eine Firewall effizient zu managen, damit die IT-Infrastruktur gegen unautorisierten Zugriff wie auch gegen bösartigen Traffic von Ausserhalb geschützt ist.
Das Problem
Mit der Zeit tauchen vorhersehbare Herausforderungen beim Management von Security Gateways auf. Symptome sind:
- Übermässig grosse und ineffiziente Rulebase.
- Redundante Objekte (Duplikate und Ungenutzte)
- Inkonsistente Namensgebung für Objekte
- Veraltete Regeln und Objekte.
Diese Dinge tauchen in den meisten Umgebungen im Laufe der Zeit auf. Und das Sauberhalten einer Datenbank kann sehr zeitraubend sein.
Best Practices für eine gut designte und gepflegte Rulebase
Nachfolgend finden Sie Best Practices, die sowohl für das Netzwerk wie auch für das Netzwerk-Administrations-Team von Vorteil sind.
Strategische Entscheide
Benutzen Sie:
- Redundanz: Auch wenn Redundanz Zeit in Anspruch nimmt, schützt sie davor, Fehler zu machen und ist während dem Troubleshooting von grosser Hilfe. Das Muster von Wiederholen Sie sich nicht ist optimal für die Interaktion zwischen Maschinen. Sobald aber Menschen ins Spiel kommen, gilt: repetita iuvant.
- Lesbare Felder: Benutzen Sei eine von Menschen lesbare Zahl von Objekten in jedem Feld. Ich persönlich gehe nie über fünf Objekte pro Source/Destination/Service hinaus.
- Standardisierung: Diese einfache Methode schafft einfaches Verständnis und verhindert, dass es Konflikte bei verschiedenen Arbeitsweisen von mehreren Mitarbeitern gibt.
- Selbstdokumentation: Objektnamen beinhalten Informationen, die uns helfen die Funktion des Objekts zu verstehen. Einfachere oder unstrukturierte Namen für Firewalls, Netzwerke, Gruppen, Nodes können Verwirrung stiften und damit zu grossem Zeitverlust führen, wenn es ans Troubleshooting geht. Eine gut durchdachte Namensgebung zielt darauf ab, dass die Objekte auch ohne genaue Untersuchung verständlich sind. Und zwar von jedem – Vom Helpdesk-Angestellten, vom Firewall-Experten oder vom Externen Consultant. Im Idealfall ist sämtliche Funktion des Objekts nur schon bei der Namensbetrachtung klar, ohne auch nur eine Zeile Dokumentation zu lesen.
Vermeiden Sie:
- Group-in-Group: Die Nutzung von verschachtelten Gruppen hat zwar ihre Vorteile, benötigt aber eine gut designte Rulebase und jede Veränderung muss genauestens überprüft werden damit ungewollte Zugriffe verhindert werden können.
- Multi-Firewall-Policies: siehe oben. Meist werden Group-in-Group und Multi-Firewall-Policies gemeinsam verwendet.
- Timed Rules: Jede timed rule muss eine sehr gute Dokumentation haben. Zudem wird der Einfluss der timed rules oft unterschätzt.
Generelle Regeln
Hier ein paar generelle Prinzipien, die bei der Veränderung der Rulebase beachtet werden sollten.
- Die Firewall-Rulebase sollte so einfach wie möglich gehalten werden. Je weniger Rules existieren, desto effizienter ist sie. Zudem wird auch das Risiko für Fehler kleiner.
- Organisieren Sie die Regeln so, dass sie den Dokumentations- und Approval-Prozess reflektieren. Folgen Sie nicht dem Performance-Prinzip. Mit den heutigen Maschinen wird die Performance nur in selten auftretenden Fällen zum Problem.
- Konfigurieren Sie Anti-Spoofing für alle Firewall Interfaces. Anti-Spoofing ist immer noch eine oft unterschätzte letzte Verteidigungslinie.
- Implementieren Sie die Stealth_-Rule um Verbindungsversuche mit dem Firewallmodul zu blockieren und um diese nachzuverfolgen.
- Implementieren Sie die _Cleanup_-Rule am Ende der Rulebase um Traffic zu blockieren und um diesen in Logs festzuhalten. Viele Firewalls zeichnen den Traffic, der mittels
drop
verworfen wurde, nicht auf. Mit der _Cleanup_-Rule wird auch dieser Traffic aufgezeichnet, was eine _Baseline für verworfene Verbindungen zu Troubleshooting-Zwecken erstellt. - Implementieren Sie Clean-Log, damit Sie nicht mit Broadcast Traffic wie
bootp
oder NBT
überflutet werden. Erstellen Sie eine Regel, die solche Packets ohne Log-Eintrag verwirft. - Verwenden Sie keine bi-direktionalen Rules: Wenn eine Verbindung beide Richtungen benötigt, erstellen Sie zwei Regeln.
- Untersuchen Sie, wie eine Applikation arbeitet bevor Sie eine Regel implementieren. Zum Beispiel: snmp und snmp-traps gehen im Normalfall in unterschiedliche Richtungen. Daher ergibt es wenig Sinn, beide in derselben Regel zu haben.
- Benutzen Sie das Domain Object nicht in der Rulebase. Domain Objects können zu Engpässen in der Performance führen und könnten die Traffic Matrix subtil verändern.
- Gruppieren Sie Objekte wenn Abhängigkeiten zwischen einzelnen Komponenten bestehen. (Ein Beispiel für Netzwerk-Objekte: Wenn das selbe Objekt für die Access- und die NAT-Policy verwendet wird)
- Gruppieren Sie Objekte wenn sie mit einer grossen Anzahl Objekten in Source/Destination/Services arbeiten
- Vermeiden Sie Gruppen mit Exceptions. Oft sind diese unnötig. Wenn es keinen anderen Weg gibt, dann erstellen Sie trotzdem eine Regel oder Regeln mit Gruppe mit Exceptions. Tun Sie dies aber wirklich nur als letzten Ausweg.
- Vermeiden sie Negated Objects. Oft sind diese unnötig. Wenn es keinen anderen Weg gibt, dann erstellen Sie trotzdem eine Regel oder Regeln mit Negated Objects. Tun Sie dies aber wirklich nur als letzten Ausweg.
- Verwenden Sie keinesfalls mehrere Negated Objects die gleichzeitig in der Source, der Destination und dem Service aktiv sind.
- Schreiben Sie alle Benennungen in Kleinbuchstaben. Dies betrifft Policynames, Objektnamen, Kommentare und so weiter.
- Verwenden Sie keine Sonderzeichen und Umlaute in Objektnamen, Regelnamen, Kommentare und anderen Teilen der Rulebase.
- Geben Sie
Reject
den Vorzug gegenüber Drop
, wenn es um bestimmte Services geht. Services wie ident
sollten mit Reject
behandelt werden, da so die Performance der Applikation verbessert werden kann.
Pflege der Rulebase
Prüfen Sie Ihre Objectbase regelmässig auf:
- Ungebundene Objekte
- Leere Objekte
- Duplikate von Objekten
- Ungenutzte Objekte
- Ungenutzte Objekte in genutzten Objekten
Prüfen Sie ihre Rulebase regelmässig auf:
- Deaktivierte Regeln
- Versteckte Regeln
- Ungenutzte Regeln
- Nicht-Loggende Regeln
- Regeln ohne Kommentar
Handeln Sie entsprechend. Aber nehmen Sie sich die Zeit, Ihre Handlungen zu analysieren und abzuklären, ob die Änderungen Prozesse beeinflussen werden. Und treten Sie den Prozess, der die Operational und die Organizational Database synchronisiert in die Tonne. Zögern Sie nicht, das zu tun. Abhängigkeiten zwischen dreckigen Objekten kann schnell wachsen und nur schwer zu bereinigen sein.
NAT Regeln
Wie Sie vielleicht bereits bemerkt haben, haben wir die NAT-Regeln übersprungen. In meiner Erfahrung sind diese Regeln an keine Strategie gebunden. Alles, was NAT-Regeln benötigen ist ein wenig Glück. Sie können versuchen, die Regeln in der typischen Art – most-to-less-stringent – zu organisieren, aber seien Sie auf Probleme vorbereitet.
Zusammenfassung
Diese Tipps können Ihnen, abhängig von der Grösse Ihrer Rulebase, entweder helfen oder viel helfen. In jedem Falle ist eine gut durchdachte Strategie Zwang. Denn diese Strategie bildet die Basis, die magischen Werkzeuge rund um das standardisierte Rulebase-Management zu verwenden. Gute Prozesse und die Teilung von Pflichten helfen, Fehler und Verwundbarkeiten zu minimieren. Namenskonventionen schaffen einen unternehmensweiten Standard, der von jedem angewendet und verstanden werden kann. Wenn nur wenige und grundlegende Regeln angewendet werden, wird die Komplexität der Rulebase reduziert. Das spart Zeit und hilft, im Krisenfall konzentriert bei der Arbeit zu bleiben.
Über den Autor
Rocco Gagliardi ist seit den 1980er Jahren im Bereich der Informationstechnologie tätig. In den 1990er Jahren hat er sich ganz der Informationssicherheit verschrieben. Die Schwerpunkte seiner Arbeit liegen im Bereich Security Frameworks, Routing, Firewalling und Log Management.