Fonctions de securite par domaine¶
Chaque fonction est un interrupteur, par domaine, dans la console Overwatch. Le
catalogue vit dans overwatch/src/features.rs : une seule source pour les cases
cochees, les valeurs par defaut et la configuration rendue.
La console parle anglais : les groupes s'y lisent Signature filtering,
Reputation and behavior, Legitimate traffic to keep clear, Protocol et
Cache. Les identifiants (waf_signatures, block_tor...) ne changent pas :
ce sont eux que l'API, les tests et les manifestes manipulent, et les traduire
aurait casse des references pour un gain nul.
block_cve_attackers porte applied: false : aucun flux n'alimente encore la
liste, donc la fonction est enregistree et non appliquee. La console l'affiche
grisee, avec la raison, plutot que de la laisser passer pour active.
Filtrage par signatures¶
| Fonction | Ce qu'elle fait au bord |
|---|---|
waf_signatures |
Moteur de regles OWASP CRS sur la passerelle, mode blocage, paranoia 1 |
sensitive_files |
Refus des fichiers de fuite courants, avant le WAF : autorisation Istio pour HTTPS, politique Cilium pour HTTP en clair |
path_traversal |
Refus des chemins qui remontent hors racine, encodes ou non |
sqli_xss |
Signatures d'injection SQL et de script embarque |
wordpress_scan |
Refus des sondes wp-login, xmlrpc et wp-admin |
Reputation et comportement¶
| Fonction | Ce qu'elle fait au bord |
|---|---|
challenge_pow |
Preuve de travail pour un client sans laissez-passer |
block_cve_attackers |
Adresses deja vues dans des campagnes d'exploitation |
block_tor |
Noeuds de sortie Tor, desactives par defaut |
block_proxies |
Proxies et VPN publics, faux positifs a mesurer |
rate_limit |
Compteur par adresse, difficulté de la preuve augmentee au-dela du seuil |
Trafic legitime a ne pas entraver¶
Les listes sont dans policy/lists/allow/, relevees depuis les sources
publiees par leurs editeurs, jamais recopiees a la main dans le code.
| Fonction | Liste | Source |
|---|---|---|
allow_payment_providers |
payment-providers.txt |
Stripe, PayPal, Adyen |
allow_crawlers |
crawlers-search.txt |
Googlebot, Bingbot |
allow_scm_webhooks |
scm-webhooks.txt |
api.github.com/meta |
Regenerer une liste signifie rejouer le meme releve, pas editer le fichier.
Deux points a ne pas oublier¶
Les plages de robots ne prouvent rien. Google et Microsoft publient leurs
plages, mais une plage d'hebergement se loue : un client qui se declare
Googlebot depuis une adresse Amazon n'est pas Googlebot. La resolution inverse
du nom d'hote reste la verification de reference [unverified].
Un CNI ne voit pas dans TLS. La politique Cilium filtre sur le chemin demande, donc uniquement sur du HTTP en clair : sur le port 443, le flux est chiffre jusqu'au pod. L'application des motifs passe donc par l'autorisation Istio, evaluee apres la terminaison TLS. La politique Cilium couvre le port 80 et le trafic interne.
Ce que le cache ne fait pas¶
Le cache HTTP est désormais une fonction pilotée, mais il ne filtre rien : il ne bloque pas, il ne note pas, il ne défie personne. Il est posé derrière le WAF et derrière le décideur, jamais devant, sinon il servirait une réponse que le bord venait de refuser.
Sa politique (durée de vie par préfixe, purge, mémoire) vit dans la ressource
VarnishCache, pas dans la console : voir Cache. Le site, lui, décide
seulement s'il passe par le cache.
Signature de la reponse¶
Par defaut, Istio laisse server: istio-envoy sur chaque reponse. C'est une
information gratuite pour un attaquant, qui sait quelle pile chercher, et un
aveu de bricolage pour un client. La reponse annonce desormais
server: exoledge engine.
Deux endroits produisent cet en-tete, et il faut traiter les deux :
- Le proxy, qui signe ses propres reponses : erreurs, 404, 503, rejets sur
delai. Un
EnvoyFilterremplace leserver_namedu gestionnaire de connexions HTTP (tofu/edge/server-name.tf, etServerNameFiltercote operateur). - L'origine, qui peut poser le sien (nginx, Apache, un cadre applicatif).
Un
ResponseHeaderModifiersur chaque route du site ecrase la valeur (ServerHeaderFilter), sinon le nom du serveur amont reapparait.
Le filtre de route ne suffit pas pour les reponses du proxy : elles ne traversent aucune route. Le filtre du proxy ne suffit pas pour l'origine : elle ecrit apres. Les deux ensemble, oui.
Il reste x-envoy-upstream-service-time, qui trahit encore la pile. Le retirer
demande un reglage supplementaire du gestionnaire de connexions ; c'est assume
pour l'instant, la valeur servant au diagnostic.