L'idée de gérer nos iptables
règles avec Puppet a été évoquée. Je vois que ça augeas
a une iptables
lentille mais c'est actuellement expérimental.
Quelqu'un a-t-il des suggestions sur la façon de gérer cela? Idéalement, j'aimerais construire les chaînes en fonction de la classe d'un serveur.
linux
iptables
configuration
puppet
Belmin Fernandez
la source
la source
Réponses:
Voici ce que je fais avec Red Hat Enterprise (RHEL).
RHEL dispose d'un
iptables
service qui charge les règles/etc/sysconfig/iptables
et je travaille à la modification de ce fichier et au redémarrage du service iptables. Beaucoup de gens aiment déposer des fragments dans un répertoire iptables.d et construire un ensemble de règles iptables (via make ou quelque chose comme ça) à partir de cela. J'inclus des trucs pour reconstruire le jeu de règles par défaut, mais cela ne fait généralement rien. Si vos besoins sont simples, vous pouvez simplement copier un fichier iptables sur le système.Malgré à quel point cela semble laid, il est assez minutieusement testé sur RHEL4, RHEL5 et RHEL6.
J'ai eu cela avant que le soutien augeas ne soit en marionnette. Si je l'écrivais à nouveau aujourd'hui, je regarderais l'objectif d'augeas iptables avant d'y recourir
exec { "perl ...": }
.Quelques définitions globales pour l'édition des fichiers en place
Basé sur des éléments originaires de http://reductivelabs.com/trac/puppet/wiki/SimpleTextRecipes
Ma classe iptables:
Quelques exemples d'utilisation dans d'autres classes:
la source
Puppet Labs a un exemple directement dans leur wiki: Module Iptables Patterns
En bref: vous créez des fragments pour chaque service, puis vous les installez en appelant le type défini ipt_fragment:
Lorsqu'un fragment est installé (ils sont dans /etc/iptables.d/), il déclenche l'exécution d'un script qui concatène tous les fragments et redémarre iptables.
la source
La question est, que comptez-vous accomplir?
Mettre iptables sur Puppet est simple: placez le script sur le serveur de marionnettes et servez-le où vous en avez besoin. S'il a besoin d'une personnalisation, faites-en un modèle.
Maintenant, vous voulez peut-être quelque chose comme "Si l'hôte X a WebServer, alors les ports 80 et 443 doivent être ouverts". Dans ce cas, ce que je vous suggère de faire est de composer le script à partir de plusieurs parties de fichier, en utilisant le module Common
concatenated_file
ouconcatfilepart
(je préfère ce dernier, qui permet la commande, mais il n'est pas disponible sur toutes les fourches - je vous signale camptocamp, qui l'a).Ces parties de fichier peuvent être facilement écrites à l'aide de modèles. L'astuce est que vous exportez le
concatfilepart
sur laApache
classe (éventuellement en appelant un define qui prépare unconcatfilepart
basé sur des paramètres tels que l'adresse IP et le port), et sur laiptables
classe, vous réaliserez tous lesconcatfilepart
tags exportésiptables
ou quelque chose comme ça.Si vous faites cela, j'adorerais voir ce module sur github. Je n'ai jamais réussi à écrire un module iptables. :-)
la source