Cómo configurar un firewall en Centos usando Vagrant y Chef

6

He creado una caja de servidor con Vagrant y Chef y todo está funcionando correctamente. Sin embargo, cuando la caja se instala desde cero, las reglas predeterminadas de iptables están en su lugar, por lo que debo desactivar el firewall para acceder a mi servidor web.

(Esta es una máquina virtual local por cierto, no me importa la seguridad del firewall).

Al iniciar el VM, ssh a él y vaciar las iptables, que funciona bien. Pero lo que preferiría es ejecutar un script de shell cuando se crea la máquina para hacer esto.

Aún mejor, me gustaría configurar los iptables con una receta, pero no veo un libro de recetas compatible.

Gracias

justinhj
fuente

Respuestas:

9

Una forma de establecer las reglas de firewall en CentOS es reemplazar el /etc/sysconfig/iptables enteramente mediante el uso de una plantilla en la receta.

Supongamos que desea ajustar el enrutamiento porque está configurando un libro de cocina del servidor web Apache ("apache2"). Crear el archivo cookbooks/apache2/templates/default/iptables.erb Con el siguiente contenido:

# 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

Asegúrese de tener una línea de retorno después de COMPROMISO.

Luego llame a la plantilla en su receta, y luego reinicie el iptables Servicio.

#
# 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

Cuando corres vagrant up, verá la siguiente salida (extracto).

...
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
...

Los siguientes enlaces me ayudaron a asimilar y finalmente resolver este problema.

FWIW, Opscode parece ser que encontrar los firewalls en CentOS también es un desafío, según su libro de recetas de apache2 README (23 de febrero de 2013):

La forma más fácil, pero ciertamente no ideal, de tratar con IPtables es   Limpia todas las reglas. Opscode proporciona un libro de cocina de iptables pero es   Migración del enfoque utilizado allí a una solución más robusta.   utilizando un LWRP general de "firewall" que tendría un "iptables"   proveedor. Alternativamente, puedes usar ufw, con uscw de Opscode y   Firewall de libros de cocina para configurar reglas. Ver los READMEs de esos libros de cocina para   documentación.

Greg Elin
fuente