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.
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
- Sposób stanowy (domyślny)
Weryfikacja, czy reguła SSH jest wprowadzona
Informacje
Uwaga: Większość funkcji roli można włączyć lub wyłączyć.
Wszystkie dostępne opcje - zobacz domyślną konfigurację w głównej stronie domyślnych!
Uwaga: ta rola obecnie wspiera tylko systemy oparte na Debianie
Ostrzeżenie: Nie wszystkie ustawienia/zmienne, które podajesz, będą sprawdzane pod kątem ważności. Zła konfiguracja może spowodować awarię roli!
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
ansible-galaxy install ansibleguy.linux_ufw