shorewall
Dubzland: Shorewall
Устанавливает и настраивает конструктор брандмауэра Shorewall.
Требования
Версия Ansible 2.0 или выше. Требуется пакет Python netaddr
.
Переменные роли
Доступные переменные перечислены ниже вместе с их значениями по умолчанию (см. defaults/main.yml
для получения дополнительной информации):
dubzland_shorewall_conf
dubzland_shorewall_conf:
startup_enabled: "Да"
verbosity: 1
log_level: '"info"'
log_martians: "Да"
log_verbosity: 2
log_zone: Оба
logfile: /var/log/shorewall
logformat: '"%s(%d) %s "'
Опции, которые должны быть установлены в /etc/shorewall/shorewall.conf
. Имена опций могут быть указаны как в верхнем, так и в нижнем регистре (они будут записаны в файле заглавными буквами). Дополнительную информацию см. на странице man для shorewall.conf.
dubzland_shorewall_params
dubzland_shorewall_params: []
Список пар ключ-значение, которые будут записаны в /etc/shorewall/params
. Для получения дополнительной информации об использовании параметров см. на странице man для params.
dubzland_shorewall_zones
dubzland_shorewall_zones:
- name: fw
type: брандмауэр
- name: net
type: ipv4
- name: lan
type: ipv4
Зоны, которые должны быть объявлены в /etc/shorewall/zones
. Дополнительную информацию см. на странице man для zones.
dubzland_shorewall_interfaces
dubzland_shorewall_interfaces:
- name: eth0
zone: net
options:
- tcpflags
- nosmurfs
- routefilter
- "sourceroute=0"
- name: eth1
zone: lan
options:
- tcpflags
- nosmurfs
- routefilter
Список интерфейсов, для которых должен быть настроен shorewall в /etc/shorewall/interfaces
. Дополнительную информацию см. на странице man для interfaces.
dubzland_shorewall_hosts
dubzland_shorewall_hosts: []
Указывает на хосты, доступные маршрутизации, но не напрямую доступные для брандмауэра.
dubzland_shorewall_policies
dubzland_shorewall_policies:
- source: "$FW"
dest: all
policy: ACCEPT
- source: net
dest: all
policy: REJECT
- source: all
dest: all
policy: REJECT
log_level: info
Политики, используемые Shorewall для определения действия по умолчанию для данного пакета в зависимости от его маршрута. Дополнительную информацию см. на странице man для policies.
dubzland_shorewall_snat
dubzland_shorewall_snat:
- action: MASQUERADE
dest: eth0
Настраивает SNAT/маскировку для iptables. Необходимо, если вы хотите выполнять трансляцию сетевых адресов (NAT) для исходящего трафика. Дополнительную информацию см. на странице man для snat.
dubzland_shorewall_rules
dubzland_shorewall_rules:
- section: NEW
rulesets:
- comment: PINGS
rules:
- action: Ping(ACCEPT)
source: all
dest: all
- comment: Веб-трафик
rules:
- action: Web(ACCEPT)
source: $FW,lan
dest: net
Основная часть этой роли. Настраивает правила, которые Shorewall будет использовать для определения того, как обрабатывать пакеты, проходящие через его контролируемые интерфейсы. Дополнительную информацию см. на странице man для rules.
Зависимости
Нет.
Пример Playbook
Для машины с 2 сетевыми интерфейсами (eth0
— на интернете, eth1
— в локальной сети):
- hosts: firewall
become: yes
roles:
- role: dubzland-shorewall
vars:
dubzland_shorewall_zones:
- name: fw
type: брандмауэр
- name: net
type: ipv4
- name: lan
type: ipv4
dubzland_shorewall_interfaces:
- name: eth0
zone: net
options:
- tcpflags
- nosmurfs
- routefilter
- "sourceroute=0"
- name: eth1
zone: lan
options:
- tcpflags
- nosmurfs
- routefilter
dubzland_shorewall_policies:
- source: "$FW"
dest: all
policy: ACCEPT
- source: net
dest: all
policy: REJECT
- source: all
dest: all
policy: REJECT
log_level: info
dubzland_shorewall_snat:
- action: MASQUERADE
dest: eth0
dubzland_shorewall_rules:
- section: NEW
rulesets:
- comment: Пинги
rules:
- action: Ping(ACCEPT)
source: all
dest: all
- comment: Веб-серфинг
rules:
- action: Web(ACCEPT)
source: lan
dest: net
- action: ACCEPT
source: lan
dest: net
proto: udp
dest_ports:
- 80
- 443
Это позволит всем пинговать машину брандмауэра, а клиентам в локальной сети — пинговать хосты в интернете. Все клиенты из локальной сети также смогут серфить в интернете.
Лицензия
MIT
Автор
ansible-galaxy install dubzland/ansible-role-shorewall