linux_ufw

УСТАРЕВШИЙ

Использование UFW как промежуточного ПО в автоматизации не имеет смысла.

Это создает ненужную сложность для изменений с единственным правилом!

На мой взгляд, это не инструмент, предназначенный для автоматизации.

Я бы скорее рекомендовал использовать NFTables: ansibleguy.infra_nftables

Роль Ansible - Uncomplicated Firewall (UFW)

Роль Ansible для развертывания/настройки программного фаервола 'UFW' на сервере с операционной системой на базе Debian.

Купите мне кофе!

Проверено:

  • Debian 11

Установка

# последняя версия
ansible-galaxy role install git+https://github.com/ansibleguy/linux_ufw

# из галактики
ansible-galaxy install ansibleguy.linux_ufw

# или в пользовательский путь для ролей
ansible-galaxy install ansibleguy.linux_ufw --roles-path ./roles

# установка зависимостей
ansible-galaxy install -r requirements.yml

Функциональность

Эта роль Ansible выполнит:

  • Установку пакетов

    • UFW
  • Настройку

    • Правила с использованием одного из двух режимов

      • Состояния (по умолчанию)
        • сохраняет существующие правила и добавляет/удаляет правила с помощью состояния правила
      • Без состояния
        • сбрасывает состояние и правила ufw каждый раз
        • после этого применяются новые правила
    • Проверка, что правило ssh установлено

Информация

Использование

Хотите простую веб-интерфейс для Ansible? Ознакомьтесь с моим Ansible WebUI

Конфигурация

Просто определите словарь 'ufw_rules' по мере необходимости:

ufw_rules:
  ruleShortName:
    rule: 'allow'  # по умолчанию, если пусто
    port: 80
    proto: 'tcp'
    log: 'no'  # по умолчанию, если пусто
    from_ip: 'any'  # по умолчанию, если пусто
    to_ip: 'any'  # по умолчанию, если пусто
    direction: 'in'  # по умолчанию, если пусто
    present: true  # по умолчанию, если пусто => будет использовано для проверки состояния (псевдоним = состояние: present)
    position: 2  # вы можете определить позицию правила в наборе правил (псевдоним = вставка)
    comment: 'Вы можете переопределить комментарий по умолчанию'

или компактным способом:

ufw_rules: {
    ruleShortName: {rule: 'allow', port: 80, proto: 'tcp', log: 'no', from_ip: 'any', to_ip: 'any', direction: 'in', state: 'present', position: 2, comment: 'Вы можете переопределить комментарий по умолчанию'}
}

Выполнение

Запустите playbook:

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

Задача ufw - это 'community.general.ufw'

Пример

Состояние до:

guy@ansible:~$ sudo ufw status numbered
Статус: активен

     Кому                        Действие      Откуда
     --                         ------      ----
[ 1] 7424/tcp                   ALLOW IN    Anywhere                   # Управляемый Ansible - confusedService
[ 2] 7429/tcp                   ALLOW IN    Anywhere                   (log) # Управляемый Ansible - nothingImportant

Конфигурация

ufw_rules:
  # ограничения входящего трафика
  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'

  # ограничения исходящего трафика
  denyNtpOutgoing:
    port: 123
    proto: 'udp'
    rule: 'deny'
    direction: 'out'

  # удалить эти правила:
  confusedService:
    port: 7424
    proto: 'tcp'
    state: 'absent'
  nothingImportant:
    port: 7429
    proto: 'tcp'
    log: true
    present: false

Результат:

guy@ansible:~$ sudo ufw status numbered
Статус: активен

     Кому                        Действие      Откуда
     --                         ------      ----
[ 1] 22/tcp                     LIMIT IN    Anywhere                   (log) # Управляемый Ansible - SecShöl
[ 2] 8482/tcp                   ALLOW IN    Anywhere                   # Управляемый Ansible - RandomWebServer
[ 3] 54038:54085/udp            ALLOW IN    192.168.194.0/28           (log) # Управляемый Ansible - SecureLink
[ 4] 10.10.20.254/esp           ALLOW IN    10.10.10.1/esp             # Управляемый Ansible - ipsecESP
[ 5] 10.10.20.254 500,4500/udp  ALLOW IN    10.10.10.1                 # Управляемый Ansible - ipsecIKE
[ 6] 123/udp                    DENY OUT    Anywhere                   (out) # Управляемый Ansible - denyNtpOutgoing
О проекте

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

Установить
ansible-galaxy install ansibleguy/linux_ufw
Лицензия
gpl-3.0
Загрузки
2102
Владелец
[email protected] | GPG: https://badges.ansibleguy.net/public.gpg