Setup módulo puppetlabs-firewall

1

Alguém tem experiência em configurar o módulo puppetlabs-firewall no Ubuntu 12.04?

A documentação do link afirma:

At the moment you need to provide some setup outside of what we provide in the module to support proper ordering, purging and firewall peristence.

So It is recommended that you provide the following in top scope somewhere (such as your site.pp):

# Always persist firewall rules
exec { 'persist-firewall':
  command     => $operatingsystem ? {
    'debian'          => '/sbin/iptables-save > /etc/iptables/rules.v4',
    /(RedHat|CentOS)/ => '/sbin/iptables-save > /etc/sysconfig/iptables',
  },
  refreshonly => true,
}
# These defaults ensure that the persistence command is executed after 
# every change to the firewall, and that pre & post classes are run in the
# right order to avoid potentially locking you out of your box during the
# first puppet run.
Firewall {
  notify  => Exec['persist-firewall'],
  before  => Class['my_fw::post'],
  require => Class['my_fw::pre'],
}
Firewallchain {
  notify  => Exec['persist-firewall'],
}

# Purge unmanaged firewall resources
#
# This will clear any existing rules, and make sure that only rules
# defined in puppet exist on the machine
resources { "firewall":
  purge => true
}

Estou com dificuldades em entender o que é e como funciona. Quando estou colocando isso no escopo superior, ele bloqueia todos os meus hosts de marionetes. E eu não quero aplicar regras de firewall com este módulo a todos os meus hosts de marionetes, mas apenas um subconjunto para fins de teste. Desde que eu estou usando shorewall para a maioria dos meus hosts e apenas tentando controlar também o firewall por fantoche em vez de distribuir arquivos de configuração shorewall. Alguém tem uma configuração de trabalho no Ubuntu onde eu posso atribuir um firewall para hosts específicos com duplicação mínima na configuração? Um exemplo realmente me ajudaria.

    
por Vincent 14.01.2013 / 01:18

1 resposta

0

Para entender completamente como o trabalho do módulo está no $module_path/firewall/lib/puppet/{type|proider}/* Está tudo escrito em Ruby. Mesmo que você não conheça a linguagem, é bastante simples interpretar.

Como mencionado no comentário, o código adicional no seu manifesto é uma solução para que o módulo funcione corretamente. Eu acho que eles tiveram algum problema para implementar todo o código diretamente no tipo / provedor via ruby. Faz sentido usar a funcionalidade iptables-save padrão, porque é muito mais fácil recarregar a configuração do firewall após a reinicialização e funciona para a maioria das distribuições populares do Linux.

Mesmo se você copiar / colar esse código, ele não deverá afetar sua configuração atual, desde que você não use o tipo de recurso no padrão do nó ou na configuração do nó. Para fins de teste, inclua este código diretamente no nó de teste. Deve produzir o mesmo resultado. Acima, é um exemplo:

    Firewall {
      notify => Exec["persist-firewall"],
      before  => Class['my_fw::post'],
      require => Class['my_fw::pre'],
    }

    Firewallchain {
      notify  => Exec['persist-firewall'],
    }

    resources { "firewall":
      purge => true
    }

    firewall { '100 ssh 22':
      port => '22',
      proto => 'tcp',
      action => 'accept',
    }

    firewall { '100 www 80':
      port => '80',
      proto => 'tcp',
      action => 'accept',
    }

    firewall { '100 sql 5436':
      port => '5436',
      proto => 'tcp',
      action => 'accept',
    }

    firewall { '100 sql 5438':
      port => '5438',
      proto => 'tcp',
      action => 'accept',
    }

    firewall { '100 sql 5440':
      port => '5440',
      proto => 'tcp',
      action => 'accept',
    }

    exec { "persist-firewall":
      command => $operatingsystem ? {
        "debian" => "/sbin/iptables-save > /etc/iptables/rules.v4",
        /(RedHat|CentOS)/ => "/sbin/iptables-save > /etc/sysconfig/iptables",
      },
      refreshonly => 'true',
    }

Neste exemplo, estou permitindo 22, 80. 5436, 5438 conexão TCP INCOMING.

    
por 14.01.2013 / 03:08