chore: update and add playbook haproxy
This commit is contained in:
@@ -0,0 +1,48 @@
|
||||
---
|
||||
# Les ports 80/443 sont publiés par Docker (docker-compose du conteneur waf), donc
|
||||
# UFW seul ne suffit pas : Docker insère ses propres règles NAT/FORWARD directement
|
||||
# dans iptables et les contourne. On filtre donc dans la chaîne DOCKER-USER, seul
|
||||
# point garanti d'être évalué avant les règles de Docker.
|
||||
#
|
||||
# Résultat : seul le load-balancer (IP VPN) peut atteindre 80/443 sur ces hôtes,
|
||||
# tout le reste d'internet est bloqué. SSH et le reste du trafic ne sont pas touchés.
|
||||
|
||||
- name: Restreindre l'accès HTTP/HTTPS des serveurs applicatifs au load-balancer
|
||||
hosts: prod:replica-prod
|
||||
become: true
|
||||
gather_facts: false
|
||||
|
||||
vars:
|
||||
lb_vpn_ip: "{{ hostvars['load-balancer']['vpn_ip'] }}"
|
||||
|
||||
tasks:
|
||||
- name: Installer iptables-persistent
|
||||
ansible.builtin.apt:
|
||||
name: iptables-persistent
|
||||
state: present
|
||||
update_cache: yes
|
||||
|
||||
- name: Bloquer les connexions 80/443 non issues du load-balancer
|
||||
ansible.builtin.iptables:
|
||||
chain: DOCKER-USER
|
||||
protocol: tcp
|
||||
match: multiport
|
||||
destination_ports: "80,443"
|
||||
jump: DROP
|
||||
action: insert
|
||||
comment: "app-firewall: bloque 80/443 hors load-balancer"
|
||||
|
||||
- name: Autoriser les connexions 80/443 depuis le load-balancer (VPN)
|
||||
ansible.builtin.iptables:
|
||||
chain: DOCKER-USER
|
||||
protocol: tcp
|
||||
source: "{{ lb_vpn_ip }}/32"
|
||||
match: multiport
|
||||
destination_ports: "80,443"
|
||||
jump: RETURN
|
||||
action: insert
|
||||
comment: "app-firewall: autorise 80/443 depuis le load-balancer"
|
||||
|
||||
- name: Sauvegarder les règles iptables (persistance au reboot)
|
||||
ansible.builtin.command: netfilter-persistent save
|
||||
changed_when: false
|
||||
Reference in New Issue
Block a user