- 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>
72 lines
2.7 KiB
Docker
72 lines
2.7 KiB
Docker
# =============================================================================
|
|
# Platform apache — Multi-distro (Rocky Linux 9 par défaut)
|
|
#
|
|
# Architecture :
|
|
# traffic-gen ─HTTPS→ Apache HTTPD (TLS, HTTP/2) → ClickHouse
|
|
# ↑
|
|
# ja4ebpf (uprobe httpd/libssl + hook TC ingress)
|
|
#
|
|
# ja4ebpf attache ses uprobes sur /usr/sbin/httpd qui lie OpenSSL.
|
|
# Le hook TC ingress capture TCP SYN + TLS ClientHello sur eth0.
|
|
# =============================================================================
|
|
|
|
# ARG global : doit être déclaré avant tous les FROM
|
|
ARG BASE_IMAGE=rockylinux:9
|
|
|
|
# ── 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* ./
|
|
COPY shared/go/ja4common/go.mod shared/go/ja4common/go.sum* ./shared/go/ja4common/
|
|
COPY services/ja4ebpf/go.mod services/ja4ebpf/go.sum* ./services/ja4ebpf/
|
|
RUN cd services/ja4ebpf && go mod download 2>/dev/null; true
|
|
|
|
COPY shared/go/ja4common/ ./shared/go/ja4common/
|
|
COPY services/ja4ebpf/ ./services/ja4ebpf/
|
|
|
|
WORKDIR /build/services/ja4ebpf
|
|
RUN GOWORK=off go generate ./internal/loader/ && \
|
|
GOWORK=off CGO_ENABLED=0 GOOS=linux GOARCH=amd64 \
|
|
go build -ldflags="-s -w" -o /out/ja4ebpf ./cmd/ja4ebpf/
|
|
|
|
# ── Stage 2 : runtime Apache HTTPD + ja4ebpf ─────────────────────────────────
|
|
FROM ${BASE_IMAGE}
|
|
|
|
RUN dnf install -y epel-release 2>/dev/null; \
|
|
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
|
|
|
|
# Certificat TLS auto-signé pour Apache
|
|
RUN openssl req -x509 -nodes -days 365 \
|
|
-subj "/CN=platform.test" \
|
|
-newkey rsa:2048 \
|
|
-keyout /etc/pki/tls/private/apache.key \
|
|
-out /etc/pki/tls/certs/apache.crt && \
|
|
mkdir -p /var/www/html /var/log/httpd && \
|
|
echo '{"status":"ok","stack":"apache"}' > /var/www/html/health
|
|
|
|
COPY tests/integration/apache/platform/httpd-ssl.conf /etc/httpd/conf.d/ssl.conf
|
|
COPY tests/integration/apache/platform/ja4ebpf.yml /etc/ja4ebpf/config.yml
|
|
COPY tests/integration/apache/platform/entrypoint.sh /entrypoint.sh
|
|
RUN chmod +x /entrypoint.sh
|
|
|
|
EXPOSE 80 443
|
|
CMD ["/entrypoint.sh"]
|