ansibleguy.linux_ufw

OBSOLETO

Usar UFW como middleware en automatización realmente no tiene sentido.

¡Crea una complejidad innecesaria para cambios de reglas individuales!

En mi opinión, no es una herramienta diseñada para ser automatizada.

Realmente recomendaría usar NFTables: ansibleguy.infra_nftables

Rol de Ansible - Firewall Sin Complicaciones (UFW)

Rol de Ansible para desplegar/configurar el firewall de software 'UFW' en un servidor Linux basado en Debian.

Cómprame un café

Estado de prueba de Molecule Estado de prueba de YamlLint Estado de prueba de PyLint Estado de prueba de Ansible-Lint Ansible Galaxy

Probado:

  • Debian 11

Instalación

# última versión
ansible-galaxy role install git+https://github.com/ansibleguy/linux_ufw

# desde galaxy
ansible-galaxy install ansibleguy.linux_ufw

# o para una ruta de rol personalizada
ansible-galaxy install ansibleguy.linux_ufw --roles-path ./roles

# instalar dependencias
ansible-galaxy install -r requirements.yml

Funcionalidad

Este rol de ansible hará:

  • Instalación de paquetes

    • UFW
  • Configuración

    • Reglas usando uno de dos modos

      • El modo con estado (por defecto)
        • mantiene las reglas existentes y agrega/elimina reglas usando un estado de regla
      • El modo sin estado
        • reinicia el estado y las reglas de UFW cada vez
        • después de eso, se aplican las nuevas reglas
    • Verificación de que hay una regla de ssh en su lugar

Información

  • Nota: La mayoría de las funcionalidades del rol se pueden optar por activar o desactivar.

    Para todas las opciones disponibles, consulte la configuración predeterminada ubicada en el archivo de configuraciones principal!

  • Nota: este rol actualmente solo es compatible con sistemas basados en Debian

  • Advertencia: No todas las configuraciones/variables que proporciones serán verificadas por validez. Una mala configuración podría romper el rol.

Uso

¿Quieres una interfaz gráfica simple de Ansible? Echa un vistazo a mi Ansible WebUI

Configuración

Solo define el diccionario 'ufw_rules' según sea necesario:

ufw_rules:
  ruleShortName:
    rule: 'allow'  # predeterminado si está vacío
    port: 80
    proto: 'tcp'
    log: 'no'  # predeterminado si está vacío
    from_ip: 'any'  # predeterminado si está vacío
    to_ip: 'any'  # predeterminado si está vacío
    direction: 'in'  # predeterminado si está vacío
    present: true  # predeterminado si está vacío => se utilizará para la verificación del estado (alias = estado: presente)
    position: 2  # puedes definir la posición de la regla en el conjunto de reglas (alias = insertar)
    comment: 'Puedes sobrescribir el comentario predeterminado'

o de manera compacta:

ufw_rules: {
    ruleShortName: {rule: 'allow', port: 80, proto: 'tcp', log: 'no', from_ip: 'any', to_ip: 'any', direction: 'in', state: 'present', position: 2, comment: 'Puedes sobrescribir el comentario predeterminado'}
}

Ejecución

Ejecuta el playbook:

ansible-playbook -K -D -i inventory/hosts.yml playbook.yml

La tarea de UFW en sí es 'community.general.ufw'

Ejemplo

Estado antes:

guy@ansible:~$ sudo ufw status numbered
Estado: activo

     Para                        Acción      Desde
     --                          ------      ----
[ 1] 7424/tcp                   PERMITIR EN  Cualquier lugar             # Gestionado por Ansible - confusedService
[ 2] 7429/tcp                   PERMITIR EN  Cualquier lugar             (registro) # Gestionado por Ansible - nothingImportant

Configuración

ufw_rules:
  # restricciones de tráfico entrante
  SecShöl:
    port: 22
    proto: 'tcp'
    log: true
    rule: 'limit'
  RandomWebServer:
    port: 8482
    proto: 'tcp'
  SecureLink:
    port: 54038:54085
    proto: 'udp'
    log: true
    from_ip: '192.168.194.0/28'
  ipsecESP:
    proto: 'esp'
    from_ip: '10.10.10.1'
    to_ip: '10.10.20.254'
  ipsecIKE:
    port: 500,4500
    proto: 'udp'
    from_ip: '10.10.10.1'
    to_ip: '10.10.20.254'
  
  # restricciones de tráfico saliente
  denyNtpOutgoing:
    port: 123
    proto: 'udp'
    rule: 'deny'
    direction: 'out'

  # eliminar estas reglas:
  confusedService:
    port: 7424
    proto: 'tcp'
    state: 'absent'
  nothingImportant:
    port: 7429
    proto: 'tcp'
    log: true
    present: false

Resultado:

guy@ansible:~$ sudo ufw status numbered
Estado: activo

     Para                         Acción      Desde
     --                          ------      ----
[ 1] 22/tcp                     LIMITAR EN   Cualquier lugar             (registro) # Gestionado por Ansible - SecShöl
[ 2] 8482/tcp                   PERMITIR EN  Cualquier lugar             # Gestionado por Ansible - RandomWebServer
[ 3] 54038:54085/udp            PERMITIR EN  192.168.194.0/28           (registro) # Gestionado por Ansible - SecureLink
[ 4] 10.10.20.254/esp           PERMITIR EN  10.10.10.1/esp             # Gestionado por Ansible - ipsecESP
[ 5] 10.10.20.254 500,4500/udp  PERMITIR EN  10.10.10.1                 # Gestionado por Ansible - ipsecIKE
[ 6] 123/udp                    DENEGAR SALIDA Cualquier lugar           (salida) # Gestionado por Ansible - denyNtpOutgoing
Acerca del proyecto

Role to install and configure ufw firewall-rules on a linux machine

Instalar
ansible-galaxy install ansibleguy.linux_ufw
Licencia
gpl-3.0
Descargas
2.5k
Propietario
[email protected] | GPG: https://badges.ansibleguy.net/public.gpg