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:
@ -72,6 +72,11 @@ INSERT (Native TCP :9000)
|
||||
|
||||
3. **ja4ebpf TC ingress HTTP plain** (port 80/8080) capture les payloads TCP en clair directement depuis le hook TC ingress pour les connexions non chiffrées. Limité aux segments de données TCP (pas de reconstitution de flux multi-paquets).
|
||||
|
||||
4. **ja4ebpf uprobes HTTP (nginx/Apache)** capturent le trafic HTTP complet depuis les serveurs web :
|
||||
- **nginx** : kretprobe sur `__x64_sys_recvfrom` pour capturer les appels `recvfrom()` (validé sur kernels 4.18, 5.14, 6.12)
|
||||
- **Apache httpd** : uprobe/uretprobe sur `apr_socket_recv` dans `libapr-1.so.0` (Apache Portable Runtime) (validé sur kernels 4.18, 5.14, 6.12)
|
||||
- Ces méthodes permettent une capture complète des requêtes/réponses HTTP sans les limitations du TC ingress.
|
||||
|
||||
### Phase 2 — Corrélation en mémoire
|
||||
|
||||
4. **ja4ebpf 256-shard manager** (espace utilisateur Go) consomme les cinq PerfEventArray eBPF via des goroutines dédiées. Les événements L3/L4/L5 et L7 sont corrélés par `src_ip:src_port` dans une table de sessions shardée (256 shards, mutex par shard). Timeout orphelin : 500 ms (émission avec `correlated=0`). Détection Slowloris : émission partielle après 10 s. GC des sessions fantômes : toutes les 100 ms. Le dispatcher magic bytes route vers le parser HTTP/1.1 ou HTTP/2. Pour HTTP/2, la première frame SETTINGS + WINDOW_UPDATE est décodée pour le fingerprinting passif. L’objet corrélé est inséré dans **`ja4_logs.http_logs_raw`** par batch.
|
||||
|
||||
Reference in New Issue
Block a user