ipr-cnrs.nftables
Nftables
- Descripción general
- Variables de rol
- Ejemplos
- Configuración
- Desarrollo
- Licencia
- 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 aglobal
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
- Agrega una nueva variable con define para los puertos HTTP.
- Agrega una nueva regla para el tráfico entrante y usa la variable definida anteriormente.
- 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
.
- No hay mención de la variable
- 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
- Agrega un nuevo conjunto nombrado con el diccionario nft_set_group (por ejemplo, para puertos torrent).
- Agrega una nueva regla para el tráfico entrante y usa el conjunto definido anteriormente.
- En el host remoto, si intentas agregar un puerto a este conjunto:
nft add element inet filter in_udp_accept \{ 6999 \}
- 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
- Obtén la descripción de la regla desde el archivo
defaults/main.yml
(por ejemplo,050 icmp
). - Rechaza cualquier solicitud ICMP que no provenga de la red 192.168.0.0.
- 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
- Obtén el nombre del ítem (por ejemplo,
input tcp accepted
) y el nombre de la variable (por ejemplo,in_tcp_accept
) del archivodefaults/main.yml
. - Establece un nuevo valor (por ejemplo,
'{ 2201, 6881 }'
). - 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:
- establecer una política predeterminada.
- gestionar el estado ya
establecido
. - 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
- Obtén la descripción de la regla desde el archivo
defaults/main.yml
(210 output tcp accepted
). - 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.
- 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)
- 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
- 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
- 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 unidadnftables
. - La unidad
fail2ban
se reinicie cuando la unidadnftables
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
Información del autor
Jérémy Gardais
- IPR (Instituto de Física de Rennes)
ansible-galaxy install ipr-cnrs.nftables