Varnish Hardened : cache HTTP FROM scratch

Varnish Cache 7.7.3 compile from source et empaquete dans une image FROM scratch tier Platine. 8e image hardened du homelab.

Role

Varnish est le cache HTTP qui accelere les reponses WordPress. Il se place entre Traefik (ingress K3s) et le pod WordPress, et sert les pages statiques directement depuis la memoire.

Image

Propriete Valeur
Image jbsky/varnish-hardened:7.7.3
Taille ~18 MB
Base FROM scratch
UID 6081:65534
Ports 8080 (HTTP), 8443
Healthcheck HTTP GET /__health
PID 1 tini-static

Architecture multi-stage

flowchart TB
    subgraph s1["Stage builder"]
        varnish["Compile Varnish 7.7.3"]
        tcc["Compile TCC<br/>compilateur VCL runtime"]
    end
    subgraph s2["Stage gobuilder"]
        init["Go init binary<br/>healthcheck HTTP"]
    end
    subgraph s3["Stage prep"]
        libs["Runtime libs"]
        user["UID 6081"]
    end
    subgraph s4["FROM scratch"]
        final["varnishd + varnishncsa<br/>+ tini + init"]
    end
    s1 --> s3 --> s4
    s2 --> s4

Particularite : TCC (Tiny C Compiler)

Varnish compile le VCL (Varnish Configuration Language) en C puis en shared object a chaud. Il a besoin d un compilateur C au runtime. Dans une image FROM scratch, gcc n est pas disponible.

Solution : embarquer TCC (Tiny C Compiler), un compilateur C minimaliste (~200 KB) compile from source depuis la branche mob. TCC suffit pour compiler les VCL generes par Varnish.

Go init binary

3 modes comme les autres images hardened :

Mode Comportement
--healthcheck HTTP GET sur /__health (port 8080)
--setup-dirs Cree /var/lib/varnish avec UID 6081
default Exec varnishd avec les args passes

Le healthcheck HTTP verifie que Varnish repond sur le endpoint sante. Contrairement a un TCP connect, ca prouve que le VCL est charge et que Varnish traite les requetes.

StatefulSet K3s

Varnish tourne en StatefulSet (pas Deployment) pour garantir un nom de pod stable et un stockage persistant du workspace VCL.

Le pod contient 3 containers :

  • varnish : le cache HTTP (image hardened)
  • varnishncsa : logger access log (meme image, commande differente)
  • vcl-reload : sidecar busybox qui surveille les changements VCL

Compiler hardening

Memes flags que les 7 autres images :

  • Full RELRO, PIE, SSP, FORTIFY_SOURCE
  • Stack clash protection
  • Binaires strippes
  • Non-executable stack

Liens

Articles connexes


Commentaires

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur la façon dont les données de vos commentaires sont traitées.