diff --git a/README.md b/README.md index bcfc55a..6dfb073 100644 --- a/README.md +++ b/README.md @@ -235,6 +235,58 @@ done This is the **inception** - each layer executes through unsandbox's remote API, so you can test any implementation using `un` (the canonical C implementation) as the runner. +## Security: Egress Shielding + +Sandbox nodes route HTTP/HTTPS through tinyproxy, but raw TCP (SSH, etc.) goes out the direct egress IP. This matters for operational security - an attacker who can trigger outbound SSH could geolocate pool nodes. + +**Solution: Transparent proxy with redsocks + microsocks.** + +``` +┌─────────────────────────────────────────────────────┐ +│ Sandbox Node │ +│ │ +│ HTTP/HTTPS ──→ tinyproxy ──────→ egress proxy IP │ +│ │ +│ SSH/raw TCP ──→ redsocks ──→ microsocks ──→ same │ +│ ↑ egress proxy IP │ +│ (iptables nat) │ +└─────────────────────────────────────────────────────┘ +``` + +redsocks intercepts ALL outbound TCP and routes through the SOCKS proxy. No per-app configuration needed. + +```bash +# Install +apt install redsocks +git clone https://github.com/rofl0r/microsocks && cd microsocks && make + +# Run microsocks (SOCKS5 proxy) +./microsocks -p 1080 + +# Configure redsocks to use it +cat > /etc/redsocks.conf <