mirror of
https://github.com/Alkatrazz24/Funk-lab.git
synced 2026-07-10 09:24:42 +02:00
- 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>
42 lines
1.8 KiB
YAML
42 lines
1.8 KiB
YAML
# Middlewares mutualisés pour les routes publiques funklab.online.
|
|
# Traefik est HORS ArgoCD → appliquer à la main (comme redirect.yaml) :
|
|
# kubectl apply -f k8s/infra/traefik/middlewares.yaml
|
|
# Référencés depuis les IngressRoutes des apps via { name: <m>, namespace: infra }
|
|
# (nécessite providers.kubernetesCRD.allowCrossNamespace: true dans values.yaml).
|
|
---
|
|
# Rate-limit par IP client réelle (dépend de externalTrafficPolicy: Local sur le
|
|
# service Traefik). Bucket à jetons : ~100 req/min soutenu, pointe (1er chargement
|
|
# d'assets) jusqu'à 200. Anti-scan / anti-bruteforce volumétrique en bord ; la
|
|
# protection fine du login reste côté Authentik/Guacamole. Ajustable si 429 gênants.
|
|
apiVersion: traefik.io/v1alpha1
|
|
kind: Middleware
|
|
metadata:
|
|
name: ratelimit
|
|
namespace: infra
|
|
spec:
|
|
rateLimit:
|
|
average: 100
|
|
period: 1m
|
|
burst: 200
|
|
# sourceCriterion par défaut = IP distante (remoteAddr) = IP client réelle
|
|
# grâce à externalTrafficPolicy: Local. Pas de depth XFF (aucun proxy amont
|
|
# de confiance entre Internet et Traefik : Freebox + DNAT sont en L4).
|
|
---
|
|
# En-têtes de sécurité HTTP pour les apps publiques. Attaché uniquement aux routes
|
|
# funklab.online (pas aux routes internes *.lab.local en HTTP).
|
|
apiVersion: traefik.io/v1alpha1
|
|
kind: Middleware
|
|
metadata:
|
|
name: security-headers
|
|
namespace: infra
|
|
spec:
|
|
headers:
|
|
# HSTS 1 an + sous-domaines (tout *.funklab.online est en HTTPS). Pas de preload
|
|
# (n'engage pas l'apex sur les listes HSTS des navigateurs, réversible).
|
|
stsSeconds: 31536000
|
|
stsIncludeSubdomains: true
|
|
contentTypeNosniff: true
|
|
browserXssFilter: true
|
|
referrerPolicy: strict-origin-when-cross-origin
|
|
# SAMEORIGIN (pas DENY) : Grafana embarque ses propres panels en iframe.
|
|
customFrameOptionsValue: SAMEORIGIN
|