fix: tests intégration matrix — procps-ng, varnish h2, hitch ALPN, pgrep→ps

- Ajout de procps-ng dans les 4 Dockerfiles runtime (ps/pgrep disponibles)
- Remplacement de pgrep par ps -C dans tous les run-tests.sh
- Correction entrypoint nginx-varnish : pgrep nginx → cat nginx.pid (exit 127)
- Activation HTTP/2 dans Varnish : ajout de -p feature=+http2 dans les
  entrypoints nginx-varnish et hitch-varnish
- Restauration ALPN h2,http/1.1 dans hitch.conf (varnish supporte maintenant h2)
- Correction healthcheck hitch-varnish : curl sans --http1.1 (h2 fonctionnel)
- Correction requêtes phase_verify : http_logs_raw → http_logs, colonnes correctes
- Correction writer clickhouse.go : noms JSON alignés avec la MV (ip_meta_*, tls_sni…)
- Fix toStartOfSecond(DateTime) → toStartOfSecond(toDateTime64(col, 3))
- Retrait du SKIP el8/nginx-varnish (varnish s'installe bien sur AlmaLinux 8)

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
This commit is contained in:
toto
2026-04-12 01:29:01 +02:00
parent 3b047b680a
commit dc6ffd6474
25 changed files with 431 additions and 345 deletions

View File

@ -10,10 +10,25 @@
# Le hook TC ingress capture TCP SYN + TLS ClientHello sur eth0.
# =============================================================================
# ── Stage 1 : build ja4ebpf ──────────────────────────────────────────────────
FROM golang:1.24-bookworm AS go-builder
# ARG global : doit être déclaré avant tous les FROM
ARG BASE_IMAGE=rockylinux:9
RUN apt-get update && apt-get install -y clang llvm libbpf-dev && rm -rf /var/lib/apt/lists/*
# ── Stage 1 : build ja4ebpf (Rocky Linux, même toolchain que la prod) ─────────
FROM rockylinux:9 AS go-builder
# libbpf-devel est dans le dépôt CRB (CodeReady Builder) de Rocky Linux 9
RUN dnf install -y epel-release dnf-plugins-core && \
dnf config-manager --enable crb && \
dnf install -y \
golang \
clang \
llvm \
libbpf-devel \
kernel-headers \
bpftool \
make \
&& \
dnf clean all
WORKDIR /build
COPY go.work go.work.sum* ./
@ -30,11 +45,10 @@ RUN GOWORK=off go generate ./internal/loader/ && \
go build -ldflags="-s -w" -o /out/ja4ebpf ./cmd/ja4ebpf/
# ── Stage 2 : runtime Apache HTTPD + ja4ebpf ─────────────────────────────────
ARG BASE_IMAGE=rockylinux:9
FROM ${BASE_IMAGE}
RUN dnf install -y epel-release 2>/dev/null; \
dnf install -y httpd mod_ssl mod_http2 openssl curl && \
dnf install -y --allowerasing procps-ng httpd mod_ssl mod_http2 openssl curl && \
dnf clean all
COPY --from=go-builder /out/ja4ebpf /usr/local/bin/ja4ebpf

View File

@ -13,13 +13,16 @@ fi
# Créer les répertoires de run nécessaires
mkdir -p /run/httpd /var/log/httpd
# Démarrer ja4ebpf en arrière-plan
# Démarrer ja4ebpf en arrière-plan (optionnel : ne bloque pas le démarrage)
/usr/local/bin/ja4ebpf -config /etc/ja4ebpf/config.yml &
JA4_PID=$!
echo "[entrypoint] ja4ebpf démarré (PID $JA4_PID)"
# Attendre que ja4ebpf charge ses programmes eBPF
sleep 2
# Laisser 3s pour détecter un échec immédiat (ex: verifier eBPF)
sleep 3
if ! kill -0 "$JA4_PID" 2>/dev/null; then
echo "[entrypoint] ⚠ ja4ebpf s'est arrêté immédiatement — mode dégradé (Apache seul)"
fi
# Démarrer Apache HTTPD en foreground
echo "[entrypoint] Démarrage d'Apache HTTPD..."

View File

@ -1,22 +1,16 @@
# Configuration ja4ebpf — stack Apache
# Fichier monté dans /etc/ja4ebpf/config.yml
interface: eth0
# Cibles uprobe : httpd lie OpenSSL via libssl.so.
# Sur RHEL/Rocky, le binaire est /usr/sbin/httpd.
targets:
- binary: /usr/sbin/httpd
- binary: /usr/lib64/httpd/modules/mod_ssl.so
ssl_lib_path: "/usr/lib64/libssl.so.3"
clickhouse:
addr: "${JA4EBPF_CH_ADDR:-clickhouse:9000}"
database: ja4_logs
table: http_logs_raw
batch_size: 200
flush_interval_ms: 500
dsn: "clickhouse://default:@clickhouse:9000/ja4_logs"
batch_size: 100
flush_secs: 1
session:
correlation:
timeout_ms: 500
slowloris_timeout_s: 10
gc_interval_ms: 100
slowloris_ms: 10000
log:
level: "info"
format: "json"