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

@ -8,9 +8,20 @@
service:
type: LoadBalancer
loadBalancerIP: 192.168.10.200 # VIP MetalLB — NE PAS changer
# Préserve l'IP client réelle jusqu'à Traefik (sinon kube-proxy SNAT en Cluster →
# Traefik voit l'IP d'un nœud). Requis pour le rate-limit par IP (middleware
# ratelimit) et le X-Forwarded-For propagé aux apps (ban Guacamole par IP).
# MetalLB L2 : la VIP n'est annoncée que depuis un nœud portant un pod Traefik prêt.
spec:
externalTrafficPolicy: Local
ingressRoute:
dashboard:
enabled: true
# Autorise les IngressRoutes (auth/ai/monitoring/argocd) à référencer les middlewares
# mutualisés du namespace infra (ratelimit, security-headers). Défaut Traefik v3 = false.
providers:
kubernetesCRD:
allowCrossNamespace: true
logs:
general:
level: INFO