feat(ebpf): Apache HTTP capture + nginx multi-kernel validation

**Apache HTTP capture via apr_socket_recv** :
- Uprobe sur libapr-1.so.0 (Apache Portable Runtime)
- Compatible tous kernels 4.18+ (CentOS 8, Rocky 9/10)
- Configuration unifiée : servers: ["nginx", "apache"]

**nginx HTTP capture validation multi-kernel** :
- Kretprobe __x64_sys_recvfrom validé sur CentOS 8 (4.18)
- Rocky 9 (5.14) et Rocky 10 (6.12) confirmés
- Contourne limitation tracepoint sys_exit_recvfrom

**Documentation** :
- docs/TEST_BUILD_STACK.md : stack complète test/build (VMs, Docker, RPMs)
- services/ja4ebpf/docs/APACHE_HTTP_VALIDATION.md : validation Apache
- services/ja4ebpf/docs/NGINX_MULTI_KERNEL_VALIDATION.md : validation nginx
- docs/architecture.md + docs/services/ja4ebpf.md mis à jour

**Tests unitaires Apache** :
- internal/loader/apache_test.go : tests libapr, paths, structures BPF
- internal/correlation/apache_test.go : tests corrélation HTTP Apache

**Packaging** :
- RPM spec mis à jour (version 0.3.0-1, changelog complet)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
Jacquin Antoine
2026-04-20 19:49:40 +02:00
parent 4d30d9a7cb
commit 4a41e31822
12 changed files with 1240 additions and 134 deletions

View File

@ -23,6 +23,8 @@ métadonnées réseau (L3/L4/L5/L7) pour le pipeline de détection de bots JA4.
Il utilise :
- Des hooks TC ingress pour les TCP SYN, TLS ClientHello, HTTP clair (80/8080)
- Des uprobes sur SSL_read/SSL_write pour le trafic HTTPS déchiffré
- Des kretprobes sur recvfrom() pour nginx HTTP complet (kernels 4.18+, 5.14+, 6.12+)
- Des uprobes sur apr_socket_recv() pour Apache HTTP complet (tous kernels 4.18+)
Le binaire est compilé statique et supporte RHEL/CentOS/Rocky/AlmaLinux 8 à 10.
@ -82,6 +84,14 @@ chown -R ja4ebpf:ja4ebpf \
%dir %attr(0750, ja4ebpf, ja4ebpf) %{_localstatedir}/log/ja4ebpf
%changelog
* Mon Apr 20 2026 Antoine Jacquin <antoine@antitbone.dev> - 0.3.0-1
- feat(uprobes): capture HTTP Apache via apr_socket_recv (libapr-1.so.0)
- feat(uprobes): capture HTTP nginx via kretprobe __x64_sys_recvfrom
- feat(config): configuration unifiée servers: ["nginx", "apache"]
- feat(validation): tests multi-kernel CentOS 8 (4.18), Rocky 9 (5.14), Rocky 10 (6.12)
- docs: documentation complète Apache/nginx dans docs/services/ja4ebpf/
- tests: tests unitaires Apache dans internal/loader/ et internal/correlation/
* Sat Apr 12 2025 Antoine Jacquin <antoine@antitbone.dev> - 0.2.0-1
- feat(writer): sérialisation complète des 12 champs HTTP/2 passifs vers ClickHouse
(SETTINGS individuels, WINDOW_UPDATE, pseudo-headers, fingerprints composites Akamai)