Die Umgebung, in der ich tätig bin, ist ein umfangreicher Webhosting-Vorgang (mehrere hundert verwaltete Server, fast alle öffentlichen Adressen usw. - alles, was über das Verwalten von ADSL-Links spricht, funktioniert wahrscheinlich nicht gut). Wir suchen nach einer Lösung, mit der Sie sowohl den zentralen Regelsatz (derzeit ca. 12.000 Einträge in iptables) als auch die hostbasierten Regelsätze, die wir für Kunden verwalten, komfortabel verwalten können. Unser zentraler Router-Regelsatz ändert sich einige Male am Tag, und die hostbasierten Regelsätze ändern sich möglicherweise 50 Mal im Monat (auf allen Servern, also möglicherweise eine Änderung pro fünf Server pro Monat).
Wir verwenden derzeit Filtergen (das sind Bälle im Allgemeinen und Super-Bälle in unserem Maßstab) und ich habe in der Vergangenheit bei anderen Jobs Shorewall verwendet (was Filtergen vorzuziehen wäre, aber ich denke, es muss sein etwas da draußen, das besser ist).
Die "Musts", die wir uns für jedes Ersatzsystem ausgedacht haben, sind:
- Muss ziemlich schnell einen Regelsatz generieren (ein Filter-Lauf in unserem Regelsatz dauert 15-20 Minuten; das ist einfach verrückt) - das hängt mit dem nächsten Punkt zusammen:
- Es muss eine Iptables-Restore-Stildatei generiert und diese in einem Treffer geladen werden, und nicht für jede Regeleinfügung muss Iptables aufgerufen werden
- Die Firewall darf nicht über einen längeren Zeitraum heruntergefahren werden, während der Regelsatz neu geladen wird (dies ist wiederum eine Konsequenz aus dem obigen Punkt).
- Muss IPv6 unterstützen (wir stellen nichts Neues bereit, das nicht IPv6-kompatibel ist)
- Muss DFSG-frei sein
- Muss Nur-Text-Konfigurationsdateien verwenden (da wir alles über die Revisionskontrolle ausführen und die Verwendung von Standard-Unix-Tools zur Textbearbeitung unsere SOP sind)
- Muss sowohl RedHat als auch Debian unterstützen (bevorzugt verpackt, aber zumindest nicht offen gegen die Standards der beiden Distributionen sein)
- Muss die Möglichkeit unterstützen, beliebige iptables-Befehle auszuführen, um Funktionen zu unterstützen, die nicht Teil der "Muttersprache" des Systems sind.
Alles, was diese Kriterien nicht erfüllt, wird nicht berücksichtigt. Folgendes sind unsere "nice to haves":
- Sollte die Konfigurationsdatei "Fragmente" unterstützen (das heißt, Sie können einen Stapel von Dateien in ein Verzeichnis ablegen und der Firewall sagen, "alles in diesem Verzeichnis in den Regelsatz aufnehmen"; wir verwenden das Konfigurationsmanagement ausgiebig und möchten diese Funktion nutzen, um dienstspezifische Regeln automatisch bereitstellen)
- Sollte rohe Tabellen unterstützen
- Ermöglicht die Angabe eines bestimmten ICMP sowohl in eingehenden Paketen als auch in REJECT-Regeln
- Sollte Hostnamen, die sich zu mehr als einer IP-Adresse auflösen, mit Würde unterstützen (wir wurden von dieser ein paar Mal mit filtergen erwischt; es ist ein ziemlich königlicher Schmerz im Hintern)
- Je mehr optionale / seltsame iptables-Funktionen das Tool unterstützt (entweder nativ oder über vorhandene oder einfach zu beschreibende Plugins), desto besser. Wir verwenden ab und zu seltsame Funktionen von iptables, und je mehr davon "nur funktionieren", desto besser für alle.