A idéia de gerenciar nossas iptables
regras com o Puppet foi levantada. Vejo que augeas
tem uma iptables
lente, mas atualmente é experimental.
Alguém tem alguma sugestão de como lidar com isso? Idealmente, eu gostaria de construir as cadeias com base na classe de um servidor.
linux
iptables
configuration
puppet
Belmin Fernandez
fonte
fonte
Respostas:
Aqui está o que estou fazendo com o Red Hat Enterprise (RHEL).
O RHEL tem um
iptables
serviço que carrega regras/etc/sysconfig/iptables
e estou trabalhando para modificar esse arquivo e reiniciar o serviço iptables. Muitas pessoas gostam de colocar fragmentos em um diretório iptables.d e criar um conjunto de regras iptables (via make ou algo parecido) a partir dele. Eu incluo coisas para reconstruir o conjunto de regras padrão, mas isso geralmente nunca faz nada. Se suas necessidades são simples, você pode simplesmente copiar um arquivo iptables para o sistema.Apesar de parecer feio, é bastante testado no RHEL4, RHEL5 e RHEL6.
Eu tive isso antes de o apoio do augeas estar em marionetes. Se eu estivesse escrevendo novamente hoje, examinaria a lente augeas iptables antes de recorrer
exec { "perl ...": }
.Algumas definições globais para editar arquivos no local
Baseado em material originalmente de http://reductivelabs.com/trac/puppet/wiki/SimpleTextRecipes
Minha classe iptables:
Alguns exemplos de uso em outras classes:
fonte
O Puppet Labs tem um exemplo no wiki: Padrões de Iptables do Módulo
Resumindo: você cria fragmentos para cada serviço e os instala invocando o tipo definido ipt_fragment:
Quando um fragmento é instalado (eles estão em /etc/iptables.d/), ele dispara a execução de um script que concatena todos os fragmentos e reinicia o iptables.
fonte
A questão é: o que você pretende realizar?
Colocar o iptables no Puppet é fácil: coloque o script no servidor de fantoches e sirva-o onde for necessário. Se precisar de alguma personalização, torne-o um modelo.
Agora, talvez você queira algo como "Se o host X tiver um servidor da Web, as portas 80 e 443 devem estar abertas". Nesse caso, o que eu sugiro que você faça é compor o script a partir de várias partes do arquivo, usando o módulo Comum
concatenated_file
ouconcatfilepart
(eu prefiro o último, que permite o pedido, mas não está disponível em todos os garfos - aponte para você do camptocamp, que possui).Essas partes do arquivo podem ser facilmente gravadas usando modelos. O truque é que você exporte o
concatfilepart
naApache
classe (possivelmente chamando um define que prepare um comconcatfilepart
base em parâmetros como endereço IP e porta) e naiptables
classe você perceberia todos osconcatfilepart
itens exportados marcadosiptables
ou algo parecido.Se você fizer isso, eu adoraria ver esse módulo no github. Eu nunca consegui escrever um módulo iptables. :-)
fonte