Funk-lab/ansible/roles/gateway
ALI YESILKAYA fe0aa89ffa
feat(security): durcissement edge funklab.online (vraie IP client + rate-limit + TLS/headers) (#95)
- Traefik externalTrafficPolicy: Local → IP client réelle (fin du SNAT kube-proxy)
- middleware ratelimit par IP (100/min, burst 200) sur les 6 routes publiques
- middleware security-headers (HSTS, nosniff, X-Frame SAMEORIGIN, Referrer-Policy)
- TLSOption globale : plancher TLS 1.2 + ciphers modernes
- Guacamole REMOTE_IP_VALVE → ban anti-bruteforce par IP (fin du piège n°5)
- nftables : fermeture des ports Internet legacy 9080/9081 (HTTP clair redondant)
- allowCrossNamespace pour mutualiser les middlewares depuis infra
- docs : section Durcissement (public-domain.md) + CAA OVH + pièges à jour

Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-07 22:58:24 +02:00
..
handlers feat(postfix): relay SMTP Gmail + suppression règles Conan nftables 2026-05-17 16:46:42 +02:00
tasks feat: initial commit — Ansible roles storage-01/gpu-01 opérationnels 2026-05-12 17:17:03 +02:00
templates feat(security): durcissement edge funklab.online (vraie IP client + rate-limit + TLS/headers) (#95) 2026-07-07 22:58:24 +02:00
README.md docs(ansible): README par rôle (19) + gaps IaC découverts à l'audit 2026-06-10 15:21:24 +02:00

gateway

Fait de storage-01 le routeur/firewall du LAN cluster : nftables + NAT + IP forwarding. Remplace firewalld (stoppé et désactivé).

Ce que fait le rôle

  • Désactive firewalld, installe nftables
  • Active net.ipv4.ip_forward
  • Déploie /etc/nftables.conf depuis templates/nftables.conf.j2 (policy drop en input/forward)

Ports ouverts (template nftables.conf.j2)

Port Source Service
22 LAN maison + cluster SSH
53 udp/tcp, 67 udp LAN cluster dnsmasq (DNS + DHCP)
111, 2049 LAN cluster NFS
5432, 6333/6334, 9000/9001 LAN cluster PostgreSQL, Qdrant, MinIO
9100, 9093 cluster + pods 10.42/16 node_exporter, alertmanager-webhook
8080 maison + cluster + pods Hermes gateway
9119 hermes_dashboard_allowed_ip uniquement Dashboard Hermes
4000 maison + cluster + pods LiteLLM
25 cluster + pods Postfix relay
9095 cluster + pods hermes-auto-improve trigger

NAT : masquerade du LAN cluster vers le WAN.

Variables

Pas de defaults — utilise lan_interface, wan_interface (host_vars) et hermes_dashboard_allowed_ip (defaults du rôle hermes_agent).

Caveat

Tout nouveau service réseau doit ajouter son port ici (modifier le template puis --tags gateway). C'est la cause de plusieurs incidents passés (voir admin/incidents.md 2026-05-13, port monitoring bloqué).