- Порт 10050 (агент Timeweb) открыт только опросчикам хостера из Server= его конфига, а не всему интернету. - playbook-ufw.yml добавлен в playbook-all-setup.yml перед docker: раньше он запускался только руками и после переезда на Timeweb не был прогнан вовсе — на сервере ufw до сих пор с ENABLED=no и пустым набором правил. - В шапке плейбука зафиксировано, что ufw не закрывает порты, опубликованные докером: они идут мимо цепочки INPUT.
79 lines
2.3 KiB
YAML
79 lines
2.3 KiB
YAML
---
|
|
# ufw фильтрует только цепочку INPUT, то есть хостовые сервисы (sshd,
|
|
# zabbix-агент). Порты, опубликованные докером (80, 443, 2222), идут через
|
|
# PREROUTING/FORWARD мимо ufw — закрыть их можно только правкой `ports:` в
|
|
# docker-compose соответствующего приложения.
|
|
- name: "Configure UFW firewall"
|
|
hosts: all
|
|
|
|
vars:
|
|
# Опросчики Zabbix у Timeweb: только им нужен доступ к агенту на хосте.
|
|
# Список — из Server= в /etc/zabbix/zabbix_agentd.conf.
|
|
zabbix_poller_ips:
|
|
- "92.53.116.12"
|
|
- "92.53.116.111"
|
|
- "92.53.116.119"
|
|
|
|
tasks:
|
|
- name: "Ensure UFW is installed"
|
|
ansible.builtin.apt:
|
|
name: ufw
|
|
state: present
|
|
update_cache: true
|
|
|
|
- name: "Set default incoming policy to deny"
|
|
community.general.ufw:
|
|
direction: incoming
|
|
policy: deny
|
|
|
|
- name: "Set default outgoing policy to allow"
|
|
community.general.ufw:
|
|
direction: outgoing
|
|
policy: allow
|
|
|
|
- name: "Allow SSH on port 22"
|
|
community.general.ufw:
|
|
rule: allow
|
|
port: "22"
|
|
proto: tcp
|
|
|
|
- name: "Allow Gitea SSH on port 2222"
|
|
community.general.ufw:
|
|
rule: allow
|
|
port: "2222"
|
|
proto: tcp
|
|
|
|
- name: "Allow HTTP on port 80/tcp"
|
|
community.general.ufw:
|
|
rule: allow
|
|
port: "80"
|
|
proto: tcp
|
|
|
|
- name: "Allow HTTPS on port 443/tcp"
|
|
community.general.ufw:
|
|
rule: allow
|
|
port: "443"
|
|
proto: tcp
|
|
|
|
- name: "Allow HTTPS QUIC on port 443/udp"
|
|
community.general.ufw:
|
|
rule: allow
|
|
port: "443"
|
|
proto: udp
|
|
|
|
# Агент хостера слушает 0.0.0.0:10050 и сам проверяет адрес источника,
|
|
# но держать порт открытым для всего интернета незачем.
|
|
- name: "Allow Zabbix agent on port 10050 from Timeweb pollers"
|
|
community.general.ufw:
|
|
rule: allow
|
|
src: "{{ item }}"
|
|
port: "10050"
|
|
proto: tcp
|
|
comment: "Timeweb zabbix poller"
|
|
loop: "{{ zabbix_poller_ips }}"
|
|
|
|
- name: "Enable UFW"
|
|
community.general.ufw:
|
|
state: enabled
|
|
logging: true
|