
Propox es un proxy HTTP/HTTPS de alto rendimiento, seguro y observable escrito en Rust. Está diseñado para manejar tráfico de alto rendimiento mientras defiende activamente contra clientes abusivos mediante mecanismos de seguridad avanzados.
Propox no solo transmite tráfico; protege tu backend:
sqlmap, nikto, curl, python.UNION SELECT, OR 1=1, <script> en URLs..env, .git, /admin.Los umbrales de rendimiento son configurables en src/proxy.rs:
const RATE_LIMIT_ReqPerSec: usize = 100;
const MAX_ERRORS_BEFORE_BAN: usize = 10;
Incluye una Interfaz de Usuario de Terminal profesional (construida con Ratatui) que muestra:
Ejecuta el servidor proxy desde la raíz del proyecto. Escucha en 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
Se incluye una potente herramienta de prueba de carga capaz de simular ataques distribuidos.
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: Número de peticiones a enviar (total).cc=N: Nivel de concurrencia (hilos simultáneos).ip=X.X.X.X: IP de origen inicial (simulada mediante bind local).pool=N: Tamaño del pool de IPs (simula N clientes distintos).ratio=0.X: Tasa de error (0.0 = 100% OK, 1.0 = 100% Errores).rq=ok|nok: Preajuste rápido para Éxitos o 404s.src/main.rs (TUI y Bucle de Eventos) + src/proxy.rs (Lógica de Tráfico).Arc<Stats> usando Atomics y DashMaps para seguridad entre hilos.mpsc para evitar bloquear el plano de datos del proxy.handle_client. Si está bloqueado, la petición entra en el Tarpit tokio::sleep.Hecho con ❤️ en Rust.