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>
This commit is contained in:
ALI YESILKAYA 2026-07-07 22:58:24 +02:00 committed by GitHub
parent a13b5a70cd
commit fe0aa89ffa
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
13 changed files with 178 additions and 19 deletions

View file

@ -77,14 +77,12 @@ table inet filter {
ip daddr 192.168.10.20 tcp dport { 7777, 8888 } ct state new,established,related accept
ip daddr 192.168.10.20 udp dport 7777 ct state new,established,related accept
# Hub public Authentik (:9081) + portail Guacamole (:9080) — trafic Internet
# DNATé vers les VIPs MetalLB dédiées. Rate-limit sur les connexions neuves :
# anti-bruteforce/scan réseau, en plus des protections applicatives. Le LAN
# domestique n'est pas concerné (règle 192.168.1.0/24 plus haut, hairpin
# Freebox inclus).
ip daddr 192.168.10.201 tcp dport 9000 ct state new limit rate 30/minute burst 15 packets accept
ip daddr 192.168.10.202 tcp dport 8080 ct state new limit rate 30/minute burst 15 packets accept
ip daddr { 192.168.10.201, 192.168.10.202 } ct state established,related accept
# NOTE : les anciens chemins Internet :9081 (Authentik direct) / :9080 (Guacamole
# direct), en HTTP clair vers les VIPs .201/.202, ont été FERMÉS au durcissement
# (2026-07-07). Tout passe désormais par funklab.online en HTTPS (ci-dessous).
# Les VIPs restent joignables en interne (LAN) ; seul l'accès Internet est retiré.
# Penser à supprimer aussi les redirections Freebox 9080/9081 (elles pointent ici
# dans le vide). Rétablir l'accès : re-DNAT ci-dessous + accept forward.
# Domaine public funklab.online — Internet DNATé (80/443) → Traefik (.200).
# Routage par sous-domaine + TLS Let's Encrypt côté Traefik. Rate-limit idem.
@ -118,10 +116,8 @@ table ip nat {
iif {{ wan_interface }} tcp dport { 7777, 8888 } dnat to 192.168.10.20
iif {{ wan_interface }} udp dport 7777 dnat to 192.168.10.20:7777
# Hub Authentik + portail Guacamole publics (redirections Freebox → s01)
# kaya.freeboxos.fr:9081 → Authentik (VIP .201) ; :9080 → Guacamole (VIP .202)
iif {{ wan_interface }} tcp dport 9081 dnat to 192.168.10.201:9000
iif {{ wan_interface }} tcp dport 9080 dnat to 192.168.10.202:8080
# (Anciens DNAT Internet :9081→Authentik / :9080→Guacamole retirés au
# durcissement 2026-07-07 — tout passe par funklab.online HTTPS ci-dessous.)
# funklab.online — Freebox 80/443 → Traefik (routage par sous-domaine + TLS)
iif {{ wan_interface }} tcp dport { 80, 443 } dnat to 192.168.10.200