
Proxy HTTP/HTTPS ad alte prestazioni in Rust con difesa attiva: limitazione del tasso, accesso basato sulla reputazione, WAF (anti-bot, anti-iniezione, protezione del percorso), tarpit e osservabilità TUI in tempo reale.
Propox è un proxy HTTP/HTTPS ad alte prestazioni, sicuro e osservabile scritto in Rust. È progettato per gestire traffico ad alta velocità difendendo attivamente da client abusivi tramite meccanismi di sicurezza avanzati.
Propox non si limita a passare il traffico; protegge il tuo backend:
sqlmap, nikto, curl, python.UNION SELECT, OR 1=1, <script> negli URL..env, .git, /admin.Le soglie di prestazione sono configurabili in src/proxy.rs:
const RATE_LIMIT_ReqPerSec: usize = 100;
const MAX_ERRORS_BEFORE_BAN: usize = 10;
Include una Interfaccia Utente a Terminale professionale (realizzata con Ratatui) che mostra:
Esegui il server proxy dalla root del progetto. Ascolta su 127.0.0.1:8100.
# Standard Mode (With Security & TUI)
cargo run --release
# View Full Traffic Logs
cargo run --release -- --full
# View Only Error Logs
cargo run --release -- --errors
# 🏎️ Benchmark Mode (Disables Security for Raw Performance Testing)
cargo run --release -- --benchmark
# 👻 Daemon Mode (Background)
# - No TUI, minimal resource usage.
# - Logs to Syslog (/var/log/syslog).
# - Auto-fallback to 'propox.log' if syslog is missing (common in WSL/Docker).
cargo run --release -- --daemon
È incluso un potente strumento di test di carico in grado di simulare attacchi distribuiti.
cd propox-client
# Standard Load Test (100k requests, 400 concurrency)
cargo run --release -- nb=100000 cc=400 rq=ok ip=127.0.0.1
# ⚔️ Simulate Attack (Split-Test)
# Terminal 1: "Bad Actors" (90% Errors, 50 IPs) -> WILL BE BLOCKED/TARPITTED
cargo run --release -- ip=127.0.0.10 pool=50 ratio=0.9 nb=5000
# Terminal 2: "Good User" (100% Success) -> SHOULD BE UNAFFECTED
cargo run --release -- ip=127.0.0.200 pool=1 ratio=0.0 nb=5000
nb=N: Numero di richieste da inviare (totale).cc=N: Livello di concorrenza (thread simultanei).ip=X.X.X.X: IP di partenza (simulato tramite bind locale).pool=N: Dimensione del pool di IP (simula N client distinti).ratio=0.X: Rapporto errori (0.0 = 100% OK, 1.0 = 100% Errori).rq=ok|nok: Preset rapido per Successo o 404.src/main.rs (TUI e Event Loop) + src/proxy.rs (Logica del Traffico).Arc<Stats> condivisa che utilizza Atomics e DashMap per la sicurezza dei thread.mpsc per evitare di bloccare il data plane del proxy.handle_client. Se bloccato, la richiesta entra nel Tarpit tokio::sleep.Realizzato con ❤️ in Rust.