geerlingguy.firewall

Role de Ansible: Firewall (iptables)

CI

Instala un firewall basado en iptables para Linux. Soporta tanto IPv4 (iptables) como IPv6 (ip6tables).

Este firewall busca la simplicidad sobre la complejidad y solo abre unos pocos puertos específicos para el tráfico entrante (configurable a través de variables de Ansible). Si tienes un conocimiento básico de iptables y/o firewalls en general, este rol debería ser un buen punto de partida para un firewall seguro.

Después de ejecutar el rol, un servicio de firewall estará disponible en el servidor. Puedes usar service firewall [start|stop|restart|status] para controlar el firewall.

Requisitos

Ninguno.

Variables del Rol

Las variables disponibles se enumeran a continuación, junto con los valores predeterminados (ver defaults/main.yml):

firewall_state: started
firewall_enabled_at_boot: true

Controla el estado del servicio de firewall; si debe estar en funcionamiento (firewall_state) y/o habilitado al iniciar el sistema (firewall_enabled_at_boot).

firewall_flush_rules_and_chains: true

Si se deben limpiar todas las reglas y cadenas cada vez que se reinicia el firewall. Establece esto en false si hay otros procesos que gestionan iptables (por ejemplo, Docker).

firewall_template: firewall.bash.j2

La plantilla a utilizar al generar las reglas del firewall.

firewall_allowed_tcp_ports:
  - "22"
  - "80"
  ...
firewall_allowed_udp_ports: []

Una lista de puertos TCP o UDP (respectivamente) para abrir al tráfico entrante.

firewall_forwarded_tcp_ports:
  - { src: "22", dest: "2222" }
  - { src: "80", dest: "8080" }
firewall_forwarded_udp_ports: []

Reenvía el puerto src al puerto dest, ya sea TCP o UDP (respectivamente).

firewall_additional_rules: []
firewall_ip6_additional_rules: []

Cualquier regla adicional (personalizada) que se agregue al firewall (en el mismo formato que usarías en la línea de comandos, por ejemplo, iptables [rule]/ip6tables [rule]). Algunos ejemplos de cómo se podría usar:

# Permitir solo la IP 167.89.89.18 acceder al puerto 4949 (Munin).
firewall_additional_rules:
  - "iptables -A INPUT -p tcp --dport 4949 -s 167.89.89.18 -j ACCEPT"

# Permitir solo la IP 214.192.48.21 acceder al puerto 3306 (MySQL).
firewall_additional_rules:
  - "iptables -A INPUT -p tcp --dport 3306 -s 214.192.48.21 -j ACCEPT"

Consulta Iptables Essentials: Common Firewall Rules and Commands para más ejemplos.

firewall_log_dropped_packets: true

Si se deben registrar los paquetes caídos en syslog (los mensajes estarán precedidos por "Dropped by firewall: ").

firewall_disable_firewalld: false
firewall_disable_ufw: false

Establecer en true para desactivar firewalld (instalado por defecto en RHEL/CentOS) o ufw (instalado por defecto en Ubuntu), respectivamente.

firewall_enable_ipv6: true

Establecer en false para desactivar la configuración de ip6tables (por ejemplo, si tu GRUB_CMDLINE_LINUX contiene ipv6.disable=1).

Dependencias

Ninguna.

Ejemplo de Playbook

- hosts: server
  vars_files:
    - vars/main.yml
  roles:
    - { role: geerlingguy.firewall }

Dentro de vars/main.yml:

firewall_allowed_tcp_ports:
  - "22"
  - "25"
  - "80"

Licencia

MIT / BSD

Información del Autor

Este rol fue creado en 2014 por Jeff Geerling, autor de Ansible for DevOps.

Acerca del proyecto

Simple iptables firewall for most Unix-like systems.

Instalar
ansible-galaxy install geerlingguy.firewall
Licencia
mit
Descargas
1.2M
Propietario
Father, author, developer, maker. Sometimes called "an inflammatory enigma". #stl #drupal #ansible #k8s #raspberrypi #crohns