Como configurar um firewall no Centos usando o Vagrant e o Chef

6

Eu criei uma caixa de servidor usando Vagrant e Chef e tudo está funcionando corretamente. No entanto, quando a caixa é instalada a partir do zero, as regras padrão do iptables estão em vigor e, portanto, preciso desativar o firewall para acessar meu servidor da web.

(Esta é uma VM local btw, então eu não me importo com a segurança do firewall).

Ao iniciar a VM, eu ssh para ela e libero o iptables, o que funciona bem. Mas o que eu preferiria é executar um script de shell quando a máquina for criada para fazer isso.

Melhor ainda, gostaria de configurar o iptables usando uma receita, mas não vejo um livro de receitas compatível.

Obrigado

    
por justinhj 24.01.2013 / 21:32

1 resposta

9

Uma maneira de definir as regras de firewall no CentOS é substituir o /etc/sysconfig/iptables inteiramente usando um modelo na receita.

Digamos que você queira ajustar o roteamento porque está configurando um livro de receitas do servidor da web Apache ("apache2"). Crie o arquivo cookbooks/apache2/templates/default/iptables.erb com o seguinte conteúdo:

# Firewall configuration created and managed by Chef
# Do not edit manually
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
-A INPUT -m tcp -p tcp --dport 80 -j ACCEPT
-A INPUT -m tcp -p tcp --dport 443 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT

Certifique-se de que uma linha retorne após o COMMIT.

Em seguida, chame o modelo em sua receita e depois reinicie o iptables service.

#
# Load firewall rules we know works
#
template "/etc/sysconfig/iptables" do
  # path "/etc/sysconfig/iptables"
  source "iptables.erb"
  owner "root"
  group "root"
  mode 00600
  # notifies :restart, resources(:service => "iptables")
end

execute "service iptables restart" do
  user "root"
  command "service iptables restart"
end

Quando você executar vagrant up , verá a seguinte saída (trecho).

...
INFO: Processing template[/etc/sysconfig/iptables] action create (bpif_apache2::default line 40)
INFO: template[/etc/sysconfig/iptables] backed up to /var/chef/backup/etc/sysconfig/iptables.chef-20130312055953
INFO: template[/etc/sysconfig/iptables] updated content
INFO: template[/etc/sysconfig/iptables] owner changed to 0
INFO: template[/etc/sysconfig/iptables] group changed to 0
INFO: template[/etc/sysconfig/iptables] mode changed to 600
INFO: Processing execute[service iptables restart] action run (bpif_apache2::default line 49)
INFO: execute[service iptables restart] ran successfully
...

Os links a seguir me ajudaram a melhorar e, finalmente, resolver esse problema.

FWIW, Opscode parece ser também um desafio para os firewalls do CentOS, de acordo com o livro de receitas apache2 README (23 / fev / 2013):

The easiest but certainly not ideal way to deal with IPtables is to flush all rules. Opscode does provide an iptables cookbook but is migrating from the approach used there to a more robust solution utilizing a general "firewall" LWRP that would have an "iptables" provider. Alternately, you can use ufw, with Opscode's ufw and firewall cookbooks to set up rules. See those cookbooks' READMEs for documentation.

    
por 12.03.2013 / 07:19