ansible/MY/nft_config.yaml

97 lines
2.7 KiB
YAML
Raw Normal View History

2026-05-22 06:43:27 +04:00
---
- name: Настройка nftables с белым списком портов и VIP адресами
hosts: hip
become: yes
gather_facts: yes
vars:
# VIP адреса (полный доступ)
vip_addresses:
- "192.168.1.100"
- "10.10.10.50"
- "172.16.0.10"
# Белый список TCP портов
white_list_tcp_ports:
- 35130 # SSH
- 80 # HTTP
- 443 # HTTPS
- 5432 # PostgreSQL
- 8080 # Jenkins/Proxy
- 8443 # Alternative HTTPS
# Белый список UDP портов
white_list_udp_ports:
- 53 # DNS
- 123 # NTP
- 1194 # OpenVPN
# Дополнительные настройки
enable_ip_forwarding: true
nftables_log_prefix_input: "[nftables-input] Dropped: "
nftables_log_prefix_forward: "[nftables-forward] Blocked non-whitelist port: "
tasks:
- name: Установка nftables
apt:
name: nftables
state: present
update_cache: yes
- name: Создание директории для шаблонов (если не существует)
file:
path: /etc/nftables
state: directory
mode: '0755'
- name: Копирование конфигурации nftables из шаблона
template:
src: templates/nft/nftables.conf.j2
dest: /etc/nftables.conf
mode: '0644'
backup: yes
notify: restart nftables
- name: Включение IP forwarding (если нужно)
sysctl:
name: "{{ item }}"
value: '1'
sysctl_set: yes
state: present
reload: yes
loop:
- net.ipv4.ip_forward
- net.ipv6.conf.all.forwarding
when: enable_ip_forwarding
- name: Убеждаемся что nftables запущен и включен
systemd:
name: nftables
state: started
enabled: yes
- name: Проверка синтаксиса конфигурации
command: nft -c -f /etc/nftables.conf
register: nft_check
changed_when: false
- name: Вывод результата проверки
debug:
msg: "✅ Конфигурация nftables валидна"
when: nft_check.rc == 0
- name: Применение правил (если не были применены при старте)
command: nft -f /etc/nftables.conf
when: nft_check.rc == 0
notify: restart nftables
handlers:
- name: restart nftables
systemd:
name: nftables
state: restarted
- name: validate nftables
command: nft -c -f /etc/nftables.conf
listen: "restart nftables"