Die Idee, unsere iptables
Regeln mit Puppet zu verwalten, wurde aufgegriffen. Ich sehe, dass augeas
das eine iptables
Linse hat, aber es ist derzeit experimentell.
Hat jemand Vorschläge, wie man damit umgeht? Idealerweise möchte ich die Ketten basierend auf der Klasse eines Servers erstellen.
linux
iptables
configuration
puppet
Belmin Fernandez
quelle
quelle
Antworten:
Folgendes mache ich mit Red Hat Enterprise (RHEL).
RHEL hat einen
iptables
Dienst, von dem Regeln/etc/sysconfig/iptables
geladen werden, und ich arbeite daran, diese Datei zu ändern und den iptables-Dienst neu zu starten. Viele Leute mögen es, Fragmente in ein iptables.d-Verzeichnis zu legen und daraus einen iptables-Regelsatz (über make oder so ähnlich) zu erstellen. Ich füge Dinge zum Neuerstellen des Standard-Regelsatzes hinzu, aber das macht normalerweise nie etwas. Wenn Ihre Anforderungen einfach sind, können Sie einfach eine iptables-Datei auf das System kopieren.Obwohl dies hässlich erscheint, wurde es auf RHEL4, RHEL5 und RHEL6 ziemlich gründlich getestet.
Ich hatte das vor Augeas Unterstützung in der Marionette. Wenn ich es heute noch einmal schreiben würde, würde ich mir das Augeas Iptables-Objektiv ansehen, bevor ich darauf zurückgreife
exec { "perl ...": }
.Einige globale Definitionen zum Bearbeiten vorhandener Dateien
Basierend auf Dingen, die ursprünglich von http://reductivelabs.com/trac/puppet/wiki/SimpleTextRecipes stammen
Meine iptables Klasse:
Einige Beispiele für die Verwendung in anderen Klassen:
quelle
Puppet Labs hat ein Beispiel direkt in ihrem Wiki: Module Iptables Patterns
Kurz gesagt: Sie erstellen Fragmente für jeden Dienst und installieren sie dann, indem Sie den definierten Typ ipt_fragment aufrufen:
Wenn ein Fragment installiert wird (sie befinden sich in /etc/iptables.d/), wird die Ausführung eines Skripts ausgelöst, das alle Fragmente verkettet und iptables neu startet.
quelle
Die Frage ist, was wollen Sie erreichen?
Das Einfügen von iptables in Puppet ist einfach: Legen Sie das Skript auf den Puppet-Server und stellen Sie es dort bereit, wo Sie es benötigen. Wenn eine Anpassung erforderlich ist, erstellen Sie eine Vorlage.
Vielleicht möchten Sie jetzt etwas wie "Wenn Host X über WebServer verfügt, müssen die Ports 80 und 443 geöffnet sein". In diesem Fall empfehle ich Ihnen, das Skript aus mehreren Dateiteilen mit Common- Modulen
concatenated_file
oderconcatfilepart
(ich bevorzuge letzteres, das die Bestellung ermöglicht, aber es ist nicht auf allen Gabeln verfügbar - ich möchte Sie darauf hinweisen Camptocamp's, das hat es).Diese Dateiteile können einfach mit Vorlagen geschrieben werden. Der Trick besteht darin, dass Sie die für die Klasse exportieren (möglicherweise durch Aufrufen einer Definition, die eine basierend auf Parametern wie IP-Adresse und Port vorbereitet ) und für die Klasse alle exportierten Tags oder ähnliches realisieren.
concatfilepart
Apache
concatfilepart
iptables
concatfilepart
iptables
Wenn Sie das tun, würde ich dieses Modul gerne auf Github sehen. Ich musste nie ein iptables-Modul schreiben. :-)
quelle