firewall

Ansible Роль: Файрвол (iptables)

CI

Устанавливает файрвол на основе iptables для Linux. Поддерживает как IPv4 (iptables), так и IPv6 (ip6tables).

Этот файрвол ориентирован на простоту, а не на сложность, и открывает только несколько конкретных портов для входящего трафика (настраивается через переменные Ansible). Если у вас есть базовые знания о iptables и/или файрволах в общем, эта роль будет хорошим началом для создания безопасного системного файрвола.

После выполнения роли на сервере будет доступна служба инициализации firewall. Вы можете использовать команду service firewall [start|stop|restart|status] для управления файрволом.

Требования

Нет.

Переменные Роли

Доступные переменные перечислены ниже вместе с значениями по умолчанию (см. defaults/main.yml):

firewall_state: started
firewall_enabled_at_boot: true

Управляет состоянием службы файрвола; должна ли она быть запущена (firewall_state) и/или включена при загрузке системы (firewall_enabled_at_boot).

firewall_flush_rules_and_chains: true

Указывает, нужно ли очищать все правила и цепочки каждый раз, когда файрвол перезапускается. Установите это значение в false, если другие процессы управляют iptables (например, Docker).

firewall_template: firewall.bash.j2

Шаблон, используемый для генерации правил файрвола.

firewall_allowed_tcp_ports:
  - "22"
  - "80"
  ...
firewall_allowed_udp_ports: []

Список TCP или UDP портов (соответственно), которые нужно открыть для входящего трафика.

firewall_forwarded_tcp_ports:
  - { src: "22", dest: "2222" }
  - { src: "80", dest: "8080" }
firewall_forwarded_udp_ports: []

Перенаправляем порт src на порт dest, либо TCP, либо UDP (соответственно).

firewall_additional_rules: []
firewall_ip6_additional_rules: []

Любые дополнительные (настраиваемые) правила, которые необходимо добавить в файрвол (в том же формате, в котором вы бы их добавили через командную строку, например iptables [правило]/ip6tables [правило]). Вот несколько примеров, как это можно использовать:

# Разрешить доступ только с IP 167.89.89.18 к порту 4949 (Munin).
firewall_additional_rules:
  - "iptables -A INPUT -p tcp --dport 4949 -s 167.89.89.18 -j ACCEPT"

# Разрешить доступ только с IP 214.192.48.21 к порту 3306 (MySQL).
firewall_additional_rules:
  - "iptables -A INPUT -p tcp --dport 3306 -s 214.192.48.21 -j ACCEPT"

Смотрите Iptables Essentials: Common Firewall Rules and Commands для получения дополнительных примеров.

firewall_log_dropped_packets: true

Указывает, нужно ли записывать сброшенные пакеты в syslog (сообщения будут начинаться с "Сброшено файрволом: ").

firewall_disable_firewalld: false
firewall_disable_ufw: false

Установите значение в true, чтобы отключить firewalld (установленный по умолчанию на RHEL/CentOS) или ufw (установленный по умолчанию на Ubuntu), соответственно.

firewall_enable_ipv6: true

Установите значение в false, чтобы отключить настройку ip6tables (например, если в вашем GRUB_CMDLINE_LINUX содержится ipv6.disable=1).

Зависимости

Нет.

Пример Playbook

- hosts: server
  vars_files:
    - vars/main.yml
  roles:
    - { role: geerlingguy.firewall }

Внутри vars/main.yml:

firewall_allowed_tcp_ports:
  - "22"
  - "25"
  - "80"

Лицензия

MIT / BSD

Информация об авторе

Эта роль была создана в 2014 году Джеффом Гирлингом, автором Ansible for DevOps.

О проекте

Simple iptables firewall for most Unix-like systems.

Установить
ansible-galaxy install geerlingguy/ansible-role-firewall
Лицензия
mit
Загрузки
1182899
Владелец
Father, author, developer, maker. Sometimes called "an inflammatory enigma". #stl #drupal #ansible #k8s #raspberrypi #crohns