ansibleguy.linux_ufw

DÉPRÉCIÉ

Utiliser UFW comme intermédiaire dans l'automatisation n'a pas de véritable sens.

Cela crée une complexité inutile pour des changements de règle simples !

À mes yeux, ce n'est pas un outil conçu pour être automatisé.

Je recommanderais réellement d'utiliser NFTables : ansibleguy.infra_nftables

Rôle Ansible - Pare-feu Simplifié (UFW)

Rôle Ansible pour déployer/configurer le pare-feu logiciel 'UFW' sur un serveur Linux basé sur Debian.

Offrez-moi un café

Testé :

  • Debian 11

Installation

# dernière version
ansible-galaxy role install git+https://github.com/ansibleguy/linux_ufw

# depuis galaxy
ansible-galaxy install ansibleguy.linux_ufw

# ou vers un chemin de rôle personnalisé
ansible-galaxy install ansibleguy.linux_ufw --roles-path ./roles

# installer les dépendances
ansible-galaxy install -r requirements.yml

Fonctionnalités

Ce rôle Ansible fera :

  • Installation de package

    • UFW
  • Configuration

    • Règles en utilisant l'un des deux modes

      • La méthode état (par défaut)
        • garde les règles existantes et ajoute/supprime des règles en utilisant un état de règle
      • La méthode stateless
        • remet à zéro l'état et les règles de ufw à chaque fois
        • après cela, les nouvelles règles sont appliquées
    • Vérification qu'une règle SSH est en place

Informations

Utilisation

Vous voulez une interface simple Ansible ? Découvrez ma WebUI Ansible

Configuration

Définissez simplement le dictionnaire 'ufw_rules' selon vos besoins :

ufw_rules:
  ruleShortName:
    rule: 'allow'  # par défaut si vide
    port: 80
    proto: 'tcp'
    log: 'no'  # par défaut si vide
    from_ip: 'any'  # par défaut si vide
    to_ip: 'any'  # par défaut si vide
    direction: 'in'  # par défaut si vide
    present: true  # par défaut si vide => utilisé pour vérifier l'état de la règle (alias = état : présent)
    position: 2  # vous pouvez définir la position de la règle dans l'ensemble de règles (alias = insérer)
    comment: 'Vous pouvez remplacer le commentaire par défaut'

ou de manière compacte :

ufw_rules: {
    ruleShortName: {rule: 'allow',  port: 80, proto: 'tcp', log: 'no', from_ip: 'any', to_ip: 'any', direction: 'in', state: 'present', position: 2, comment: 'Vous pouvez remplacer le commentaire par défaut'}
}

Exécution

Exécutez le playbook :

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

La tâche ufw elle-même est 'community.general.ufw'

Exemple

État avant :

guy@ansible:~$ sudo ufw status numbered
Statut : actif

     À                           Action      De
     --                         ------      ----
[ 1] 7424/tcp                   ALLOW IN    Partout                   # Géré par Ansible - serviceConfus
[ 2] 7429/tcp                   ALLOW IN    Partout                   (log) # Géré par Ansible - rienD'Important

Configuration

ufw_rules:
  # restrictions sur le trafic entrant
  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'
  
  # restrictions sur le trafic sortant
  denyNtpOutgoing:
    port: 123
    proto: 'udp'
    rule: 'deny'
    direction: 'out'

  # supprimer ces règles :
  confusedService:
    port: 7424
    proto: 'tcp'
    state: 'absent'
  nothingImportant:
    port: 7429
    proto: 'tcp'
    log: true
    present: false

Résultat :

guy@ansible:~$ sudo ufw status numbered
Statut : actif

     À                           Action      De
     --                         ------      ----
[ 1] 22/tcp                     LIMIT IN    Partout                   (log) # Géré par Ansible - SecShöl
[ 2] 8482/tcp                   ALLOW IN    Partout                   # Géré par Ansible - RandomWebServer
[ 3] 54038:54085/udp            ALLOW IN    192.168.194.0/28           (log) # Géré par Ansible - SecureLink
[ 4] 10.10.20.254/esp           ALLOW IN    10.10.10.1/esp             # Géré par Ansible - ipsecESP
[ 5] 10.10.20.254 500,4500/udp  ALLOW IN    10.10.10.1                 # Géré par Ansible - ipsecIKE
[ 6] 123/udp                    DENY OUT    Partout                   (out) # Géré par Ansible - denyNtpOutgoing
À propos du projet

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

Installer
ansible-galaxy install ansibleguy.linux_ufw
Licence
gpl-3.0
Téléchargements
2.5k
Propriétaire
[email protected] | GPG: https://badges.ansibleguy.net/public.gpg