ansibleguy.linux_ufw

DEPRECATED

Używanie UFW jako pośrednika w automatyzacji nie ma większego sensu.

Tworzy to niepotrzebną złożoność przy zmianach pojedynczych reguł!

Moim zdaniem to narzędzie nie jest zaprojektowane do automatyzacji.

Zalecałbym raczej używanie NFTables: ansibleguy.infra_nftables

Rola Ansible - Nieskomplikowany Zapora (UFW)

Rola Ansible do wdrażania/konfiguracji oprogramowania zapory 'UFW' na serwerze Linux opartym na Debianie.

Postaw mi kawę

Testowane:

  • Debian 11

Instalacja

# najnowsza wersja
ansible-galaxy role install git+https://github.com/ansibleguy/linux_ufw

# z galaxy
ansible-galaxy install ansibleguy.linux_ufw

# lub do własnego folderu ról
ansible-galaxy install ansibleguy.linux_ufw --roles-path ./roles

# instalacja zależności
ansible-galaxy install -r requirements.yml

Funkcjonalność

Ta rola Ansible będzie:

  • Instalacja pakietów

    • UFW
  • Konfiguracja

    • Reguły przy użyciu jednego z dwóch trybów

      • Sposób stanowy (domyślny)
        • utrzymuje istniejące reguły i dodaje/usuwa reguły przy użyciu stanu reguły
      • Sposób stateless
        • resetuje stan i reguły ufw za każdym razem
        • po tym stosowane są nowe reguły
    • Weryfikacja, czy reguła SSH jest wprowadzona

Informacje

Użycie

Chcesz prosty interfejs Ansible? Sprawdź moje Ansible WebUI

Konfiguracja

Wystarczy zdefiniować słownik 'ufw_rules' według potrzeb:

ufw_rules:
  ruleShortName:
    rule: 'allow'  # domyślnie, jeśli puste
    port: 80
    proto: 'tcp'
    log: 'no'  # domyślnie, jeśli puste
    from_ip: 'any'  # domyślnie, jeśli puste
    to_ip: 'any'  # domyślnie, jeśli puste
    direction: 'in'  # domyślnie, jeśli puste
    present: true  # domyślnie, jeśli puste => będzie używane do sprawdzania stanu reguły (alias = stan: obecny)
    position: 2  # możesz zdefiniować pozycję reguły w zbiorze reguł (alias = wstaw)
    comment: 'Możesz nadpisać domyślny komentarz'

lub w sposób kompaktowy:

ufw_rules: {
    ruleShortName: {rule: 'allow',  port: 80, proto: 'tcp', log: 'no', from_ip: 'any', to_ip: 'any', direction: 'in', state: 'present', position: 2, comment: 'Możesz nadpisać domyślny komentarz'}
}

Wykonanie

Uruchom playbook:

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

Zadanie ufw to 'community.general.ufw'

Przykład

Stan przed:

guy@ansible:~$ sudo ufw status numbered
Status: active

     To                         Akcja      Z
     --                         ------      ----
[ 1] 7424/tcp                   ALLOW IN    Anywhere                   # Zarządzane przez Ansible - confusedService
[ 2] 7429/tcp                   ALLOW IN    Anywhere                   (log) # Zarządzane przez Ansible - nothingImportant

Konfiguracja

ufw_rules:
  # ograniczenia ruchu przychodzącego
  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'
  
  # ograniczenia ruchu wychodzącego
  denyNtpOutgoing:
    port: 123
    proto: 'udp'
    rule: 'deny'
    direction: 'out'

  # usuń te reguły:
  confusedService:
    port: 7424
    proto: 'tcp'
    state: 'absent'
  nothingImportant:
    port: 7429
    proto: 'tcp'
    log: true
    present: false

Wynik:

guy@ansible:~$ sudo ufw status numbered
Status: active

     To                         Akcja      Z
     --                         ------      ----
[ 1] 22/tcp                     LIMIT IN    Anywhere                   (log) # Zarządzane przez Ansible - SecShöl
[ 2] 8482/tcp                   ALLOW IN    Anywhere                   # Zarządzane przez Ansible - RandomWebServer
[ 3] 54038:54085/udp            ALLOW IN    192.168.194.0/28           (log) # Zarządzane przez Ansible - SecureLink
[ 4] 10.10.20.254/esp           ALLOW IN    10.10.10.1/esp             # Zarządzane przez Ansible - ipsecESP
[ 5] 10.10.20.254 500,4500/udp  ALLOW IN    10.10.10.1                 # Zarządzane przez Ansible - ipsecIKE
[ 6] 123/udp                    DENY OUT    Anywhere                   (out) # Zarządzane przez Ansible - denyNtpOutgoing
O projekcie

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

Zainstaluj
ansible-galaxy install ansibleguy.linux_ufw
Licencja
gpl-3.0
Pobrania
2.5k
Właściciel
[email protected] | GPG: https://badges.ansibleguy.net/public.gpg