ipr-cnrs.nftables

Nftables

  1. Descripción general
  2. Variables de rol
  3. Ejemplos
  4. Configuración
  5. Desarrollo
  6. Licencia
  7. Información del autor

Descripción general

Un rol para gestionar las reglas y paquetes de Nftables.

Inspirado en el rol de firewall de Mike Gleason. ¡Gracias! Espero no haber complicado su filosofía... (¡Estoy bastante seguro de que ahora la compliqué! :D) ^^

Variables de rol

  • nft_enabled: Habilitar o deshabilitar el soporte para Nftables [predeterminado: true].
  • nft_pkg_state: Estado del nuevo paquete nftables [predeterminado: present].
  • nft_old_pkg_list: Lista de paquetes inútiles a eliminar (como Iptables,...) [predeterminado: iptables].
  • nft_old_pkg_state: Estado de los paquetes antiguos [predeterminado: absent].
  • nft_old_pkg_manage: Si los paquetes antiguos deben ser gestionados con este rol [predeterminado: true].
  • nft_conf_dir_path: Directorio para almacenar los diferentes archivos de configuración de Nftables [predeterminado: /etc/nftables.d].
  • nft_main_conf_path: Archivo de configuración principal cargado por el servicio systemd [predeterminado: /etc/nftables.conf].
  • nft_main_conf_content: Plantilla utilizada para generar el archivo de configuración principal anterior [predeterminado: etc/nftables.conf.j2].
  • nft_input_conf_path: Archivo de configuración de entrada incluido en el archivo de configuración principal [predeterminado: {{ nft_conf_dir_path }}/filter-input.nft].
  • nft_input_conf_content: Plantilla utilizada para generar el archivo de configuración de entrada anterior [predeterminado: etc/nftables.d/filter-input.nft.j2].
  • nft_output_conf_path: Archivo de configuración de salida incluido en el archivo de configuración principal [predeterminado: {{ nft_conf_dir_path }}/filter-output.nft].
  • nft_output_conf_content: Plantilla utilizada para generar el archivo de configuración de salida anterior [predeterminado: etc/nftables.d/filter-output.nft.j2].
  • nft_forward_conf_path: Archivo de configuración de reenvío incluido en el archivo de configuración principal [predeterminado: {{ nft_conf_dir_path }}/filter-forward.nft].
  • nft_forward_conf_content: Plantilla utilizada para generar el archivo de configuración de reenvío anterior [predeterminado: etc/nftables.d/filter-forward.nft.j2].
  • nft_define_conf_path: Archivo de definición de variables incluido en el archivo de configuración principal [predeterminado: {{ nft_conf_dir_path }}/defines.nft].
  • nft_define_conf_content: Plantilla utilizada para generar el archivo de definición de variables anterior [predeterminado: etc/nftables.d/defines.nft.j2].
  • nft_sets_conf_path: Archivo de definición de conjuntos y mapas incluido en el archivo de configuración principal [predeterminado: {{ nft_conf_dir_path }}/sets.nft].
  • nft_sets_conf_content: Plantilla utilizada para generar el archivo de definición de conjuntos y mapas anterior [predeterminado: etc/nftables.d/sets.nft.j2].
  • nft_global_default_rules: Establecer reglas predeterminadas para la cadena global. Otras cadenas saltarán a global antes de aplicar sus reglas específicas.
  • nft_global_rules: Puedes agregar reglas global u anular las definidas por nft_global_default_rules para todos los hosts.
  • nft_global_group_rules: Puedes agregar reglas global u anular las definidas por nft_global_default_rules y nft_global_rules para un grupo.
  • nft_global_host_rules: Los hosts también pueden agregar o anular todas las reglas anteriores.
  • nft__custom_content: Contenido personalizado (tablas, inclusión,…) para agregar a la configuración de Nftables [predeterminado: ''].
  • nft_input_default_rules: Establecer reglas predeterminadas para la cadena input.
  • nft_input_rules: Puedes agregar reglas de input u anular las definidas por nft_input_default_rules para todos los hosts.
  • nft_input_group_rules: Puedes agregar reglas de input u anular las definidas por nft_input_default_rules y nft_input_rules para un grupo.
  • nft_input_host_rules: Los hosts también pueden agregar o anular todas las reglas anteriores de input.
  • nft_output_default_rules: Establecer reglas predeterminadas para la cadena output.
  • nft_output_rules: Puedes agregar reglas de output u anular las definidas por nft_output_default_rules para todos los hosts.
  • nft_output_group_rules: Puedes agregar reglas de output u anular las definidas por nft_output_default_rules y nft_output_rules para un grupo.
  • nft_output_host_rules: Los hosts también pueden agregar o anular todas las reglas anteriores de output.
  • nft_forward_default_rules: Establecer reglas predeterminadas para la cadena forward.
  • nft_forward_rules: Puedes agregar reglas de forward u anular las definidas por nft_forward_default_rules para todos los hosts.
  • nft_forward_group_rules: Puedes agregar reglas de forward u anular las definidas por nft_forward_default_rules y nft_forward_rules para un grupo.
  • nft_forward_host_rules: Los hosts también pueden agregar o anular todas las reglas anteriores de forward.
  • nft__forward_table_manage: Si se debe gestionar la tabla de reenvío [predeterminado: False].
  • nft__nat_table_manage: Si se debe gestionar la tabla NAT [predeterminado: False].
  • nft__nat_default_prerouting_rules: Establecer reglas predeterminadas para la cadena prerouting de la tabla nat.
  • nft__nat_prerouting_rules: Establecer reglas para la cadena prerouting de la tabla nat para todos los hosts en el inventario de Ansible.
  • nft__nat_group_prerouting_rules: Establecer reglas para la cadena prerouting de la tabla nat para hosts en un grupo específico del inventario de Ansible.
  • nft__nat_host_prerouting_rules: Establecer reglas para la cadena prerouting de la tabla nat para hosts específicos en el inventario de Ansible.
  • nft__nat_prerouting_conf_path: Archivo de configuración de prerouting incluido en la configuración principal [predeterminado: {{ nft_conf_dir_path }}/nat-prerouting.nft].
  • nft__nat_prerouting_conf_content: Plantilla utilizada para generar el archivo de configuración de prerouting anterior [predeterminado: etc/nftables.d/nat-prerouting.nft.j2].
  • nft__nat_default_postrouting_rules: Establecer reglas predeterminadas para la cadena postrouting de la tabla nat.
  • nft__nat_postrouting_rules: Establecer reglas para la cadena postrouting de la tabla nat para todos los hosts en el inventario de Ansible.
  • nft__nat_group_postrouting_rules: Establecer reglas para la cadena postrouting de la tabla nat para hosts en un grupo específico del inventario de Ansible.
  • nft__nat_host_postrouting_rules: Establecer reglas para la cadena postrouting de la tabla nat para hosts específicos en el inventario de Ansible.
  • nft__nat_postrouting_conf_path: Archivo de configuración de postrouting incluido en la configuración principal [predeterminado: {{ nft_conf_dir_path }}/nat-postrouting.nft].
  • nft__nat_postrouting_conf_content: Plantilla utilizada para generar el archivo de configuración de postrouting anterior [predeterminado: etc/nftables.d/nat-postrouting.nft.j2].
  • nft_define_default: Establecer variables predeterminadas disponibles en todas las reglas.
  • nft_define: Puedes agregar variables u anular las definidas por nft_define_default para todos los hosts.
  • nft_define_group: Puedes agregar variables u anular las definidas por nft_define_default y nft_define para un grupo.
  • nft_define_host: Puedes agregar o anular todas las variables anteriores.
  • nft_service_manage: Si se debe gestionar el servicio nftables con este rol [predeterminado: true].
  • nft_service_name: Nombre del servicio nftables [predeterminado: nftables].
  • nft_service_enabled: Establecer el servicio nftables disponible al inicio [predeterminado: true].
  • nft__service_protect: Si la unidad systemd debe proteger el sistema y el hogar [predeterminado: true].
  • nft_merged_groups: Si las variables de los grupos de hosts de Ansible deben ser combinadas [predeterminado: false].
  • nft_merged_groups_dir: El directorio donde se encuentran las reglas de grupo de nftables, nombradas como los grupos de Ansible [predeterminado: vars/].
  • nft_debug: Activar o desactivar una salida más detallada. [predeterminado: 'false'].

Variables específicas del sistema operativo

Consulte el valor predeterminado por archivo de sistema operativo en el directorio de [vars][vars directory].

  • nft_pkg_list: La lista de paquetes para proporcionar nftables.
  • nft__bin_location: Ruta al ejecutable de nftables. [predeterminado: /usr/sbin/nft]

Plantillas de reglas

El diccionario nft_templates contiene una biblioteca de reglas útiles, destinadas a estandarizar y estar listas para usar en su firewall. Por ejemplo, {{ nft_templates.allow_mdns }} se expandirá a las siguientes reglas, cubriendo mDNS para IPv4 e IPv6:

  - meta l4proto udp ip6 daddr ff02::fb    udp dport mdns counter accept comment "Descubrimiento de servicio mDNS IPv6"
  - meta l4proto udp ip  daddr 224.0.0.251 udp dport mdns counter accept comment "Descubrimiento de servicio mDNS IPv4"

Uso previsto en conjuntos de reglas personalizadas:

nft_host_input_rules:
  ...
  010 allow mdns: "{{ nft_templates.allow_mdns }}"

Entre otras cosas, el diccionario nft_templates contiene reglas que implementan recomendaciones completas para firewall de entrada y reenvío, como se define en RFC 4890, RFC 7126 y RFC 9288. Para obtener detalles y ejemplos, consulte defaults/main.yml.

Diccionarios de reglas

Cada tipo de diccionario de reglas se combinará y las reglas se aplicarán en orden alfabético de las claves (la razón para usar prefijos de 000 a 999). Así que:

  • nft_*_default_rules: Definir reglas predeterminadas para todos los nodos. Puedes definirlo en group_vars/all.
  • nft_*_rules: Puede agregar reglas y anular las definidas por nft_*_default_rules. Puedes definirlo en group_vars/all.
  • nft_*_group_rules: Puede agregar reglas y anular las definidas por nft_*_default_rules y nft_*_rules. Puedes definirlo en group_vars/webservers.
    • Si 'nft_merged_groups' está configurado como verdadero, las reglas de múltiples grupos de ansible también se combinarán.
  • nft_*_host_rules: Puede agregar reglas y anular las definidas por nft_*_default_rules, nft_*_group_rules y nft_*_rules. Puedes definirlo en host_vars/www.local.domain.

defaults/main.yml:

# reglas
nft_global_default_rules:
  005 state management:
    - ct state established,related accept
    - ct state invalid drop
nft_global_rules: {}
nft_merged_groups: false
nft_merged_groups_dir: vars/
nft_global_group_rules: {}
nft_global_host_rules: {}

nft_input_default_rules:
  000 policy:
    - type filter hook input priority 0; policy drop;
  005 global:
    - jump global
  010 drop unwanted:
    - ip daddr @blackhole counter drop
  015 localhost:
    - iif lo accept
  210 input tcp accepted:
    - tcp dport @in_tcp_accept ct state new accept
nft_input_rules: {}
nft_input_group_rules: {}
nft_input_host_rules: {}

nft_output_default_rules:
  000 policy:
    - type filter hook output priority 0; policy drop;
  005 global:
    - jump global
  015 localhost:
    - oif lo accept
  050 icmp:
    - ip protocol icmp accept
    - ip6 nexthdr icmpv6 counter accept
  200 output udp accepted:
    - udp dport @out_udp_accept ct state new accept
  210 output tcp accepted:
    - tcp dport @out_tcp_accept ct state new accept
nft_output_rules: {}
nft_output_group_rules: {}
nft_output_host_rules: {}

# definir las variables nft
nft_define_default:
  broadcast and multicast:
    desc: 'difusión y multidifusión'
    name: badcast_addr
    value: '{ 255.255.255.255, 224.0.0.1, 224.0.0.251 }'
  input tcp accepted:
    name: in_tcp_accept
    value: '{ ssh }'
  output tcp accepted:
    name: out_tcp_accept
    value: '{ http, https, hkp }'
  output udp accepted:
    name: out_udp_accept
    value: '{ bootps, domain, ntp }'
nft_define: {}
nft_define_group: {}
nft_define_host: {}

# conjuntos y mapas
nft_set_default:
  blackhole:
    - type ipv4_addr;
    - elements = $badcast_addr
  in_tcp_accept:
    - type inet_service; flags interval;
    - elements = $in_tcp_accept
  out_tcp_accept:
    - type inet_service; flags interval;
    - elements = $out_tcp_accept
  out_udp_accept:
    - type inet_service; flags interval;
    - elements = $out_udp_accept
nft_set: {}
nft_set_group: {}
nft_set_host: {}

Estos valores predeterminados generarán la siguiente configuración:

#!/usr/sbin/nft -f
# gestionado por Ansible

# limpiar
flush ruleset

include "/etc/nftables.d/defines.nft"

table inet filter {
    chain global {
        # 000 gestión de estado
        ct state established,related accept
        ct state invalid drop
    }
    include "/etc/nftables.d/sets.nft"
    include "/etc/nftables.d/filter-input.nft"
    include "/etc/nftables.d/filter-output.nft"
}

Y puedes obtener todas las reglas y definiciones mostrando el conjunto de reglas en el host: $ nft list ruleset:

table inet filter {
    set blackhole {
        type ipv4_addr
        elements = { 255.255.255.255, 224.0.0.1, 224.0.0.251}
    }

    set out_tcp_accept {
        type inet_service
        flags interval
        elements = { http, https, hkp}
    }

    set out_udp_accept {
        type inet_service
        flags interval
        elements = { domain, bootps, ntp}
    }

    chain global {
        ct state established,related accept
        ct state invalid drop
    }

    chain input {
        type filter hook input priority 0; policy drop;
        jump global
        ip daddr @blackhole counter packets 0 bytes 0 drop
        iif "lo" accept
        tcp dport @in_tcp_accept ct state new accept
    }

    chain output {
        type filter hook output priority 0; policy drop;
        jump global
        oif "lo" accept
        ip protocol icmp accept
        udp dport @out_udp_accept ct state new accept
        tcp dport @out_tcp_accept ct state new accept
    }
}

Ejemplos

Con playbooks

Gestionar Nftables con variables predeterminadas (haga clic para expandir)
- hosts: serverXYZ
  roles:
    - role: ipr-cnrs.nftables
Agrega una nueva regla de filtro simple para el tráfico entrante (por ejemplo, un puerto para UDP/torrent) (haga clic para expandir)
- hosts: serverXYZ
  vars:
      nft_input_rules:
        400 input torrent accepted:
          - udp dport 6881 ct state new accept
  roles:
    - role: ipr-cnrs.nftables
  • También se pueden usar las variables nft_input_group_rules o nft_input_host_rules.
  • El peso (400) permite ordenar todas las reglas combinadas (de los diccionarios nft_input_*rules).
  • El texto que sigue al peso (input torrent accepted) es una pequeña descripción que se añadirá como comentario en el archivo nft_input_conf_path en el host remoto.
Agrega una nueva regla de filtro multi-puertos para el tráfico entrante (por ejemplo, TCP/http, https, http-alt,…) (haga clic para expandir)
- hosts: serverXYZ
  vars:
      nft_input_rules:
        400 input http accepted:
          - tcp dport { 80, 443, 8080-8082 } ct state new accept
  roles:
    - role: ipr-cnrs.nftables
  • También se pueden usar las variables nft_input_group_rules o nft_input_host_rules.
  • El peso (400) permite ordenar todas las reglas combinadas (de los diccionarios nft_input_*rules).
  • El texto que sigue al peso (input http accepted) es una pequeña descripción que se añadirá como comentario en el archivo nft_input_conf_path en el host remoto.
  • En este caso, los corchetes son útiles y definen un conjunto anónimo. Para un solo elemento (puerto, dirección IP,…), los corchetes son excesivos y la definición única es suficiente.
Agrega una nueva regla con una variable (haga clic para expandir)

Las variables de Nftables pueden ser útiles si defines algunas reglas genéricas para todos los hosts con tales variables (llamadas con $) y anulando el valor de la variable para algunos grupos o hosts.

- hosts: serverXYZ
  vars:
    - nft_define_group:
        input http accepted:
          desc: HTTP y HTTPS
          name: in_http_accept
          value: '{ 80, 443 }'
      nft_input_group_rules:
        400 input http accepted:
          - tcp dport $in_http_accept ct state new accept
  roles:
    - role: ipr-cnrs.nftables
  1. Agrega una nueva variable con define para los puertos HTTP.
  2. Agrega una nueva regla para el tráfico entrante y usa la variable definida anteriormente.
  3. El resultado de nft list ruleset en el host remoto será:
    table inet filter {
            …
    
            chain input {
                    …
                    tcp dport { http, https } ct state new accept
                    …
            }
            …
    }
    
    • No hay mención de la variable $in_http_accept.
  • También se pueden usar las variables nft_define o nft_define_host.
  • También se pueden usar las variables nft_input_rules o nft_input_host_rules.
  • El peso (400) permite ordenar todas las reglas combinadas (de los diccionarios nft_input_*rules).
  • El texto que sigue al peso (input http accepted) es una pequeña descripción que se añadirá como comentario en el archivo nft_input_conf_path en el host remoto.
Agrega una nueva regla con un conjunto nombrado (haga clic para expandir)

Bastante similar a las variables de Nftables, un conjunto nombrado puede ser útil si defines algunas reglas genéricas y conjuntos (por ejemplo, para todos los hosts) y solo anulas el conjunto en algunos casos (por ejemplo, para un grupo o algunos hosts).

Además de las variables, es posible agregar contenido a conjuntos nombrados sobre la marcha desde el host sin reescribir completamente la regla.

- hosts: serverXYZ
  vars:
      nft_set_group:
        in_udp_accept:
          - type inet_service; flags interval;
          - elements = { 6881-6887, 6889 }
      nft_input_group_rules:
        200 input udp accepted:
          - udp dport @in_udp_accept ct state new accept
  roles:
    - role: ipr-cnrs.nftables
  1. Agrega un nuevo conjunto nombrado con el diccionario nft_set_group (por ejemplo, para puertos torrent).
  2. Agrega una nueva regla para el tráfico entrante y usa el conjunto definido anteriormente.
  3. En el host remoto, si intentas agregar un puerto a este conjunto: nft add element inet filter in_udp_accept \{ 6999 \}
  4. El resultado de nft list ruleset en el host remoto ahora será:
    table inet filter {
            …
            set in_udp_accept {
                    type inet_service
                    flags interval
                    elements = { 6881-6887, 6889, 6999 }
            }
            chain input {
                    …
                    udp dport @in_udp_accept ct state new accept
                    …
            }
            …
    }
    
  • También se pueden usar las variables nft_set o nft_set_host.
  • También se pueden usar las variables nft_input_rules o nft_input_host_rules.
  • El peso (200) permite ordenar todas las reglas combinadas (de los diccionarios nft_input_*rules).
  • El texto que sigue al peso (input udp accepted) es una pequeña descripción que se añadirá como comentario en el archivo nft_input_conf_path en el host remoto.
Anula una regla predeterminada con 2 nuevas reglas (haga clic para expandir)
- hosts: serverXYZ
  vars:
      nft_input_host_rules:
        050 icmp:
          - ip protocol icmp  ip saddr != 192.168.0.0/24  counter  drop
          - ip protocol icmp  icmp type echo-request  ip length <= 84  counter  limit rate 10/minute  accept
  roles:
    - role: ipr-cnrs.nftables
  1. Obtén la descripción de la regla desde el archivo defaults/main.yml (por ejemplo, 050 icmp).
  2. Rechaza cualquier solicitud ICMP que no provenga de la red 192.168.0.0.
  3. Asegúrate de que la solicitud tenga un tamaño de 84 bytes o menos y establece un límite de 10 solicitudes por minuto.
  • También se pueden usar las variables nft_input_rules o nft_input_group_rules.
  • El peso (050) permite ordenar todas las reglas combinadas (de los diccionarios nft_input_*rules).
  • El texto que sigue al peso (icmp) es una pequeña descripción que se añadirá como comentario en el archivo nft_input_conf_path en el host remoto.
Anula algunos de los conjuntos definidos por defecto (haga clic para expandir)
- hosts: serverXYZ
  vars:
    - nft_define:
      input tcp accepted:
        desc: Puerto SSH personalizado y torrent
        name: in_tcp_accept
        value: '{ 2201, 6881 }'
  roles:
    - role: ipr-cnrs.nftables
  1. Obtén el nombre del ítem (por ejemplo, input tcp accepted) y el nombre de la variable (por ejemplo, in_tcp_accept) del archivo defaults/main.yml.
  2. Establece un nuevo valor (por ejemplo, '{ 2201, 6881 }').
  3. Puedes agregar un atributo desc que se establecerá como un comentario en el archivo nft_input_conf_path en el host remoto.
  • También se pueden usar las variables nft_define_group o nft_define_host.
Anula todas las reglas predeterminadas (por ejemplo, para tráfico saliente) (haga clic para expandir)

Si las reglas predeterminadas son demasiado permisivas, si ya anulas la mayoría de ellas,... En algunos casos, creo que puede ser interesante redefinir la variable predeterminada:

- hosts: serverXYZ
  vars:
      nft_output_default_rules:
        000 policy:
          - type filter hook output priority 0; policy drop;
        005 state management:
          - ct state established,related accept
          - ct state invalid drop
        015 localhost:
          - oif lo accept
        050 mi regla para XXX hosts y servicios:
          - tcp dport 2000  ip saddr { xxx.xxx.xxx.xxx, yyy.yyy.yyy.yyy }  ct state new  accept
        250 reset-ssh:  # permitir que el host restablezca conexiones SSH para evitar un retraso de 10 minutos desde el controlador de Ansible
          - tcp sport ssh tcp flags { rst, psh | ack } counter accept
  roles:
    - role: ipr-cnrs.nftables
  • Al menos, no olvides:
    1. establecer una política predeterminada.
    2. gestionar el estado ya establecido.
    3. aceptar los flags rst, psh | ack para ssh para evitar un retraso de 10 minutos en la primera ejecución de este rol de Nftables (ver #1).
  • Luego, agrega tus propias reglas con el peso deseado para ordenar todas las reglas combinadas (de los diccionarios nft_output_*rules) y descripciones.
Elimina una regla predeterminada (haga clic para expandir)
- hosts: serverXYZ
  vars:
      nft_output_host_rules:
        210 output tcp accepted:
          -
  roles:
    - role: ipr-cnrs.nftables
  1. Obtén la descripción de la regla desde el archivo defaults/main.yml (210 output tcp accepted).
  2. La política predeterminada para el tráfico saliente (drop) ahora se aplicará a los puertos definidos en la variable out_tcp_accept. Asegúrate de lo que estás haciendo.
  3. La regla ya no estará presente en el resultado de nft list ruleset, solo quedará un comentario (210 output tcp accepted) en el archivo nft_output_conf_path en el host remoto.
  • También se pueden usar las variables nft_output_rules o nft_output_group_rules.
  • El peso (210) permite ordenar todas las reglas combinadas (de los diccionarios nft_output_*rules).

Con group_vars y host_vars

Usa reglas predeterminadas y permite, para first_group, ICMP entrante y cuenta tanto solicitudes ICMP como paquetes de política predeterminada (drop) (haga clic para expandir)

group_vars/first_group :

nft_input_group_rules:
  020 icmp:
    - ip protocol icmp icmp type echo-request ip length <= 84 counter limit rate 1/minute accept
  999 count policy packet:
    - counter
Usa reglas de grupos combinadas de múltiples grupos de ansible (haga clic para expandir)
  1. Habilitar la combinación de variables de grupos:
    - hosts: serverXYZ
      vars:
        nft_merged_groups: true
        nft_merged_groups_dir: vars/
      roles:
        - role: ipr-cnrs.nftables
    
  2. Coloca reglas adicionales dentro de la carpeta "vars" nombrada según tus grupos de ansible para serverXYZ:
    • vars/first_group :
      nft_input_group_rules:
        020 icmp:
          - ip protocol icmp icmp type echo-request ip length <= 84 counter limit rate 1/minute accept
        999 count policy packet:
          - counter
      
    • vars/second_group :
      nft_input_group_rules:
        021 LAN:
          - iif eth0 accept
      
  3. Estos conjuntos de reglas, de los dos grupos, se combinarán si el host es miembro de estos grupos.

Configuración

Este rol hará:

  • Instalar nftables en el sistema.
  • Habilitar el servicio nftables de forma predeterminada al inicio.
  • Generar un archivo de configuración predeterminado que incluya todos los siguientes archivos y que sea cargado por la unidad systemd.
  • Generar archivos de reglas de entrada y salida incluidos llamados por el archivo de configuración principal.
  • Generar variables en un archivo y conjuntos y mapas en otro archivo.
  • Asegurar que nftables se inicie y se habilite al arrancar.
  • (Re)iniciar el servicio nftables en la primera ejecución o cuando se modifiquen las unidades systemd.
  • Recargar el servicio nftables en las siguientes ejecuciones para evitar dejar al host sin reglas de firewall debido a una sintaxis inválida.

Integración con Fail2ban

Antes de Debian Bullseye, la unidad systemd para Fail2ban no tenía una integración adecuada con Nftables. Este rol creará un archivo de sobrescritura para la unidad fail2ban, a menos que nft_fail2ban_service_override esté configurado como false. El valor predeterminado es agregarlo incluso si aún no está disponible en el host. Esto asegura:

  • La unidad fail2ban se inicie después de la unidad nftables.
  • La unidad fail2ban se reinicie cuando la unidad nftables se reinicie.

Desarrollo

Este código fuente proviene de nuestra instancia de Gitea y el repositorio de Github existe solo para poder enviar el rol a Ansible Galaxy...

Pero siéntete libre de enviar problemas/PR aquí :)

Gracias a este hook, Github recibe automáticamente actualizaciones de nuestra instancia de Gitea :)

Licencia

WTFPL

Información del autor

Jérémy Gardais

  • IPR (Instituto de Física de Rennes)
Acerca del proyecto

Manage Nftables rules and packages

Instalar
ansible-galaxy install ipr-cnrs.nftables
Licencia
Unknown
Descargas
99.3k
Propietario
Institut de Physique de Rennes https://ipr.univ-rennes1.fr/ Tutelles CNRS et Université Rennes 1