
Propox est un proxy HTTP/HTTPS haute performance, sécurisé et observable, écrit en Rust. Il est conçu pour gérer un trafic à haut débit tout en défendant activement contre les clients abusifs grâce à des mécanismes de sécurité avancés.
Propox ne se contente pas de faire transiter le trafic ; il protège votre backend :
sqlmap, nikto, curl, python.UNION SELECT, OR 1=1, <script> dans les URL..env, .git, /admin.Les seuils de performance sont configurables dans src/proxy.rs :
const RATE_LIMIT_ReqPerSec: usize = 100;
const MAX_ERRORS_BEFORE_BAN: usize = 10;
Inclut une interface utilisateur terminal professionnelle (construite avec Ratatui) affichant :
Exécutez le serveur proxy depuis la racine du projet. Il écoute sur 127.0.0.1:8100.
# Mode standard (avec sécurité et TUI)
cargo run --release
# Afficher tous les journaux de trafic
cargo run --release -- --full
# Afficher uniquement les journaux d'erreurs
cargo run --release -- --errors
# 🏎️ Mode benchmark (désactive la sécurité pour tester les performances brutes)
cargo run --release -- --benchmark
# 👻 Mode démon (arrière-plan)
# - Pas de TUI, utilisation minimale des ressources.
# - Journalisation vers Syslog (/var/log/syslog).
# - Repli automatique sur 'propox.log' si syslog est absent (courant sous WSL/Docker).
cargo run --release -- --daemon
Un outil de test de charge puissant est inclus, capable de simuler des attaques distribuées.
cd propox-client
# Test de charge standard (100 000 requêtes, 400 de concurrence)
cargo run --release -- nb=100000 cc=400 rq=ok ip=127.0.0.1
# ⚔️ Simuler une attaque (test fractionné)
# Terminal 1 : « mauvais acteurs » (90 % d'erreurs, 50 IP) -> SERONT BLOQUÉS/TARPITTÉS
cargo run --release -- ip=127.0.0.10 pool=50 ratio=0.9 nb=5000
# Terminal 2 : « bon utilisateur » (100 % de succès) -> NE DEVRAIT PAS ÊTRE AFFECTÉ
cargo run --release -- ip=127.0.0.200 pool=1 ratio=0.0 nb=5000
nb=N : Nombre de requêtes à envoyer (total).cc=N : Niveau de concurrence (threads simultanés).ip=X.X.X.X : IP source de départ (simulée via liaison locale).pool=N : Taille du pool d'IP (simule N clients distincts).ratio=0.X : Taux d'erreurs (0.0 = 100 % OK, 1.0 = 100 % d'erreurs).rq=ok|nok : Préréglage rapide pour les succès ou les 404.src/main.rs (TUI et boucle d'événements) + src/proxy.rs (logique de trafic).Arc<Stats> partagée utilisant des Atomics et des DashMaps pour la sécurité des threads.mpsc pour ne pas bloquer le plan de données du proxy.handle_client. Si bloquée, la requête entre dans le tarpit tokio::sleep.Construit avec ❤️ en Rust.