firewall
Ansible Роль: Файрвол (iptables)
Устанавливает файрвол на основе 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