Correctifs pipeline L7 (uprobe SSL_read) :
- uprobe_ssl.c : ssl_set_fd ne retourne plus tôt quand fd_conn_map est
vide (accept4 non disponible en Docker). Sauvegarde ssl_ptr→{fd,0,0}
pour permettre le fallback /proc côté Go.
- main.go : consumeSSLEvents reécrit avec routeur magic-bytes complet :
* HTTP/2 preface → extraction SETTINGS + conversion correlation.HTTP2Settings
* HTTP/1.x requête → method, path, query, headers, header_order_sig
* HTTP/1.x réponse → status_code
* Fallback /proc/<tgid>/fd/<fd> quand src_ip=0 (accept4 absent)
- writer/clickhouse.go : export header_order_signature ajouté
Nouveaux packages :
- internal/parser/http1.go : parseur HTTP/1.x (IsHTTP1Request,
ParseHTTP1Request, IsHTTP1Response, ParseHTTP1Response)
- internal/parser/http1_test.go : 11 tests unitaires (28 total passent)
- internal/procutil/proc_lookup.go : résolution fd→IP via /proc avec cache
TTL 5s (FDCache). Supporte /proc/PID/net/tcp et tcp6, IPv4-mappé IPv6.
Infrastructure tests VM (tests/vm/) :
- Vagrantfile : VM Rocky Linux 9 KVM, 4 CPU / 4 GB RAM
- provision.sh : installation toolchain eBPF + Go + Docker + nginx
- run-tests-vm.sh : suite de test complète dans la VM (L3/L4+TLS+L7)
- README.md : guide d'installation et d'utilisation
- Makefile : cibles vm-up, vm-down, vm-ssh, test-vm-nginx, test-vm-all,
vm-rebuild-ja4ebpf
Corrections stack Docker :
- Dockerfiles nginx/apache/nginx-varnish/hitch-varnish : suppression des
références à shared/go/ja4common/ (répertoire supprimé)
- clickhouse-init.sh : restauré depuis git, seed anubis_ua_rules obsolète
supprimé (table REGEXP_TREE supprimée du schéma)
- traffic-gen : ajout HTTP/1.0 (http.client) et HTTP/2 (httpx)
- verify_db.py : script de vérification 35 checks (L3/L4/TLS/L7/corrélation)
- run-stack-tests.sh : phase 6 verify_db ajoutée
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
67 lines
3.0 KiB
Ruby
67 lines
3.0 KiB
Ruby
# -*- mode: ruby -*-
|
|
# vi: set ft=ruby :
|
|
# =============================================================================
|
|
# Vagrantfile — VM de test ja4ebpf sur Rocky Linux 9
|
|
#
|
|
# Fournit un environnement kernel complet pour les tests eBPF :
|
|
# - tracefs / debugfs montés
|
|
# - perf_kprobe PMU disponible
|
|
# - uprobes fonctionnels avec accept4 kprobe/tracepoint
|
|
#
|
|
# Prérequis (host Ubuntu) :
|
|
# sudo apt-get install -y vagrant libvirt-daemon-system libvirt-clients \
|
|
# qemu-kvm ruby-libvirt
|
|
# vagrant plugin install vagrant-libvirt
|
|
# sudo usermod -aG libvirt,kvm $USER # puis se reconnecter
|
|
#
|
|
# Utilisation :
|
|
# vagrant up # créer + provisionner la VM (première fois ~5 min)
|
|
# vagrant ssh # connexion SSH
|
|
# make test-vm-nginx # lancer les tests depuis le host
|
|
# vagrant destroy -f # détruire la VM
|
|
# =============================================================================
|
|
|
|
Vagrant.configure("2") do |config|
|
|
|
|
# ── Box Rocky Linux 9 ──────────────────────────────────────────────────────
|
|
config.vm.box = "generic/rocky9"
|
|
|
|
# ── Réseau : IP privée pour accès depuis le host ───────────────────────────
|
|
config.vm.network "private_network", ip: "192.168.56.10"
|
|
|
|
# ── Ressources VM ─────────────────────────────────────────────────────────
|
|
config.vm.provider :libvirt do |v|
|
|
v.cpus = 4
|
|
v.memory = 4096
|
|
v.nested = false # pas besoin de virtualisation imbriquée
|
|
# Pour VirtualBox (fallback)
|
|
end
|
|
|
|
config.vm.provider :virtualbox do |v|
|
|
v.cpus = 4
|
|
v.memory = 4096
|
|
v.customize ["modifyvm", :id, "--nicpromisc2", "allow-all"]
|
|
end
|
|
|
|
# ── Montage du projet ─────────────────────────────────────────────────────
|
|
# Le répertoire racine du projet est monté dans /ja4-platform
|
|
config.vm.synced_folder "../..", "/ja4-platform",
|
|
type: "rsync",
|
|
rsync__exclude: [".git/", "old/", "*.rpm", "services/*/target/"]
|
|
|
|
# ── Provisioning ─────────────────────────────────────────────────────────
|
|
config.vm.provision "shell", path: "provision.sh"
|
|
|
|
# ── Message post-démarrage ────────────────────────────────────────────────
|
|
config.vm.post_up_message = <<~MSG
|
|
VM ja4ebpf prête !
|
|
|
|
Depuis le répertoire tests/vm/ :
|
|
vagrant ssh # connexion interactive
|
|
make -C ../.. test-vm-nginx # lancer le test nginx
|
|
make -C ../.. test-vm-matrix # lancer tous les tests
|
|
|
|
IP de la VM : 192.168.56.10
|
|
MSG
|
|
end
|